|Dotfuscator > Understanding Protection with Dotfuscator > Checks > Shelf Life Check > Shelf Life Tokens|
A Shelf Life Token is an encrypted set of data containing application and expiration information that is injected into the application binary at obfuscation time, or it can be stored as a string outside of the application binary so that it can be updated to extend the expiration date.
Using a Private Key File and password is an option that provides additional defense in depth of a Shelf Life token by signing the token data with the user provided private key. Only the public key information necessary to provide signature validation is stored in the Shelf Life Token.
There are two methods of providing the Shelf Life Token to the Shelf Life runtime code that is injected into the application. The default method is for Dotfuscator to directly embed the encrypted data into the binary during the obfuscation process. An alternative method is for the application developer to provide for their own persistence of the Shelf Life Token data and to provide a string representation of that Shelf Life Token data to the injected runtime code via custom methods, properties, etc. as set in the ShelfLifeTokenSource properties. The advantage of persisting the Shelf Life Token data outside of the binary allows for easier extensions of expiration dates without distributing a newly instrumented binary, but it does so at the cost of making the Shelf Life Token Data more visible to the end user.
A Shelf Life Activation Key is a data file that is required to inject Shelf Life functionality into Dotfuscator and into the appropriate locations within an application that you want to instrument.
A Shelf Life Activation Key is issued by PreEmptive and provided to Dotfuscator by the user during shelf life configuration. To obtain a Shelf Life Activation Key, contact PreEmptive Solutions. PreEmptive will issue you a data file containing the Shelf Life Activation Key that is to be stored on your Build Machine.
For all uses of InsertShelfLifeAttribute, the following property must be set to the path on the build server where the Shelf Life Activation Key is stored:
To embed the Token, specifiy the following InsertShelfLifeAttribute properties:
When Dotfuscator runs, it will generate a Shelf Life Token based on the given parameters and embed it into the application.
To store the Token externally, first it must be generated by Dotfuscator's GUI; see the Generate New Shelf Life Token section for details.
After generating and storing the Token in your application, you can provide it to the Shelf Life Check at runtime via the following Source properties:
This Source operates similarly to a Sink, though instead of the Check providing data to it, the Source provides data to the Check. There are four ways to use the Source.
The Check will read a readable string field.
The Check will read a readable string property.
The Check will call a method with the signature string().
The Check will read a stringargument of the attributed method.