The Integrity verification subsystem allows for checking and validation that the designated key classes/resources/files of the product have not been changed. This type of check is done by comparing the generated digest of those classes/resources/files with the original value stored somewhere in the product code, resources or files. The Integrity subsystem significantly increases the time and effort needed to diagnose and locate specific parts of the protection system in order to attempt to break it. The "Integrity" Shortcut on Control Center's Shortcuts Side Bar or the "View | Integrity" menu item provides the way to activate the Integrity Screen.
Protection! provides the ability to check Integrity for the set of so-called Digest Entries. Each Digest Entry represents a class or resource within the application archive or a file. The Integrity screen provides the ability to maintain Integrity Digest Entries list, select an algorithm, and generate an Integrity Code snippet to be embedded in the application. Integrity check provides the ability to employ SHA-1 and MD5 digest and CRC32 algorithms.
A new Digest entry for a product can be created:
A new Integrity Digest Entry action will launch the appropriate "New/Edit Digest Entry" dialog. These dialogs allow the user to navigate to a desired archive (such as .jar, .zip, .war, or .ear archives), classes, or files and select the desired resources to be used in a digest calculation
Existing Digest Entry can be modified by double-clicking, pressing the "Edit" button on toolbar or choosing the "Edit | Edit menu" item.
It is possible to maintain Digest Build Configurations via the "Edit Product | Integrity Check" dialog or via a dedicated "Digest Build Configurations" dialog. This dialog can be shown by selecting the "Build | Configurations" menu item or by selecting the drop-down icon on the "Build" button and choosing the "Configurations" item. The "Digest Build Configurations" dialog shows the list of available configurations and allows maintenance and reordering of them.
The following procedure allows building Digest for a product based on predefined build configuration: