Согласно последней спецификации 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 выдает мне недопустимую ошибку атрибута.
Я хотел бы использовать аналогичное поле, в котором содержится значение в формате строки, которое может содержать метаданные, относящиеся к ключу (например, IV, используемый для переноса ключа RSA, дата создания ключа и т. Д.). Есть ли способ сохранить эту информацию в существующем шаблоне pkcs11, не вмешиваясь в структуру данных атрибута в реализации? Я использую пакет SoftHSM n2.0 сообщества OpenDNSSec для реализации pkcs.
Мы ценим любые предложения.
Задача ещё не решена.
Других решений пока нет …