Contents - Index


4.2.2.1 API Challenge

Sheriff employs a so-called challenge mechanism to provide extra security. Your application can challenge Sheriff to verify that the it is original and has not been tampered with; Sheriff can also challenge back to verify that the calling application is original and has not been tampered with. Challenge also ensures that the parameters cannot be altered en-route.

Challenge can be enabled to add an extra level of security to the following functions: SLS_License, SLS_Request, SLS_Update and SLS_Release. To enable the challenge mode, you need to set the challenge protocol to SLS_BASIC_PROTOCOL. For example:

SLS_CHALLENGE Challenge;

Challenge.Protocol=SLS_BASIC_PROTOCOL;

Challenge.Size=sizeof(SLS_CHALLDATA);

Challenge.ChallengeData.SecretIndex=nSecretIndex;

Challenge.ChallengeData.Random=nRandom;

If you prefer not to enable challenge mode, all you need to do is to set the challenge protocol to SLS_NO_PROTOCOL. But please note that challenge must be implemented in calling function SLS_License.

To create a challenge, call SLS_CreateChallenge with your product Secret Codes and the input data stream; to verify a challenge, call SLS_VerifyChallenge.

If CSheriff class is used, calling SetSecrets method with your product Secret Codes will automatically enable the challenge mode. Otherwise, it is not enabled.