LS_CHALLDATA
Notice:This is preliminary documentation for technology that
will be supported in future releases of
Microsoft Windows.
The LS_CHALLDATA
structure is passed in the LS_CHALLENGE
typedef struct _LS_CHALLDATA {
LS_ULONG
SecretIndex;
LS_ULONG
Random;
LS_MSG_DIGEST MsgDigest;
} LS_CHALLDATA;
Members
SecretIndex
Specifies the
index of the secret value to be challenged. Note: The secret index is 1-based,
so the first secret must have an index of 1.
Random
Specifies a
random 32-bit value.
MsgDigest
Structure
that contains the message digest that is computed by the MD4 Message-Digest
Algorithm from RSA Data Security, Inc.
Remarks
In the basic
challenge protocol, the application must choose the index of the secret to be
challenged, and it must generate a random number. It must then compute a
message digest using the MD4 Message-Digest Algorithm. The input to the
algorithm is formed by concatenating the input parameters to the function being
called, the random number, the index of the secret to be challenged, and the
actual secret value. The first input parameter should be the name of the
license service function being called, either LSRequest
The license
system authenticates the message digest and computes a new message digest
consisting of the input parameters to the license service function, the output
parameters, the random number, the index of the secret to be challenged,
and the actual secret value. The last output parameter should be the returned
status. This new message digest is passed back to the application, which, in
turn, authenticates it. All parameters should be in the order specified in the
prototypes for the LSRequest
If the
function h(x) is the algorithm that, given input x, returns the
output of the MD4 Message-Digest Algorithm, then the following briefly
illustrates the basic protocol.
The
application passes the LS_CHALLDATA structure to the license system:
R, X, h(in + R + X + S (X) )
The license
system passes a new LS_MSG_DIGEST
h(in + out + R + X + S (X) )
where R
is the random number, X is the index of the secret to be challenged, in
is a byte stream that encodes the input parameters, S indicates a
secret, S (X) is the actual
secret value, out is a byte stream that encodes the output parameters,
and + denotes concatenation.
This data
format can be invalid if the Protocol specified in the LS_CHALLENGE
structure is not LS_BASIC_PROTOCOL. Other protocols may define their own LS_CHALLDATA
format.
See Also