System Identification

System identification is where your application obtains some information about the system on which it is running. Typically, any license which requires activation uses information about the system so that the specific system may be authorized. The Protection PLUS 5 SDK APIs assist you with authorizing and validating this information by making several "System Identifier Algorithms" and supporting functions/methods available to you. These algorithms can be used to generate "System Identifiers" using any combination of information including (but not limited to) the different identifiers listed in these topics:

Furthermore, the Protection PLUS 5 SDK APIs are so flexible and robust, they allow you to specify your own types of identifiers.


It is imperative to keep in mind that you are responsible for testing any custom system identifier algorithms you create to ensure that the reliability and uniqueness of the identifiers meet your expectations and requirements.

System Authorization

A system is authorized for a license during activation with SOLO Server. This allows SOLO Server to include the information about the system in the license file issued as illustrated below.

To further explain the illustration, here is the full process it depicts:

  1. A user runs your application, and decides to activate. At this point, your application uses the Protection PLUS 5 SDK APIs to generate an activation request.
  2. While generating the activation request, any information you opt to use to identify the current system (on which activation is being requested) is gathered and included in the activation request.
  3. The activation request is sent to SOLO Server, which validates the request, and compiles an activation response.
  4. Part of the activation response generated by SOLO Server is the license file, which will also include the system identifiers provided in the activation request. This is how that system is authorized to use that specific license file.
  5. Your application receives the activation response, and saves the license file it received from SOLO Server. Your application may then evaluate the data in the license file to ensure the system running your application is the system which was authorized in the license file.

Allowing Acceptable Change

It is not uncommon for a customer to change some of his or her computer's hardware after activating your software.  Changes can occur when components and drivers fail, and it is often (if not generally) ideal for your application to allow for some amount of change without requiring activation.  The Protection PLUS 5 SDK APIs give you access to the data necessary to compare and contrast information about the system currently running versus the system which was authorized at the time of activation. So for example, if you used MAC addresses from the system's Network Interface Cards (NICs), you might expect the number of NICs present to change on mobile computers or laptops. This is because many laptops might have removable hardware connected and disconnected regularly, which sometimes includes docking stations. With this in mind, your application can leverage the Protection PLUS 5 SDK APIs to ensure at least a certain number of NICs match, as it best suits your application's licensing requirements. Of course, this principle can be applied with any type and combination of system identifiers.


Using a large amount of information about a system to authorize it has the benefit of allowing for more flexible matching fuzzy-logic (to allow some acceptable amount of change to occur without requiring a new activation) and allows you to better prevent other, very similar systems from being inadvertently authorized to use the same license file. However, collecting this kind of information could cause privacy concerns for your users. The system identification logic in Protection PLUS 5 SDK and SOLO Server relies on using hashes of information (more about hashes). Using the one-way cryptographic hashes prevents anyone and everyone from using data showing what hardware your customers use for anything other than the intended purpose (system authorization). The Protection PLUS 5 SDK APIs are not designed to enable you to use this data for purposes other than system identification and authorization for licensing purposes, and SOLO Server is also not designed to make this data useful or available outside of the intended capacity.