The WatchDog Licensing System provides for resolution of issues related to software licensing. The major system components are - the License Server to enable recording of software products, users and issuing licenses, and the Client (License Client) to provide for direct plugging into software that requires licensing which communicates to the server with requests for licenses as well as authenticate the received licenses and block software in case of invalid licenses or expired term of validity.
Also the system contains an additional module - the Network License Manager (NLM). NLM can substitute the license server for the client, interacts with the server and provides for the use of a limited number of licenses for multiple users as for example working in an enterprise network.
The system is an entirely C++ application providing for greater stability and resistance to decompiling and code cracking. The License Server and NLM are implemented as Apache web server modules. The components interaction is made via HTTP to allow avoiding issues with various proxy-servers, firewalls etc. All transmitted data is encrypted using various encryption schemas to ensure for high system protection from intrusion.
Main System Features
Record and store licensed software data
Record and store data on products' users (Customers) that are persons and companies.
Record and store network users data, differentiate their rights for various operations with the system objects (access rights).
Issue, record and withdraw software licenses. Licenses can be issued directly via online client connection to the server license as well as indirectly without accessing the server online by generating offline keys by the client and further approval by the server and providing a code to authorize the key.
Use of network licenses by companies. This method allows avoiding purchase of a separate license for each workplace via acquisition of a required number of limited network licenses and their alternate use at workplaces. In this case NLM can be the server for the license clients that can be a client for the license server.
Confirm authenticity of requests using encrypted user certificates, licenses authenticity confirmation by the server encryption certificates.
Encrypt data using symmetric schemas and public/private key pairs.
Option to build in custom code for additional handling of registered users, additional checkups of requests for license issuing, additional limitations for using licenses etc.
Technical Specification of the System
The system is completely written on highly productive C++ language and implemented on all well known platforms.
Supported platforms - Microsoft Windows, Linux, Mac OS X
Supported databases - MySQL, Oracle. Database access has been built using native low-level libraries, providing for maximum productivity.
Network protocol - HTTP
License Server and NLM are Apache web server modules working inside of Apache intercepting and handling requests with specific URI.
The Client is the library to be sued inside of software products that require licensing.
Used encryption algorithms: symmetric - BLOWFISH, asymmetric using public/private key pair - RSA.
All programming libraries used in the system are open-source and cross platform.
The following libraries were used
Boost - implementing common algorithms
CryptLib - implementing data encryption, using and storing encryption certificates (Certificate Authority).
libcurl - work with HTTP protocol
mysqlclient - access to MySQL DBS
OCCI (Oracle C++ Interface) - access to Oracle DB
APR (Apache Run Time) - Apache modules functionality
The cross platform build system is implemented using SCons.
The License Server Features
Record and store licensed software products.
Record and store products' users (Customers). For each customer a pair of encryption certificates is issued that authorizes authenticity of a user for further requests and is used for data encryption. The certificates are stored and handled by the certificates repository (Certificate Authority) which is an integral part of the server.
Record and store network users data, differentiate their rights for various operations etc.
Issue, record and withdraw software licenses. Each license is issued for a specific software product and user. The request for the license is signed by the user encryption certificate. The issued license is signed by the server encryption certificate to prevent falsification.
Generate and store offline code authorization used to support offline keys generated by the client.
Execute a number of service functions like configuring certificates repository, data base connection settings, issuing server encryption certificates etc.
The Client Features
Register and record products users (Customers) and encryption certificates received from the server. The registration includes registration of users on the License Server and request for encryption certificates.
Collect and store data on hardware where the Client is installed. This data is used when issuing licenses and to prevent simple copying of software from one computer to another.
Request for licenses from the License Server, store licenses, check for validity of the server encryption certificate that a license is signed by.
Request for network licenses from NLM, their storage, check for validity of the NLM encryption certificate that a license is signed by.
Check for possibility and acceptability of using current licenses and blocking software when detecting an invalid license.
Register and record licensed software as well as register products on the License Server.
Register and record product users (Customers). For each network user a pair of encryption certificates is issued authenticating the user at further requests and used to encrypt data sent between the Client and NLM. The certificates are stored and handled by the certificate repository (Certificate Authority) which is an integral part of NLM.
Request for licenses from the License Server, their storage, check for validity of the server encryption certificate that a license is signed by, placing them to the required pool.
Service the license pool.
Issue network licenses to be used by the Clients (license check out), record and checkup for validity of network licenses being used. A license that has been used by a client can not be used by another client until returned (checked-in).
Receive used licenses from clients (license check in), their preparation for reuse by other clients.
Would you like to use our expertise in your project? Do not hesitate to contact us now
Start a Project