Vendor-Specified 4-Byte Custom Fingerprint of a System

RMS provides you the capability to have a vendor specified customized 4-byte fingerprint along with the standard fingerprints of a system.

Executables Need to be Rebuild

> In case of standalone licensing (application linked to the standalone library or the integrated library), the client application needs to be rebuild.

>In case of network licensing, the License Manager executable needs to be rebuild only if the licenses are server-locked and the client application needs to be rebuild only if the licenses are client-locked.

>The command-line utility to obtain the system fingerprints (echoid).

>Windows-based graphical utility to obtain the system fingerprints (wechoid.exe)

Description 

For the server-locked licenses, locking is verified at the time of loading/adding licenses. For the client-locked licenses, locking is verified at the time of license request. Apart from the standard fingerprints of a system, you can lock licenses to a hardware device (dongle) or a software-based implementation to generate a unique 4-byte value. You have to implement a customized Host ID function that needs to be registered using the VLSsetHostIdFunc function. This function must return an unsigned long value based on the customized logic that is unique for each system.

Function Prototype (of the Callback Function)

unsigned long GetCustomValue(void);

Steps to Perform

1. Create the custom host ID function, say GetCustomValue.

2. Update the CUSTOM_LOCK_OBJS variable in the custom32.mak file.

3. Register the custom host ID function on the License Manager.

4. Register the custom host ID function on the client.

5.If the custom host ID function name is different from "GetCustomValue", then update the function name in the following files after searching for the call of VLSsetHostIdFunc:

echomain.c (applicable to both Windows and UNIX)

wechoiddlg.cpp (applicable to Windows only)

6.Follow the build procedure specified in How to Use the custom32.mak File?.

Code Snippets 

Create the Custom Host ID Function

unsigned long GetCustomValue(void)
{
   unsigned long customValue = 0;
   /* TODO: add the customized logic for generating unique 4-byte custom host id value or read from some dongle */
   return customValue;
}

Register the Custom Host ID Function on the License Manager

VLSsetHostIdFunc is used to register the function with the License Manager. This registration needs to be done in the VLSserverVendorInitialize function.

#include "lserv.h"
extern unsigned long GetCustomValue();
LSERV_STATUS VLSserverVendorInitialize(void)
{
   VLSsetHostIDFunc(&GetCustomValue);
   return LSERV_STATUS_SUCCESS;
}

Register the Custom Host ID Function on the Client

Here you need to call VLSsetHostIDFunc in the client application, in the similar way it was done in VLSserverVendorInitialize.

#include "lserv.h"
extern unsigned long GetCustomValue();
int main(int argc, char* argv[])
{
   VLSinitialize();
   VLSsetHostIDFunc(&GetCustomValue);
   /* add the client application code here  */
   return 0;
}