Извлечь значение открытого ключа через PKCS#11

Я использую библиотеку Pkcs11 для получения ключа от устройства: public_keys

Я могу получить ObjectHandle открытого ключа. Я пытаюсь извлечь значение открытого ключа:

var publicKeyHandle = GetPublicKeyByLabel(Session, "KEY1_QAL_PUB");
var objectAttribute = Session.GetAttributeValue(publicKeyHandle, new List<CKA> { CKA.CKA_VALUE }).Single();
var keyVal =  objectAttribute.GetValueAsByteArray();

К несчастью, objectAttribute имеет CannotBeRead установлен в true и значение не может быть прочитано. Даже когда я вошел как пользователь или ТАК.

Я понимаю случай, когда ключ является закрытым - по соображениям безопасности я не могу получить значение вне устройства HSM. Но почему я не могу извлечь значение открытого ключа?

1 ответ

Решение

CKA_VALUE не является допустимым атрибутом для объектов открытого ключа RSA. Если вы хотите извлечь значение открытого ключа RSA, вам нужно прочитать CKA_PUBLIC_EXPONENT а также CKA_MODULUS атрибутов. Смотрите PKCS#11 v2.20 для более подробной информации.

Другие вопросы по тегам