CardDeriveKey Yes (Optional) CardDestroyDHAgreement Yes (Optional) CardSignData Yes CardQueryKeySizes Yes CardAuthenticateEx Yes CardChangeAuthenticatorEx No (Optional) Yes CardDeauthenticateEx CardGetChallengeEx No (Optional) CardGetContainerProperty Yes CardSetContainerProperty No Yes CardGetProperty CardSetProperty Yes MDImportSessionKey No (Optional) MDEncryptData No (Optional) No (Optional) CardImportSessionKey CardGetSharedKeyHandle No (Optional) CardGetAlgorithmProperty No (Optional) CardGetKeyProperty No (Optional) No (Optional) CardSetKeyProperty CardDestroyKey No (Optional) CardProcessEncryptedData No (Optional) Legend Yes This function must be implemented. No Entry point must exist and must return SCARD_E_UNSUPPORTED_FEATURE. No The operation is not required to be supported for a read-only card, but may be (Optional) implemented if the card supports the operation. If not supported, the entry point must return SCARD_E_UNSUPPORTED_FEATURE. Yes This function should be implemented according to its definition in this (Optional) specification, regardless of whether the card is read-only. The following requirements should be considered when developing a minidriver for a read-only card: All expected Base CSP/KSP with the exception of the file (such as ‘msroots’ and must exist on the read-only card (or must be virtualized ‘cardcf’ ‘cardid’) through the minidriver interface). A read-only card must contain at least one key on the card that is protected by the primary card (that is, ROLE_USER) PIN. A read-only card is allowed to not contain an admin key. If this is the situation, it is expected that the minidriver will not support CardGetChallenge, CardAuthenticateChallenge, and CardUnblockPin. When queried, a read-only card should return 0 bytes available and 0 containers available.
CardDeriveKey Yes (Optional) CardDestroyDHAgreement Yes (Optional) CardSignData Yes CardQueryKeySizes Yes CardAuthenticateEx Yes CardChangeAuthenticatorEx No (Optional) CardDeauthenticateEx Yes CardGetChallengeEx No (Optional) CardGetContainerProperty Yes CardSetContainerProperty No CardGetProperty Yes CardSetProperty Yes MDImportSessionKey No (Optional) MDEncryptData No (Optional) CardImportSessionKey No (Optional) CardGetSharedKeyHandle No (Optional) CardGetAlgorithmProperty No (Optional) CardGetKeyProperty No (Optional) CardSetKeyProperty No (Optional) CardDestroyKey No (Optional) CardProcessEncryptedData No (Optional) Legend Yes This function must be implemented. No Entry point must exist and must return SCARD_E_UNSUPPORTED_FEATURE. No (Optional) The operation is not required to be supported for a read-only card, but may be implemented if the card supports the operation. If not supported, the entry point must return SCARD_E_UNSUPPORTED_FEATURE. Yes (Optional) This function should be implemented according to its definition in this specification, regardless of whether the card is read-only. The following requirements should be considered when developing a minidriver for a read-only card: All expected Base CSP/KSP with the exception of the ‘msroots’ file (such as ‘cardcf’ and ‘cardid’) must exist on the read-only card (or must be virtualized through the minidriver interface). A read-only card must contain at least one key on the card that is protected by the primary card (that is, ROLE_USER) PIN. A read-only card is allowed to not contain an admin key. If this is the situation, it is expected that the minidriver will not support CardGetChallenge, CardAuthenticateChallenge, and CardUnblockPin. When queried, a read-only card should return 0 bytes available and 0 containers available.
sc-minidriver_specs_v7.07.docx