Encryption 如何将RSA公钥上载到HSM(使用PKCS#11库)?
我对使用PKCS#11库很陌生,所以也许有经验的人可以把事情弄清楚 我想做以下工作:Encryption 如何将RSA公钥上载到HSM(使用PKCS#11库)?,encryption,cryptography,pkcs#11,hsm,Encryption,Cryptography,Pkcs#11,Hsm,我对使用PKCS#11库很陌生,所以也许有经验的人可以把事情弄清楚 我想做以下工作: 上载到HSM现有RSA公钥(在PC上生成) 然后使用这个上传的密钥包装在HSM上生成的对称密钥 我知道如何生成对称密钥,但如何上载现有的RSA公钥 使用PKCS#11库甚至可以做到这一点吗 在这里似乎也有类似的问题,但它使用的是在HSM上生成的RSA密钥对。我需要自己将RSA公钥上传到HSM。我们可以使用PKCS#11的C#u CreateObject函数将公钥导入到HSM。 这可以从 函数->对象管理函数-
在这里似乎也有类似的问题,但它使用的是在HSM上生成的RSA密钥对。我需要自己将RSA公钥上传到HSM。我们可以使用PKCS#11的C#u CreateObject函数将公钥导入到HSM。 这可以从 函数->对象管理函数->C_CreateObject 还有一个加载公钥的示例。但它需要令牌的支持才能从cryptoki库加载公钥
CK_SESSION_HANDLE hSession;
CK_OBJECT_HANDLE hKey;
CK_OBJECT_CLASS keyClass = CKO_PUBLIC_KEY;
CK_KEY_TYPE keyType = CKK_RSA;
CK_BYTE modulus[] = {... };
CK_BYTE exponent[] = {... };
CK_ATTRIBUTE keyTemplate[] = {
{CKA_CLASS, &keyClass, sizeof(keyClass)}
,
{CKA_KEY_TYPE, &keyType, sizeof(keyType)}
,
{CKA_WRAP, &true, sizeof(true)}
,
{CKA_MODULUS, modulus, sizeof(modulus)}
,
{CKA_PUBLIC_EXPONENT, exponent, sizeof(exponent)}
};
CK_RV rv;
/* Create an RSA public key object */
rv = C_CreateObject(hSession, &keyTemplate, 5, &hKey);
if (rv == CKR_OK) {
.
.
}
是的,当然,这是可能的。创建一个“公钥”类型的新对象。细节取决于您试图使用的API。但我们真的可以声明任意HSM允许公钥导入吗?API是PKCS#11。哪种API方法允许您创建此公钥?GenerateKey?@EugeneMayevski'AlliedBits您指的是哪种API,如果有的话?我不知道该怎么做。有标准的API调用吗?@JonasJnz你知道吗?