总结与使用公共密钥PKCS#11密钥(Wrap a secret key with a public

2019-10-30 05:32发布

在我的C程序中,我生成公钥/私钥对与功能C_GenerateKeyPair并用敏感(秘密)密钥C_GenerateKey 。 其目的是包装用公钥密钥,但是当我调用该函数C_WrapKey ,我得到的错误CKR_KEY_TYPE_INCONSISTENT。 代码如果我使用带属性的总结和加密设置另一个包装密钥运行。 用于公钥模板是PKCS#11文件中提出的一个:

CK_SESSION_HANDLE hSession;
CK_OBJECT_HANDLE hPublicKey, hPrivateKey;
CK_MECHANISM mechanism = {
   CKM_RSA_PKCS_KEY_PAIR_GEN, NULL_PTR, 0
};
CK_ULONG modulusBits = 768;
CK_BYTE publicExponent[] = { 3 };
CK_BYTE id[] = {123};
CK_BBOOL true = CK_TRUE;
CK_ATTRIBUTE publicKeyTemplate[] = {
   {CKA_ENCRYPT, &true, sizeof(true)},
   {CKA_VERIFY, &true, sizeof(true)},
   {CKA_WRAP, &true, sizeof(true)},
   {CKA_MODULUS_BITS, &modulusBits, sizeof(modulusBits)},
   {CKA_PUBLIC_EXPONENT, publicExponent, sizeof(publicExponent)}
};

在总结和加密属性是否正确指定,而被包裹密钥我添加的属性CKA_EXTRACTABLE。 在此先感谢您的帮助。

Answer 1:

错误CKR_KEY_TYPE_INCONSISTENT是由于错误的CK_MECHANISM,在功能C_WrapKey使用。 如果我们想换一个RSA公钥密钥,设置以下机制:

CK_MECHANISM dec_mec = {CKM_RSA_PKCS, NULL_PTR, 0};


文章来源: Wrap a secret key with a public key using PKCS#11