Protection PLUS 5 SDK license files are simply XML documents that have been encrypted and digitally signed to secure the contents and prevent unauthorized modification. The encrypted license file is still an XML document. Once the license file has been decrypted and verified, you can read the various license fields to determine the state of the application's license. The XML schema, or general structure, of the license file is shown below. This schema differs from the encrypted license file, which is what you would normally see if you opened the license file in a text editor, to the decrypted license file, which is found in the application's memory. Several tables outline the many fields and provide a description of what these fields contain.
The following depicts the contents of an encrypted license file:
The <CipherValue> and <SignatureValue> node's content has been included to illustrate what the data might look like in an actual license file, but the data has been truncated.
The following depicts the contents of a decrypted license file. The links in comments, such as <!-- License Fields -->, are simply placeholders for the various nodes found in the corresponding tables below.
If a LicenseGroup or LicenseValidationOptions setting has not been configured for the license in SOLO Server, the node will not be present in the license file data.
The <Identifiers> node above may contain one or more <SystemIdentifier> child nodes. The name, type and value attributes would contain data based on the specific system identifier algorithm used, the number of identifiers present, and a unique hashed value. The "..." for the values are used to depict that this data is variable.
In SOLO Server, all licenses are created from one Product Option record, and always belong to a customer.
Field | Description | XPath |
---|---|---|
ActivationData | Contains the system identifiers used to identify the system which is authorized to use the license file. | /SoftwareKey/PrivateData/License/ActivationData |
ActivationPassword | A password, usually randomly generated by SOLO Server, which may be used with the corresponding License ID to activate or perform other licensing related functions. | /SoftwareKey/PrivateData/License/ActivationPassword |
CurrentVersion | Corresponds with the "Version" field on the SOLO Server license. | /SoftwareKey/PrivateData/License/CurrentVersion |
EffectiveEndDate | Corresponds with the "Download Until" date on the SOLO Server license, and typically reflects the date in which the license expires (for time-limited licenses). However, it is also possible for your application to use this date for other purposes when the license is not time-limited, such as notifying customers when support/maintenance subscription periods are about to expire. | /SoftwareKey/PrivateData/License/EffectiveEndDate |
EffectiveStartDate | The date in which the license is effective. This is typically the date in which the license was added in SOLO Server. | /SoftwareKey/PrivateData/License/EffectiveStartDate |
ExternalReference1 | An external reference number/string, typically generated by a third-party system or service. | /SoftwareKey/PrivateData/License/ExternalReference1 |
ExternalReference1Source | The name or description of the source of the ExternalReference1 value. | /SoftwareKey/PrivateData/License/ExternalReference1Source |
ExternalReference2 | An external reference number/string, typically generated by a third-party system or service. | /SoftwareKey/PrivateData/License/ExternalReference1 |
ExternalReference2Source | The name or description of the source of the ExternalReference2 value. | /SoftwareKey/PrivateData/License/ExternalReference2Source |
FormatVersion | The format version of the License File. | /SoftwareKey/PrivateData/License/FormatVersion |
InstallationID | When an application is activated (typically using a License ID and password), an Installation ID is created so that Electronic License Management (ELM) may be leveraged on the individual system which was activated. | /SoftwareKey/PrivateData/License/InstallationID |
InstallationName | An optional, human-readable description of an Installation ID (SOLO Server allows a maximum of 50 characters for this field). This is typically specified by the user to help describe which of several systems he or she owns is being activated (a user could enter something like "Home Desktop" or "Work Laptop"). | /SoftwareKey/PrivateData/License/InstallationName |
IsTestLicense | Identifies if the license is a test license signified by a value of 1. Test licenses are deleted from SOLO Server at the beginning of each month. | /SoftwareKey/PrivateData/License/IsTestLicense |
LastUpdated * | Only available when using writable license files, this reflects the last date and time in which the application was run. | /SoftwareKey/PrivateData/License/LastUpdated |
LatestVersion | The latest version of the product or application available (at the time the license file was issued). This corresponds to the "Latest Version" field of the SOLO Server Product. | /SoftwareKey/PrivateData/License/LatestVersion |
LicenseCounter | An arbitrary, numeric value which may be used to track a number or count for a license requirement. This can be used for noting the number of feature or application uses allowed, the number of network seats allowed, etc.. | /SoftwareKey/PrivateData/License/LicenseCounter |
LicenseeEmail | The email address of the licensee, or the person for whom the license has been assigned. | /SoftwareKey/PrivateData/License/LicenseeEmail |
LicenseeName | The name of the licensee, or the person for whom the license has been assigned. | /SoftwareKey/PrivateData/License/LicenseeName |
LicenseCustomData |
Custom string or XML formatted data specific to the license. All strings in the license file use UTF-8 encoding. Unless included in nested XML in this field, any Unicode characters in this field will be formatted with XML escape sequences. |
/SoftwareKey/PrivateData/License/LicenseCustomData |
LicenseID | A unique, numeric identifier for the license issued (typically issued by SOLO Server). | /SoftwareKey/PrivateData/License/LicenseID |
LicenseUpdate | A small, arbitrary string which may be used for sending customized license status updates. | /SoftwareKey/PrivateData/License/LicenseUpdate |
ProductID | A unique, numeric identifier used to identify the Product for which a license was issued. This value is typically generated by SOLO Server. | /SoftwareKey/PrivateData/License/ProductID |
ProdOptionID | A unique, numeric identifier used to identify the Product Option for which a license was issued. This value is typically generated by SOLO Server. | /SoftwareKey/PrivateData/License/ProdOptionID |
QuantityOrdered | The quantity of the product ordered (usually 1). When using the E-Commerce features in SOLO Server, it is possible to configure your Product Option so that ordering more than one quantity generates a single license with extra activations. So for example, if you had a Product Option configured with 2 activations, you can configure the Product Option to create a single license with 6 activations when a customer orders a quantity of 3 (instead of creating 3 separate licenses, each with 2 activations). |
/SoftwareKey/PrivateData/License/QuantityOrdered |
SerialNumber | The serial number assigned to the license, usually defined in SOLO Server. | /SoftwareKey/PrivateData/License/SerialNumber |
SignatureDate | The date in which the license file itself was created and signed by SOLO Server. | /SoftwareKey/PrivateData/License/SignatureDate |
TriggerCode | The Trigger Code number issued by SOLO Server. This is a numeric value between 1 and 50, and is typically used to reflect the type of license being issued (i.e. non-expiring, time-limited, etc...). This value is configured on the Product Option in SOLO Server. | /SoftwareKey/PrivateData/License/TriggerCode |
TriggerCodeFixedValue | The Trigger Code Fixed Value issued by SOLO Server. This is a numeric value up to 14 bits in size (or a maximum value of 16383), which is typically used to conditionally enable application features, or distinguish between different product or application editions (i.e. "Express Edition" and "Enterprise Edition", etc...). This value is configured on the Product Option in SOLO Server. | /SoftwareKey/PrivateData/License/TriggerCodeFixedValue |
UserDefinedDate1 - UserDefinedDate5 | User defined date fields 1 through 5, which may be used for arbitrary dates when needed for additional, customized license data. | /SoftwareKey/PrivateData/License/UserDefinedDateN |
UserDefinedFloat1 - UserDefinedFloat5 | User defined float fields 1 through 5, which may be used for arbitrary decimal values when needed for additional, customized license data. | /SoftwareKey/PrivateData/License/UserDefinedFloatN |
UserDefinedNumber1 - UserDefinedNumber5 | User defined number fields 1 through 5, which may be used for arbitrary integer values when needed for additional, customized license data. | /SoftwareKey/PrivateData/License/UserDefinedNumberN |
UserDefinedString1 -UserDefinedString10 | User defined string fields 1 through 10, which may be used for arbitrary alpha-numeric values when needed for additional, customized license data. | /SoftwareKey/PrivateData/License/UserDefinedStringN |
* - The LastUpdated field is only present in self-signed writable license files.
You or your company is the "Author" of the software or application being licensed.
Field | Description | XPath |
---|---|---|
AuthorID | Numeric value which uniquely identifies your SOLO Server author account. | /SoftwareKey/PrivateData/License/Author/AuthorID |
CompanyName | Your company name, as configured in your SOLO Server author account. | /SoftwareKey/PrivateData/License/Author/CompanyName |
CustomData |
Custom string or XML formatted data shared with all licenses created in your SOLO Server author account. All strings in the license file use UTF-8 encoding. Unless included in nested XML in this field, any Unicode characters in this field will be formatted with XML escape sequences. |
/SoftwareKey/PrivateData/License/Author/CustomData |
SupportEmail | Your company's support email address, which your customers may use to obtain technical support. | /SoftwareKey/PrivateData/License/Author/SupportEmail |
SupportPhone | Your company's support phone number, which your customers may use to obtain technical support. | /SoftwareKey/PrivateData/License/Author/SupportPhone |
SupportSite | Your company's support web site, which your customers may use to obtain technical support and resources. | /SoftwareKey/PrivateData/License/Author/SupportSite |
The Customer represents your customer, for whom one or more licenses have been issued.
Field | Description | XPath |
---|---|---|
Address1 | The customer's street address (line 1). | /SoftwareKey/PrivateData/License/Customer/Address1 |
Address2 | The customer's street address (line 2, optional). | /SoftwareKey/PrivateData/License/Customer/Address2 |
City | The city where the customer is located. | /SoftwareKey/PrivateData/License/Customer/City |
CompanyName | The customer's company name. | /SoftwareKey/PrivateData/License/Customer/CompanyName |
Country | The country where the customer is located. | /SoftwareKey/PrivateData/License/Customer/Country |
CustomerID | The unique SOLO Server Customer ID for this customer. | /SoftwareKey/PrivateData/License/Customer/CustomerID |
The customer's email address. | /SoftwareKey/PrivateData/License/Customer/Email | |
ExcludeFromAll | Whether the customer is excluded from all email marketing. | /SoftwareKey/PrivateData/License/Customer/ExcludeFromAll |
Fax | The customer's fax number. | /SoftwareKey/PrivateData/License/Customer/Fax |
FirstName | The customer's first name. | /SoftwareKey/PrivateData/License/Customer/FirstName |
LastName | The customer's last name. | /SoftwareKey/PrivateData/License/Customer/LastName |
NotifyPartners | Whether the customer will receive email alerts from trusted partners. | /SoftwareKey/PrivateData/License/Customer/NotifyPartners |
NotifyProducts | Whether the customer will receive email alerts for products updates. | /SoftwareKey/PrivateData/License/Customer/NotifyProducts |
Phone | The customer's phone number. | /SoftwareKey/PrivateData/License/Customer/Phone |
PostalCode | The postal code where the customer is located. | /SoftwareKey/PrivateData/License/Customer/PostalCode |
StateProvince | The state or province where the customer is located. | /SoftwareKey/PrivateData/License/Customer/StateProvince |
Unregistered | Whether or not the customer is unregistered. | /SoftwareKey/PrivateData/License/Customer/Unregistered |
In SOLO Server, a distributor represents a company or individual that either resells your products or applications, or an affiliate which refers customers and prospects to your web site. The distributor information can be particularly useful in scenarios when the distributor acts like a reseller, and also provides its customers with technical support.
Field | Description | XPath |
---|---|---|
Address1 | The distributor's street address (line 1). | /SoftwareKey/PrivateData/License/Distributor/Address1 |
Address2 | The distributor's street address (line 2). | /SoftwareKey/PrivateData/License/Distributor/Address2 |
Address3 | The distributor's street address (line 3). | /SoftwareKey/PrivateData/License/Distributor/Address3 |
CompanyName | The distributor's company name. | /SoftwareKey/PrivateData/License/Distributor/CompanyName |
Country | The country where the distributor is located. | /SoftwareKey/PrivateData/License/Distributor/Country |
DistributorID | The distributor's unique ID. | /SoftwareKey/PrivateData/License/Distributor/DistributorID |
The distributor's email address. | /SoftwareKey/PrivateData/License/Distributor/Email | |
Phone | The distributor's phone number. | /SoftwareKey/PrivateData/License/Distributor/DistributorID |
Type | The type of distributor. | /SoftwareKey/PrivateData/License/Distributor/Type |
WebSite | The distributor's web site. | /SoftwareKey/PrivateData/License/Distributor/WebSite |
A License Group allows licenses for a customer to be grouped together by an ID number.
Field | Description | XPath |
---|---|---|
LicenseGroupID |
The ID number of the LicenseGroup. Licenses configured to be grouped together will have the same ID number. |
/SoftwareKey/PrivateData/License/LicenseGroup/LicenseGroupID |
LicenseGroupName | The name of the LicenseGroup. | /SoftwareKey/PrivateData/License/LicenseGroup/LicenseGroupName |
The LicenseValidationOptions contain settings for the frequency to refresh/validate the license withSOLO Server. More information on implementing LicenseValidationOptions is available for PLUSManaged and PLUSNative.
Field | Description | XPath |
---|---|---|
LicenseValidationOptionsID |
The ID number of the LicenseValidationOptions. |
/SoftwareKey/PrivateData/License/LicenseValidationOptions/LicenseValidationOptionsID |
LicenseValidationOptionName | The name of the LicenseValidationOptions. | /SoftwareKey/PrivateData/License/LicenseValidationOptions/LicenseValidationOptionName |
RefreshLicenseAlwaysRequired |
Signifies whether a license refresh is always required when the application starts. |
/SoftwareKey/PrivateData/License/LicenseValidationOptions/RefreshLicenseAlwaysRequired |
RefreshLicenseAttemptFrequency | The frequency of a license refresh attempt. | /SoftwareKey/PrivateData/License/LicenseValidationOptions/RefreshLicenseAttemptFrequency |
RefreshLicenseRequireFrequency |
The frequency a license refresh is required. |
/SoftwareKey/PrivateData/License/LicenseValidationOptions/RefreshLicenseRequireFrequency |
RefreshLicenseRequireWarningPeriod | The number of days before a license refresh is required in which to begin warning the user. | /SoftwareKey/PrivateData/License/LicenseValidationOptions/RefreshLicenseRequireWarningPeriod |
Each product defined typically represents the product or application being licensed (i.e. "XYZ Product"). Products must contain one or more Product Options, as all licenses are created from Product Options.
Field | Description | XPath |
---|---|---|
CustomData |
Custom string or XML formatted data shared by all licenses which are created with the any of the Product Options which belong to the Product. All strings in the license file use UTF-8 encoding. Unless included in nested XML in this field, any Unicode characters in this field will be formatted with XML escape sequences. |
/SoftwareKey/PrivateData/License/Product/CustomData |
ProductName | The name of the Product or application. | /SoftwareKey/PrivateData/License/Product/ProductName |
Product Options define licensing or purchasing options available under a product. These can reflect any number of unique licensing and/or purchasing options, for example: "1 Year Subscription", "1 Year Subscription with Backup CD", or "1 Year Subscription Renewal".
Field | Description | XPath |
---|---|---|
CustomData |
Custom string or XML formatted data shared by all licenses which are created with the Product Option. All strings in the license file use UTF-8 encoding. Unless included in nested XML in this field, any Unicode characters in this field will be formatted with XML escape sequences. |
/SoftwareKey/PrivateData/License/ProductOption/CustomData |
OptionName | The name of the Product Option, which typically reflects the varying licensing or purchasing options available for your application/product. | /SoftwareKey/PrivateData/License/ProductOption/OptionName |
OptionType | The Product Option Type, which describes the type of license being issued (i.e. a license which uses standard activation, volume license, etc...) | /SoftwareKey/PrivateData/License/ProductOption/OptionType |