Class LicenseManager
- All Implemented Interfaces:
Remote,LicenseCreator,LicenseVerifier
LicenseNotary.
This class is thread safe.
- Version:
- $Id$
- Author:
- Christian Schlichtherle
-
Field Summary
Fields -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedConstructs a License Manager.LicenseManager(LicenseParam param) Constructs a License Manager. -
Method Summary
Modifier and TypeMethodDescriptionfinal byte[]create(LicenseContent content) Initializes and validates the license content, creates a new signed license certificate for it and compresses, encrypts and returns it as a license key.protected byte[]create(LicenseContent content, LicenseNotary notary) Initializes and validates the license content, creates a new signed license certificate for it and compresses, encrypts and returns it as a license key.protected GenericCertificateReturns the license certificate cached from the last installation/verification of a license key ornullif there wasn't an installation/verification or a timeout has occured.Returns a suitable file filter for the subject of this license manager.protected byte[]Returns the current license key.protected LicenseNotaryReturns a license notary configured to use the keystore parameters contained in the current license parameters -nullis never returned.Returns the license configuration parameters.protected PrivacyGuardReturns a privacy guard configured to use the cipher parameters contained in the current license parameters -nullis never returned.protected voidinitialize(LicenseContent content) Initializes the given licensecontentwith some reasonable defaults unless the respective properties have already been set.protected LicenseContentinstall(byte[] key, LicenseNotary notary) Decrypts, decompresses, decodes and verifies the license key inkey, validates its license content and installs it as the current license key.final LicenseContentLoads, decrypts, decompresses, decodes and verifies the license key inkeyFile, validates its license content and installs it as the current license key.protected LicenseContentinstall(File keyFile, LicenseNotary notary) Loads, decrypts, decompresses, decodes and verifies the license key inkeyFile, validates its license content and installs it as the current license key.protected static byte[]loadLicenseKey(File keyFile) Loads and returns the first megabyte of content fromkeyFileas license key in a newly created byte array.protected static Datemidnight()Returns midnight local time today.protected voidsetCertificate(GenericCertificate certificate) Sets the given license certificate as installed or verified.protected voidsetLicenseKey(byte[] key) Installs the given license key as the current license key.voidsetLicenseParam(LicenseParam param) Sets the license configuration parameters.final voidstore(LicenseContent content, File keyFile) Initializes and validates the license content, creates a new signed license certificate for it and compresses, encrypts and stores it to the given file as a license key.protected voidstore(LicenseContent content, LicenseNotary notary, File keyFile) Initializes and validates the license content, creates a new signed license certificate for it and compresses, encrypts and stores it to the given file as a license key.protected static voidstoreLicenseKey(byte[] key, File keyFile) Stores the given license key to the given file.voidUninstalls the current license key.protected voidvalidate(LicenseContent content) Validates the license content.final LicenseContentverify()Decrypts, decompresses, decodes and verifies the current license key, validates its license content and returns it.final LicenseContentverify(byte[] key) Decrypts, decompresses, decodes and verifies the given license key, validates its license content and returns it.protected LicenseContentverify(byte[] key, LicenseNotary notary) Decrypts, decompresses, decodes and verifies the given license key, validates its license content and returns it.protected LicenseContentverify(LicenseNotary notary) Decrypts, decompresses, decodes and verifies the current license key, validates its license content and returns it.
-
Field Details
-
LICENSE_SUFFIX
The suffix for files which hold license certificates. => ".lic" - must be lowercase! -
CN
=> "CN="
-
-
Constructor Details
-
LicenseManager
protected LicenseManager()Constructs a License Manager.Warning: The manager created by this constructor is not valid and cannot be used unless
setLicenseParam(LicenseParam)is called! -
LicenseManager
Constructs a License Manager.- Parameters:
param- the license configuration parameters - may not benull.- Throws:
NullPointerException- If the given parameter object does not obey the contract of its interface due to anullpointer.IllegalPasswordException- If any password in the parameter object does not comply to the current policy.
-
-
Method Details
-
midnight
Returns midnight local time today. -
getLicenseParam
Returns the license configuration parameters. -
setLicenseParam
Sets the license configuration parameters. Calling this method resets the manager as if it had been newly created. Some plausibility checks are applied to the given parameter object to ensure that it adheres to the contract of the parameter interfaces.- Parameters:
param- the license configuration parameters - may not benull.- Throws:
NullPointerException- If the given parameter object does not obey the contract of its interface due to anullpointer.IllegalPasswordException- If any password in the parameter object does not comply to the current policy.
-
store
Initializes and validates the license content, creates a new signed license certificate for it and compresses, encrypts and stores it to the given file as a license key.As a side effect, the given license
contentis initialized with some reasonable defaults unless the respective properties have already been set.- Parameters:
content- the license content - may not benull.keyFile- the file to save the license key to - may not benull. This should have aLICENSE_SUFFIX.- Throws:
Exception- for various reasons. Note that you should always useThrowable.getLocalizedMessage()to get a (possibly localized) meaningful detail message.- See Also:
-
store
Initializes and validates the license content, creates a new signed license certificate for it and compresses, encrypts and stores it to the given file as a license key.As a side effect, the given license
contentis initialized with some reasonable defaults unless the respective properties have already been set.- Parameters:
content- the license content - may not benull.notary- the license notary used to sign the license key - may not benull.keyFile- the file to save the license key to - may not benull. This should have aLICENSE_SUFFIX.- Throws:
Exception- for various reasons. Note that you should always useThrowable.getLocalizedMessage()to get a (possibly localized) meaningful detail message.- See Also:
-
create
Initializes and validates the license content, creates a new signed license certificate for it and compresses, encrypts and returns it as a license key.As a side effect, the given license
contentis initialized with some reasonable defaults unless the respective properties have already been set.- Specified by:
createin interfaceLicenseCreator- Parameters:
content- the license content - may not benull.- Returns:
- The license key
-
nullis never returned. - Throws:
Exception- for various reasons. Note that you should always useThrowable.getLocalizedMessage()to get a (possibly localized) meaningful detail message.- See Also:
-
create
Initializes and validates the license content, creates a new signed license certificate for it and compresses, encrypts and returns it as a license key.As a side effect, the given license
contentis initialized with some reasonable defaults unless the respective properties have already been set.- Parameters:
content- the license content - may not benull.notary- the license notary used to sign the license key - may not benull.- Returns:
- The license key
-
nullis never returned. - Throws:
Exception- for various reasons. Note that you should always useThrowable.getLocalizedMessage()to get a (possibly localized) meaningful detail message.- See Also:
-
install
Loads, decrypts, decompresses, decodes and verifies the license key inkeyFile, validates its license content and installs it as the current license key.- Parameters:
keyFile- the file to load the license key from - may not benull.- Returns:
- A clone of the verified and validated content of the license key
-
nullis never returned. - Throws:
Exception- for various reasons. Note that you should always useThrowable.getLocalizedMessage()to get a (possibly localized) meaningful detail message.- See Also:
-
install
Loads, decrypts, decompresses, decodes and verifies the license key inkeyFile, validates its license content and installs it as the current license key.- Parameters:
keyFile- The file to load the license key from - may not benull.notary- The license notary used to verify the license key - may not benull.- Returns:
- A clone of the verified and validated content of the license key
-
nullis never returned. - Throws:
Exception- for various reasons. Note that you should always useThrowable.getLocalizedMessage()to get a (possibly localized) meaningful detail message.- See Also:
-
install
Decrypts, decompresses, decodes and verifies the license key inkey, validates its license content and installs it as the current license key.- Parameters:
key- the license key - may not benull.notary- the license notary used to verify the license key - may not benull.- Returns:
- A clone of the verified and validated content of the license key
-
nullis never returned. - Throws:
Exception- for various reasons. Note that you should always useThrowable.getLocalizedMessage()to get a (possibly localized) meaningful detail message.- See Also:
-
verify
Decrypts, decompresses, decodes and verifies the current license key, validates its license content and returns it.- Returns:
- A clone of the verified and validated content of the license key
-
nullis never returned. - Throws:
NoLicenseInstalledException- if no license key is installed.Exception- for any other reason. Note that you should always useThrowable.getLocalizedMessage()to get a (possibly localized) meaningful detail message.- See Also:
-
verify
Decrypts, decompresses, decodes and verifies the current license key, validates its license content and returns it.- Parameters:
notary- the license notary used to verify the current license key - may not benull.- Returns:
- A clone of the verified and validated content of the license key
-
nullis never returned. - Throws:
NoLicenseInstalledException- if no license key is installed.Exception- for any other reason. Note that you should always useThrowable.getLocalizedMessage()to get a (possibly localized) meaningful detail message.- See Also:
-
verify
Decrypts, decompresses, decodes and verifies the given license key, validates its license content and returns it.- Specified by:
verifyin interfaceLicenseVerifier- Parameters:
key- the license key - may not benull.- Returns:
- A clone of the verified and validated content of the license key
-
nullis never returned. - Throws:
Exception- an instance of a subclass of this class for various reasons. Note that you should always useThrowable.getLocalizedMessage()to get a (possibly localized) meaningful detail message.- See Also:
-
verify
Decrypts, decompresses, decodes and verifies the given license key, validates its license content and returns it.- Parameters:
key- the license key - may not benull.notary- the license notary used to verify the license key - may not benull.- Returns:
- A clone of the verified and validated content of the license key
-
nullis never returned. - Throws:
Exception- for various reasons. Note that you should always useThrowable.getLocalizedMessage()to get a (possibly localized) meaningful detail message.- See Also:
-
uninstall
Uninstalls the current license key.- Throws:
Exception- An instance of a subclass of this class for various reasons.
-
initialize
Initializes the given licensecontentwith some reasonable defaults unless the respective properties have already been set.- See Also:
-
validate
Validates the license content. This method is called whenever a license certificate is created, installed or verified.Validation consists of the following plausability checks for the properties of this class:
- 'subject' must match the subject required by the application
via the
LicenseParaminterface. - 'holder', 'issuer' and 'issued' must be provided (i.e. not
null). - If 'notBefore' or 'notAfter' are provided, the current date and time must match their restrictions.
- 'consumerType' must be provided and 'consumerAmount' must be
positive. If a user preference node is provided in the license
parameters, 'consumerType' must also match
"User"(whereby case is ignored) and 'consumerAmount' must equal 1.
If you need more or less rigid restrictions, you should override this method in a subclass.
- Parameters:
content- the license content - may not benull.- Throws:
NullPointerException- ifcontentisnull.LicenseContentException- if any validation test fails. Note that you should always useThrowable.getLocalizedMessage()to get a (possibly localized) meaningful detail message.- See Also:
- 'subject' must match the subject required by the application
via the
-
getCertificate
Returns the license certificate cached from the last installation/verification of a license key ornullif there wasn't an installation/verification or a timeout has occured. -
setCertificate
Sets the given license certificate as installed or verified.- Parameters:
certificate- the license certificate - may benullto clear.
-
getLicenseKey
protected byte[] getLicenseKey()Returns the current license key. -
setLicenseKey
protected void setLicenseKey(byte[] key) Installs the given license key as the current license key. Ifkeyisnull, the current license key gets uninstalled (but the cached license certificate is not cleared). -
storeLicenseKey
Stores the given license key to the given file.- Parameters:
key- the license key - may not benull.keyFile- the file to save the license key to - may not benull. This should have aLICENSE_SUFFIX.- Throws:
IOException
-
loadLicenseKey
Loads and returns the first megabyte of content fromkeyFileas license key in a newly created byte array.- Parameters:
keyFile- the file holding the license key - may not benull.- Throws:
IOException
-
getLicenseNotary
Returns a license notary configured to use the keystore parameters contained in the current license parameters -nullis never returned. -
getPrivacyGuard
Returns a privacy guard configured to use the cipher parameters contained in the current license parameters -nullis never returned. -
getFileFilter
Returns a suitable file filter for the subject of this license manager. On Windows systems, the case of the suffix is ignored when browsing directories.- Returns:
- A valid
FileFilter.
-