Извлечь значение открытого ключа через PKCS#11
Я использую библиотеку Pkcs11 для получения ключа от устройства:
Я могу получить 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 для более подробной информации.