根据最新的PKCS#11规范,RSA私钥的典型属性结构如下:
CK_ATTRIBUTE template[] = {
{CKA_CLASS, &class, sizeof(class)},
{CKA_KEY_TYPE, &keyType, sizeof(keyType)},
{CKA_TOKEN, &true, 1},
{CKA_LABEL, label, sizeof(label)},
{CKA_SUBJECT, subject, sizeof(subject)},
{CKA_ID, id, sizeof(id)},
{CKA_SENSITIVE, &true, 1},
{CKA_DECRYPT, &true, 1},
{CKA_SIGN, &true, 1},
{CKA_MODULUS, modulus, sizeof(modulus)},
{CKA_PUBLIC_EXPONENT, publicExponent, sizeof(publicExponent)},
{CKA_PRIVATE_EXPONENT, privateExponent, sizeof(privateExponent)},
{CKA_PRIME_1, prime1, sizeof(prime1)},
{CKA_PRIME_2, prime2, sizeof(prime2)},
{CKA_EXPONENT_1, exponent1, sizeof(exponent1)},
{CKA_EXPONENT_2, exponent2, sizeof(exponent2)},
{CKA_COEFFICIENT, coefficient, sizeof(coefficient)}
};
但是,还有另一个属性CK_VALUE
,它只能用于创建pkcs'数据对象'而不是'关键对象'。当我使用此字段CK_VALUE
创建密钥对象时,PKCS会抛出无效的属性错误。
我想使用其中包含字符串格式化值的类似字段,该字段可以保存与密钥相关的元数据信息(例如用于包装RSA密钥的IV,密钥生成日期等)。有没有办法将这些信息存储在现有的pkcs11模板中,而无需修改实现中的属性数据结构?我正在使用OpenDNSSec社区的SoftHSM n2.0软件包来实现pkcs。
任何建议都将不胜感激。