The key concept of Protection! is to verify the presence of a valid license required by the product as well as to prevent license tampering. Protection! Licensing Toolkit is a set of Java classes that need to be embedded into the custom application in order to allow only authorized use of the application. Authorized use of a custom application is based on the supplied license. Protection! Licensing Toolkit gives application developers full control over the license checking and validation mechanism. Protection! classes provide all the necessary functionality to allow license discovery, license reading and validation, as well as several other utility functions such as the ability to implement and further check Integrity for desired classes/resources in order to avoid malicious application patching.
License File represents a way to transfer the appropriate rights to the end-user for use of a particular application. Protection! License File is implemented as an encoded file that contains information about the product, version, license type, etc. Protection! License File can either be bundled with the application and loaded as a resource, or be located anywhere in the file system. The license File, generated by Protection! Control Center, is a strongly encrypted file ensuring that no one can break its protection by the simple re-generation of the license file. To meet this goal, a non-symmetric cipher algorithm is used where keys used to encrypt and decrypt the license are different. This approach makes it impossible to restore the private key by having knowledge of the public key and vice versa.
Protection! Control Center offers a central location for Product Management, License Generation, License Maintenance and generation of the corresponding code Snippets as ready-to-use Java implementation files, License deployment and Protection! Web Services application configuration. Protection! Control Center allows the developer to manage an unlimited number of products and product feature sets.
Protection! Control Center saves the entire Product's data in a single file with a *.products extension called Product Storage. The user can create as many product storage files as necessary.
Secret Storage provides a way to persistently and secretly store various and important information about the application. Secret Storage can also be used to store various actions performed by the end-user. The following information is currently stored in Secret Storage:
Protection!'s default implementation provides File and/or Preferences based secret storage and Protection! is able to generate the appropriate code in the Code Snippet to employ these secret storages. If a Preferences based secret storage is chosen then developers must specify an appropriate System or User preferences node where the Secret Storage information should be saved (e.g. com.mycompany.pref) where "." denotes a new child node (e.g. "com.mycompany.org" would be translated to the following structure "com/mycompany/org") Note: See Java Preferences specification for additional information on proper node naming conventions. Because Protection! is a framework - application developers are free to provide their own implementation of Secret Storage. Protection! supports working with several Secret Storage files at a time in order to provide greater redundancy to protect the data.