CARD_AUTHENTICATE structure
This structure is used by the minidriver to allow for a remote secure key injection application to securely authenticate to the card that is connected to an un-trusted client.
Syntax
typedef struct _CARD_AUTHENTICATE {
DWORD dwVersion;
DWORD dwFlags;
PIN_ID PinId;
DWORD cbPinData;
BYTE pbPinData[];
} CARD_AUTHENTICATE, *PCARD_AUTHENTICATE;
Members
dwVersion
The version of the structure. Set to CARD_AUTHENTICATE_CURRENT_VERSION.dwFlags
A set of flags that specify the meaning of the data within the structure.PinId
The PIN identifier to be authenticated.cbPinData
Byte count of the data in the pbPinData buffer.pbPinData
A zero-sized byte array that which points to the end of the structure. A byte array that contains PIN information should be attached at this address. cbPinData contains the length of this byte array.
Remarks
For the expected behavior and explanation of dwFlags, see CardAuthenticatePin.
The secure version of PIN authentication is not valid for the external PIN type, which are PINs that are stored on a device that is connected to the computer. If the function returns 0 (success), the user can perform any action that requires PinId to be authenticated. This state persists until one of the following occurs:
- Either CardDeauthenticate or CardDeauthenticateEx is called.
- The card is reset through the Winscard API.
- The card loses power.
Note This does not apply if CARD_AUTHENTICATE_GENERATE_SESSION_PIN is specified in dwFlags.
If this data structure is passed to any of the secure key injection functions as an input buffer, the size of the buffer that is specified in the function call should include both the size of the structure and the length of the PIN data.
In addition, pbPinData should point to location of the PIN data within the input buffer. This data should immediately follow the CARD_AUTHENTICATE structure within the input buffer.
Requirements
Header |
Cardmod.h (include Cardmod.h) |