【发布时间】:2019-05-20 22:30:27
【问题描述】:
我正在尝试将 safenet HSM 与我们的应用程序集成。我正在用 C 编写程序。我指的是 RSA 实验室的 PKCS11 v2.20 cryptoki 标准文档。我需要生成一个 AES 256 位密钥。在定义密钥生成模板时,我不确定需要为 CKA_VALUE 传递什么值。在生成 DES3 密钥时,我没有提供此属性,我能够生成密钥。
我搜索了 CKA_LABEL 的示例程序,但在 C 语言中找不到任何可靠的示例。我发现了几个 Java 程序,它们使用 CKA_VALUE_LEN 而不是 CKA_VALUE。我不确定这是否可行。
这是文档中给出的sn -p。大多数网站仅以这个 sn-p 为例。没有为数组值指定任何内容。
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_VALUE 则会出现错误?有什么错误?我想不出 DES3 不需要的 AES-256 需要什么 - 这里的密钥只是随机字节,不是吗?也就是说,这里的哪个参数指定了 256 位?
-
这里的哪个参数指定了 256 位 >> 即使我也有疑问并尝试指定 CKA_VALUE_LEN。并且错误消失了。 @always_a_rookie_to_learn 指出的内容现在对我来说很有意义!
标签: c aes public-key-encryption pkcs#11