4

我正在使用 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 设备之外获得价值。但是为什么我不能提取公钥值呢?

4

1 回答 1

4

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

于 2018-02-27T16:48:38.353 回答