Unblock PIN Support
Unblock PIN relies on proprietary mechanisms.
Mechanisms
The following table shows which Unblock PIN mechanisms are supported by different cryptographic operations.
Functions | ||
---|---|---|
Mechanism | C_VerifyUnblockPINInit & C_VerifyUnblockPIN | UnlockPIN (legacy) |
CKM_UNBLOCK_PIN_STATIC |
|
|
CKM_UNBLOCK_PIN_DYNAMIC |
|
These proprietary mechanisms are defined as follows:
#define CKM_UNBLOCK_PIN_STATIC CKM_ACTI + 0x00000801 #define CKM_UNBLOCK_PIN_DYNAMIC CKM_ACTI + 0x00000802
Unblock PIN Object Definition
Unblock PIN object is defined as:
#define CKO_UNBLOCK_PIN CKO_VENDOR_DEFINED + 0x00000810
Object Attributes
Attribute | Data Type | Meaning |
---|---|---|
CKA_UNBLOCK_PIN_CHALLENGE_REQUIREMENT | CK_ULONG | Parameter requirements when unblock PIN code values with challenge / response: CK_OTP_PARAM_MANDATORY = Challenge/Response unblock PIN. The challenge must be retrieved with C_GetAttributeValue on attribute CKA_UNBLOCK_PIN_CHALLENGE and encrypted using the unblock key before the response is send using C_VerifyUnblockPIN. CK_OTP_PARAM_OPTIONAL = RFU. CK_OTP_PARAM_IGNORED = Static unblock PIN. C_VerifyUnblockPIN should be called directly with the unlock code |
CKA_UNBLOCK_PIN_CHALLENGE | Byte array | Only defined for challenge/response unblock. Value of the challenge to be encrypted using the unblock key. |
This proprietary attribute is defined as follows:
#define CKA_UNBLOCK_PIN_CHALLENGE_REQUIREMENT CKA_VENDOR_DEFINED + 0x00000340 #define CKA_UNBLOCK_PIN_CHALLENGE CKA_VENDOR_DEFINED + 0x00000341
Common Storage Object Attributes
Attribute | Data Type | Meaning |
---|---|---|
CKA_TOKEN | CK_BBOOL | CK_TRUE |
CKA_PRIVATE | CK_BBOOL | CK_FALSE |
CKA_MODIFIABLE | CK_BBOOL | CK_FALSE |
CKA_LABEL | RFC2279 string | Empty |
CKA_CLASS | CK_OBJECT_CLASS | CKO_UNBLOCK_PIN |
Static Unlock Key Object Definition (Legacy)
For standalone cards that have a static unlock key that is still available to read, the following session object is returned.
Secret Key Attributes
Attribute | Data Type | Meaning |
---|---|---|
CKA_SENSITIVE | CK_BBOOL | CK_FALSE |
CKA_ENCRYPT | CK_BBOOL | CK_TRUE |
CKA_DECRYPT | CK_BBOOL | CK_TRUE |
CKA_WRAP | CK_BBOOL | CK_TRUE |
CKA_UNWRAP | CK_BBOOL | CK_TRUE |
CKA_EXTRACTABLE | CK_BBOOL | CK_TRUE |
CKA_ALWAYS_SENSITIVE | CK_BBOOL | CK_FALSE |
CKA_NEVER_EXTRACTABLE | CK_BBOOL | CK_FALSE |
CKA_ALWAYS_AUTHENTICATE | CK_BBOOL | CK_FALSE |
CKA_VALUE | Byte Array | Value of the unlock key |
Common Key Attributes
Attribute | Data Type | Meaning |
---|---|---|
CKA_KEY_TYPE | CK_KEY_TYPE | CKK_GENERIC_SECRET. |
CKA_ID | Byte array | empty |
CKA_LOCAL | CK_BBOOL | CK_TRUE |
CKA_KEY_GEN_MECHANISM | CK_MECHANISM_TYPE | CK_UNAVAILABLE_INFORMATION |
CKA_ALLOWED_MECHANISMS | CK_MECHANISM_TYPE _PTR, pointer to a CK_MECHANISM_TYPE array | None |
Common Storage Object Attributes
Attribute | Data Type | Meaning |
---|---|---|
CKA_TOKEN | CK_BBOOL | CK_FALSE |
CKA_PRIVATE | CK_BBOOL | CK_TRUE |
CKA_MODIFIABLE | CK_BBOOL | CK_FALSE |
CKA_LABEL | RFC2279 string | “Unlock Key” |
CKA_CLASS | CK_OBJECT_CLASS | CKO_SECRET_KEY |