我遵循了这样的例子:8cs-example.html
若要使用rsa键对对称密钥进行包装,则此方法有效。
我试图实现的是封装一个非对称密钥(rsa私钥)。我所做的就是用私钥的secretKey替换“ObjectHandle”变量。但是,每次调用Wrapkey函数时,我都会得到CKR_GENERAL_ERROR。
有人能解释一下为什么这行不通吗?我在规范中找不到阻止不对称密钥包装的任何东西。
私钥的生成具有以下属性:
List<ObjectAttribute> privateKeyAttributes = new List<ObjectAttribute>();
privateKeyAttributes.Add(new ObjectAttribute(CKA.CKA_TOKEN, true));
privateKeyAttributes.Add(new ObjectAttribute(CKA.CKA_PRIVATE, true));
privateKeyAttributes.Add(new ObjectAttribute(CKA.CKA_ID, ConvertUtils.HexStringToBytes(id)));
privateKeyAttributes.Add(new ObjectAttribute(CKA.CKA_SENSITIVE, false));
privateKeyAttributes.Add(new ObjectAttribute(CKA.CKA_DECRYPT, true));
privateKeyAttributes.Add(new ObjectAttribute(CKA.CKA_SIGN, true));
privateKeyAttributes.Add(new ObjectAttribute(CKA.CKA_SIGN_RECOVER, true));
privateKeyAttributes.Add(new ObjectAttribute(CKA.CKA_EXTRACTABLE, true));诚挚的问候,
发布于 2018-10-16 18:14:37
您似乎试图使用CKM_RSA_PKCS机制包装RSA私钥。PKCS#11 v2.20规范第12.1.6章规定:
PKCS#1 v1.5RSA机制表示
CKM_RSA_PKCS,是一种基于RSA公钥密码体制和PKCS#1 v1.5中最初定义的块格式的多用途机制。 ..。 该机制可以对任何长度适当的秘密密钥进行封装和解封。当然,特定的令牌可能无法包装/解包它支持的每个适当长度的密钥。对于包装,加密操作的“输入”是被包装的密钥的CKA_VALUE属性的值;类似地,用于解包装。
PKCS#11规范只对对称密钥使用术语密钥。此外,CKA_VALUE属性对于RSA私钥是无效的。这不管用。
您最好的选择是整理设备/库的文档,并选择适合您需要的不同包装机制。
https://stackoverflow.com/questions/52832071
复制相似问题