我能够检索公钥的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
,无法读取值。 即使我以用户或SO身份登录。
我理解这种情况,当密钥是私有的时 - 由于安全原因,我无法在HSM设备之外获得价值。但为什么我无法提取公钥值?
答案 0 :(得分:2)
CKA_VALUE
不是RSA公钥对象的有效属性。如果要提取RSA公钥值,则需要阅读CKA_PUBLIC_EXPONENT
和CKA_MODULUS
属性。有关详细信息,请参阅PKCS#11 v2.20。