a software vendor freely distributes software to users and issues smart cards to be used with the software . the smart card includes at least one software module missing from the software package and a list of allowed functionality dictating the capabilities of the software package . a user authenticates , using , e . g ., public key cryptography , the smart card , which authorizes the use of the software . once authorized , the module missing from the software is reunited with the rest of the software package . the software can be used limited to the allowed functionality included with the card . if more or different functionality is needed , the user can purchase another card authorizing such additional functionality , and then transfer the new functionality to the old smart card .