通过PKCS#11提取公钥值

时间:2018-02-27 11:50:03

标签: c# pkcs#11 pkcs11interop softhsm

我正在使用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();

不幸的是,objectAttributeCannotBeRead设置为true,无法读取值。 即使我以用户或SO身份登录。

我理解这种情况,当密钥是私有的时 - 由于安全原因,我无法在HSM设备之外获得价值。但为什么我无法提取公钥值?

1 个答案:

答案 0 :(得分:2)

CKA_VALUE不是RSA公钥对象的有效属性。如果要提取RSA公钥值,则需要阅读CKA_PUBLIC_EXPONENTCKA_MODULUS属性。有关详细信息,请参阅PKCS#11 v2.20