Processing Trigger Code Activations

Trigger code activations are primarily meant to be used for phone activations when no Internet connectivity is available. If Internet connectivity is available to you and your customer, even if only though a secondary device, we strongly recommend you use the manual activation request. If you are using SOLO Server to issue License IDs, this trigger code activation process should be done through SOLO Server to take advantage of its database and electronic license management (ELM) features.

Review the information on using trigger codes for telephone activation for high-level details on how this process works. For more information on how to add support for trigger codes into your application, please view the manual topics for trigger codes with PLUSManaged or trigger codes with PLUSNative.

Important

Any challenge-response mechanisms such as trigger code validation can be reverse engineered (similar to how "key generators" are available on the Internet for many popular software applications). Therefore, it is best to use Protection PLUS 5 SDK's standard online and manual activation features when possible, which offer much stronger security than trigger codes.

Generate trigger codes with License Manager

To open the "Generate Trigger Codes" window in License Manager, go to the menu Tools / Generate Trigger Codes or press the F2 key.

Each of the fields and options are described below:

Fields / Options Description
User Code 1 Also known as the "session code" to former Protection PLUS 4 users, this value is a randomized value that makes activation codes unique to each activation attempt. Its purpose is to prevent end-users from using an activation code more than once, which is very important when an activation code does something such as incrementing the number of network seats allowed. When users contact your company to activate, they will be required to provide this value.
User Code 2 Also known as the "Computer ID" to former Protection PLUS 4 users, this value is generated from device-specific information. Its purpose is to make each activation code unique to the PC for which it was issued, and prevent users from activating "Computer B" with an activation code generated for "Computer A". When users contact your company to activate, they will be required to provide this value.
Trigger Code Seed This is the "seed" value used when generating Activation Code 1. Typically, this value should be unique between each of your products/applications so that you may prevent them from being cross-activated. (In other words, using a unique Trigger Code Seed value for each product prevents activation codes generated for "Product A" from being used to activate "Product B"). The value specified must be a number between 1 and 65535. When allowing activation through SOLO Server or License Manager, your application's source code and the corresponding product option(s) in SOLO Server or Product Activation Setting in License Manager must have matching values.
RegKey2 Seed This is the "seed" value used when generating Activation Code 2. Typically, this value is also unique between each of your products/applications so that you may prevent them from being cross-activated. The value specified must be a number between 1 and 255. When allowing activation through SOLO Server or License Manager, your application's source code and the corresponding product option(s) in SOLO Server or Product Activation Setting in License Manager must have matching values.
Trigger Code Number A Trigger Code Number is simply a number between 1 and 50, which defines the action(s) which will be taken when Activation Code 1 is successfully validated on your customer's computer. When a customer requests activation, you or your company are responsible for selecting the appropriate trigger code number when generating the activation code(s). (When using SOLO Server, this is configured on the product option selected when the license was created or purchased.) As the application developer, you are free to assign and program your own set of actions for any given Trigger Code Number. So for example, you could program your application to activate a non-expiring (or perpetual) license for your application when it receives a trigger code number of 1. At the same time, your application could also be programmed to activate a time-limited (or a "lease" or "periodic") license for some arbitrary number of days when it receives a trigger code number of 10.
Include Event Data Value Checking this option will allow you to include an Event Data Value. This is necessary when you want do more than just activate a perpetual license.
Event Data The specified value must be a valid integer between 0 and 16383 inclusive (14 bits in length). Based on the Trigger Code Number, you can have you application use this Event Data Value in different ways, such as setting an expiration date, enabling/disabling certain features, or setting the number of network seats. You are limited to a 14-bit value per trigger code activation.
Generate This button will generate the Activation Codes once there are valid values for User Code 1, User Code 2, Trigger Code Seed and RegKey2 Seed.
Activation Code 1 When a user requests activation, this value is generated by you or your company. This value must always be provided to your end-users to complete an activation. Once your protected application has successfully validated Activation Code 1, it receives the Trigger Code Number, which allows your protected application to alter its license file as appropriate.
Activation Code 2 When a user requests activation, this value may (optionally) be generated by you or your company in order to send a secondary, numeric value to your application during activation. The decoded value sent to your application through Activation Code 2 is the Event Data Value (see above).

The seed values need to be unique per application, or unique between non-free upgrade versions of your application. For previousProtection PLUS 4 users familiar with LFEdit, there is no product definition equivalent yet, so you need to manually document what seed values you are using at this point. The last seed values entered are saved for the next time the feature is used.

How to use trigger codes to activate a PLUSManagedGui sample

The following instructions use the PLUSManagedGui self-signed sample, but the process is similar in other PLUSManaged samples. This process will also be very similar if you implement your own dialogs rather than using PLUSManagedGui. These steps will show both what your customer and you need to do to complete a manual activation with trigger codes.

When the customer launches the application, PLUSManagedGui will show that no license file is found, and that an activation must take place. The customer will need to chose "Manually exchange activation codes" and click Next.

The customer will be given User Code 1 and User Code 2, which they need to communicate to you by phone, email, or text.

Now with License Manager, you will enter the User Code 1 and User Code 2 that the customer gave you. You will also enter the Trigger Code Seed and RegKey2 Seed values for your particular application, as well as the Trigger Code Number and Event Data depending on what type of license you are activating. Once you press Generate, this will give you Activation Code 1, and also Activation Code 2 if you are including the Event Data Value.

In all of our samples, the Trigger Code Seed default value is 400 and the RegKey2 Seed default value 123. These are set in the LicenseConfiguration class (in the Encryption Settings region), and you will want to configure these to your own values for your protected application(s). These must match the seed used in the license manger dialog for the activation to be successful.

You will now send Activation Code 1 (and Activation Code 2 if applicable) back to the customer by phone, email, or text. They will enter this into the activation screen and press Next.

If everything was done correctly, the request will be completed and the application will be activated accordingly.