@ParametersAreNonnullByDefault @Nonnull
See: Description
| Class | Description |
|---|---|
| V2JsonLicenseManagementContext |
The root context for the management of Version-2-with-JSON (V2/JSON) format
license keys.
|
Store interface.
License keys pass the following life cycle phases:
... as defined by the
LicenseVendorManager and the
LicenseConsumerManager interfaces.
A Free Trial Period (FTP) is
configurable
with a license consumer manager in order to ease the conversion of prospects
to customers.
License consumer managers can also get
chained
in order to unlock application features based on the purchased license keys.
A license is an instance of the License
class.
This class follows the Java Bean pattern and defines common properties for
the licensing subject, issue date, issuer, holder, consumer type/amount,
validity period and custom data.
These properties get
initialized
and
validated
whenever a license key gets created.
They also get validated whenever a license key gets installed or verified.
A license key gets created from an instance of the License class by
applying the following function composition:
encrypt(compress(encode(sign(encode(validate(initialize(duplicate(license))))))))
When installing or verifying a license key, a duplicate of the original
License object gets derived by applying the following (almost
inverse) function composition (note that there is no initialization and
hence no duplication required):
validate(decode(authenticate(decode(decompress(decrypt(licenseKey))))))
The validation step is skipped when a license key is just viewed.
Encryption is done via JCA with a configurable password based encryption
algorithm.
Authentication is done via JCA with a configurable key store type and
signature algorithm.
Encoding is done with XMLEncoder for simple,
schema-less, yet resilient long term archival.
Applications use the
V2JsonLicenseManagementContext class as
their starting point for configuring a license vendor or consumer manager.
This class can get subclassed to customize special aspects, such as
performing additional license validation steps, providing an authoritative
clock et al.
However, TrueLicense 2 has been designed so that typical applications don't
need to subclass or implement any class or interface of its API.
For security, passwords are represented as an instance of the
ObfuscatedString class.
Other security critical string (algorithms, paths, etc.) are annotatable
with @Obfuscate and
processible with the TrueLicense Maven Plugin for simple, reliable
obfuscation of constant string values in the byte code for license
applications.
Warning: To protect against reverse engineering and modification of your application, it is strictly necessary to generally process all byte code which is comprised in your deployment unit with a tool for byte code obfuscation. TrueLicense does not provide general byte code obfuscation because there exist good quality third party tools, e.g. ProGuard.
Copyright © 2005–2017 Schlichtherle IT Services. All rights reserved.