![]() | Cryptographic Token Interface Standard |
PKCS#11 |
GOST R 34.10-2001 private key objects (object class CKO_PRIVATE_KEY, key type CKK_GOSTR3410) hold GOST R 34.10-2001 private keys.
The following table defines the GOST R 34.10-2001 private key object attributes, in addition to the common attributes defined for this object class:
Table 212, GOST R 34.10-2001 Private Key Object Attributes
Attribute | Data Type | Meaning |
CKA_VALUE1,4,6,7 | 32 bytes for private key in little endian order | |
CKA_GOSTR3410PARAMS1,4,6 | DER-encoding of the object identifier indicating the data object type of GOST R 34.10-2001. When key is used the domain parameter object of key type CKK_GOSTR3410 must be specified with the same attribute CKA_OBJECT_ID | |
CKA_GOSTR3411PARAMS1,4,6,8 | DER-encoding of the object identifier indicating the data object type of GOST R 34.11-94. When key is used the domain parameter object of key type CKK_GOSTR3411 must be specified with the same attribute CKA_OBJECT_ID | |
CKA_GOST28147_PARAMS44,6,8 | DER-encoding of the object identifier indicating the data object type of GOST 28147-89. When key is used the domain parameter object of key type CKK_GOST28147 must be specified with the same attribute CKA_OBJECT_ID. The attribute value may be omitted |
Refer to Table 15 for footnotes
Note that when generating an GOST R 34.10-2001 private key, the GOST R 34.10-2001 domain parameters are not specified in the key's template. This is because GOST R 34.10-2001 private keys are only generated as part of an GOST R 34.10-2001 key pair, and the GOST R 34.10-2001 domain parameters for the pair are specified in the template for the GOST R 34.10-2001 public key.
The following is a sample template for creating an GOST R 34.10-2001 private key object:
CK_OBJECT_CLASS class = CKO_PRIVATE_KEY; CK_KEY_TYPE keyType = CKK_GOSTR3410; CK_UTF8CHAR label[] = "A GOST R34.10-2001 private key object"; CK_BYTE subject[] = {...}; CK_BYTE id[] = {123}; CK_BYTE gostR3410params_oid[] = {0x06, 0x07, 0x2a, 0x85, 0x03, 0x02, 0x02, 0x23, 0x00}; CK_BYTE gostR3411params_oid[] = {0x06, 0x07, 0x2a, 0x85, 0x03, 0x02, 0x02, 0x1e, 0x00}; CK_BYTE gost28147params_oid[] = {0x06, 0x07, 0x2a, 0x85, 0x03, 0x02, 0x02, 0x1f, 0x00}; CK_BYTE value[32] = {...}; CK_BBOOL true = CK_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_SUBJECT, subject, sizeof(subject)}, {CKA_ID, id, sizeof(id)}, {CKA_SENSITIVE, &true, sizeof(true)}, {CKA_SIGN, &true, sizeof(true)}, {CKA_GOSTR3410PARAMS, gostR3410params_oid, sizeof(gostR3410params_oid)}, {CKA_GOSTR3411PARAMS, gostR3411params_oid, sizeof(gostR3411params_oid)}, {CKA_GOST28147_PARAMS, gost28147params_oid, sizeof(gost28147params_oid)}, {CKA_VALUE, value, sizeof(value)} };