AES密钥生成模板中使用的CKA_值是多少?
我正在尝试将safenet HSM与我们的应用程序集成。我正在用C语言编写程序。我指的是RSA实验室提供的PKCS11 v2.20 cryptoki标准文档。我需要生成一个AES 256位密钥。在定义密钥生成模板时,我不确定需要为CKA_值传递什么值。生成DES3密钥时,我没有提供此属性,因此我能够生成密钥 我搜索了CKA_标签的示例程序,但在C中找不到任何可靠的示例。我找到了两个使用CKA_值而不是CKA_值的Java程序。我不确定这是否有效 这是文档中给出的代码段。大多数网站仅以这个片段为例。没有为数组值指定任何内容AES密钥生成模板中使用的CKA_值是多少?,c,aes,public-key-encryption,pkcs#11,C,Aes,Public Key Encryption,Pkcs#11,我正在尝试将safenet HSM与我们的应用程序集成。我正在用C语言编写程序。我指的是RSA实验室提供的PKCS11 v2.20 cryptoki标准文档。我需要生成一个AES 256位密钥。在定义密钥生成模板时,我不确定需要为CKA_值传递什么值。生成DES3密钥时,我没有提供此属性,因此我能够生成密钥 我搜索了CKA_标签的示例程序,但在C中找不到任何可靠的示例。我找到了两个使用CKA_值而不是CKA_值的Java程序。我不确定这是否有效 这是文档中给出的代码段。大多数网站仅以这个片段为例
CK_OBJECT_CLASS class = CKO_SECRET_KEY;
CK_KEY_TYPE keyType = CKK_AES;
CK_UTF8CHAR label[] = “An AES secret key object”;
CK_BYTE value[] = {...};
CK_BBOOL true = CK_TRUE;
CK_ATTRIBUTE template[] = {
{CKA_CLASS, &class, sizeof(class)},
{CKA_KEY_TYPE, &keyType, sizeof(keyType)},
{CKA_TOKEN, &true, sizeof(true)},
{CKA_LABEL, label, sizeof(label)-1},
{CKA_ENCRYPT, &true, sizeof(true)},
{CKA_VALUE, value, sizeof(value)}
};
CKA_值
是键的实际值。当您告诉HSM生成密钥时,它将根据您在密钥模板中传递的属性在硬件上为您生成密钥,并设置在CKA\u值中生成的值。但是,该属性无法读取/提取,也无法在生成密钥时设置,因为HSM不允许您(直接)从软件中注入密钥,也不允许您(直接)从HSM中提取密钥
CKA\u VALUE\u LEN
是您可以告诉HSM生成的密钥的长度。AES密钥的长度可以是128、192或256位。根据您想要的密钥大小,您可以将CKA\u值\u LEN
设置为16、24或32(密钥大小为字节)。如果不传递CKA\u值,我认为您会出错?怎么了?我想不出AES-256需要什么而DES3不需要——这里的键只是随机字节,不是吗?也就是说,这里哪个参数指定了256位?这里哪个参数指定了256位>>这就是我曾经的疑问,并且尝试指定CKA_值。错误消失了。“永远都是新手”所指出的,现在对我来说是有意义的!谢谢@always\u a\u新手\u学习。“我试过了,并且能够生成一个密钥。”陈很高兴这有帮助。如果解决方案解决了您的问题,您可以将答案标记为已接受,这将有助于其他人解决同样的问题。