CardGetChallenge function
This topic is not current. For the most current information about the Smart Card API, see Smart Card Minidriver Specification.
The CardGetChallenge function, defined by a smart card module, authenticates a user with a challenge and response.
Syntax
DWORD WINAPI CardGetChallenge(
_In_ PCARD_DATA pCardData,
_Out_ PBYTE *ppbChallengeData,
_Out_ PDWORD pcbChallengeData
);
Parameters
-
pCardData [in]
-
A pointer to a CARD_DATA structure received from a call to the CardAcquireContext function.
-
ppbChallengeData [out]
-
A pointer to a PBYTE value that receives the challenge data from the smart card.
-
pcbChallengeData [out]
-
A pointer to a DWORD value that specifies the size, in bytes, of the challenge data contained in the ppbChallengeData parameter.
Return value
If the function succeeds, the function returns zero.
If the function fails, it returns a nonzero value.
Remarks
The smart card creates challenge data by using its administrative key and places this data in the ppbChallengeData parameter. The caller then computes the response to the challenge by using shared knowledge of that key and submits the response to the card by calling the CardAuthenticateChallenge function. If the response is correct, the user is authenticated.
This authentication technique is normally used for privileged operations such as unblocking a user's PIN. To help avoid possible spoofing of identity, card module implementations should require that identical challenge and response values are not used more than once.
If the next call to the smart card module is not a call to the CardAuthenticateChallenge function that uses the challenge data received in the ppbChallengeData buffer, this function should discard that data.
Requirements
Minimum supported client |
Windows XP [desktop apps only] |
Minimum supported server |
Windows Server 2003 [desktop apps only] |
Header |
|