Cryptographic Token Interface Standard |
PKCS#11 |
SKIPJACK secret key objects (object class CKO_SECRET_KEY, key type CKK_SKIPJACK) holds a single-length MEK or a TEK. The following table defines the SKIPJACK secret key object attributes, in addition to the common attributes listed in Table 15 , Table 19 , Table 25 , and Table 42 :
Table 56, SKIPJACK Secret Key Object
Attribute | Data type | Meaning |
CKA_VALUE1,4,6,7 | Byte array | Key value (always 12 bytes long) |
SKIPJACK keys have 16 checksum bits, and these bits must be properly set. Attempting to create or unwrap a SKIPJACK key with incorrect checksum bits will return an error.
It is not clear that any tokens exist (or will ever exist) which permit an application to create a SKIPJACK key with a specified value. Nonetheless, we provide templates for doing so.
The following is a sample template for creating a SKIPJACK MEK secret key object:
CK_OBJECT_CLASS class = CKO_SECRET_KEY; CK_KEY_TYPE keyType = CKK_SKIPJACK; CK_UTF8CHAR label[] = "A SKIPJACK MEK secret key object"; CK_BYTE value[12] = {...}; CK_BBOOL true = TRUE; CK_ATTRIBUTE template[] = { {CKA_CLASS, &class, sizeof(class)}, {CKA_KEY_TYPE, &keyType, sizeof(keyType)}, {CKA_TOKEN, &true, sizeof(true)}, {CKA_LABEL, label, sizeof(label)-1}, {CKA_ENCRYPT, &true, sizeof(true)}, {CKA_VALUE, value, sizeof(value)} };
The following is a sample template for creating a SKIPJACK TEK secret key object:
CK_OBJECT_CLASS class = CKO_SECRET_KEY; CK_KEY_TYPE keyType = CKK_SKIPJACK; CK_UTF8CHAR label[] = "A SKIPJACK TEK secret key object"; CK_BYTE value[12] = {...}; CK_BBOOL true = TRUE; CK_ATTRIBUTE template[] = { {CKA_CLASS, &class, sizeof(class)}, {CKA_KEY_TYPE, &keyType, sizeof(keyType)}, {CKA_TOKEN, &true, sizeof(true)}, {CKA_LABEL, label, sizeof(label)-1}, {CKA_ENCRYPT, &true, sizeof(true)}, {CKA_WRAP, &true, sizeof(true)}, {CKA_VALUE, value, sizeof(value)} };