如何在 cryptoki 中重命名容器名称
How to rename container name in cryptoki
我写了一些代码,将 public 的密钥对和私钥写入令牌。我从密钥对创建 pkcs10,然后从中生成证书文件。证书文件将被插入到令牌中。这一切 运行 都成功了,但是 CAPI 或 Internet Explorer 无法读取证书。如果我插入一个 p12 文件,它 运行 毫不费力。我怀疑 CKA_LABEL 和 CKA_ID 是这里的罪魁祸首。在 p12 中,所有内容都使用相同的名称约定。来自容器、public 密钥、私钥和证书。但是在我的方法中,容器名称看起来像是自动生成的。如何将其转换为与 CKA_ID 相同?下面是我生成保存在容器中的密钥对的代码。
rv = g_pFunctionList->C_GenerateKeyPair(hSession,
&ck_gen_ecc,
tPubKey, sizeof(tPubKey) / sizeof(CK_ATTRIBUTE),
tPrvKey, sizeof(tPrvKey) / sizeof(CK_ATTRIBUTE),
&pkcs11_hPubKey, &pkcs11_hPrvKey);
它保存在容器名称如
cont_4440xxxxxxxx
如何像CKA_ID一样更改容器名称?有人可以帮忙吗?
如果您的 cryptoki 库允许,您可以通过调用 C_SetAttributeValue
函数设置它们的新属性来重命名所有对象。
在您的情况下,它可能如下所示:
CK_ATTRIBUTE atAttr[2];
atAttr[0].type = CKA_LABEL;
atAttr[0].pValue = pLabelValue; // <-- pass here new Label value pointer
atAttr[0].ulValueLen = ulLabelLen; // <-- pass here new Label length
atAttr[1].type = CKA_ID;
atAttr[1].pValue = pIDValue; // <-- pass here new ID value pointer
atAttr[1].ulValueLen = ulIDLen; // <-- pass here new ID length
rv = g_pFunctionList->C_SetAttributeValue(hSession, pkcs11_hPubKey, atAttr, 2);
rv = g_pFunctionList->C_SetAttributeValue(hSession, pkcs11_hPrvKey, atAttr, 2);
我写了一些代码,将 public 的密钥对和私钥写入令牌。我从密钥对创建 pkcs10,然后从中生成证书文件。证书文件将被插入到令牌中。这一切 运行 都成功了,但是 CAPI 或 Internet Explorer 无法读取证书。如果我插入一个 p12 文件,它 运行 毫不费力。我怀疑 CKA_LABEL 和 CKA_ID 是这里的罪魁祸首。在 p12 中,所有内容都使用相同的名称约定。来自容器、public 密钥、私钥和证书。但是在我的方法中,容器名称看起来像是自动生成的。如何将其转换为与 CKA_ID 相同?下面是我生成保存在容器中的密钥对的代码。
rv = g_pFunctionList->C_GenerateKeyPair(hSession,
&ck_gen_ecc,
tPubKey, sizeof(tPubKey) / sizeof(CK_ATTRIBUTE),
tPrvKey, sizeof(tPrvKey) / sizeof(CK_ATTRIBUTE),
&pkcs11_hPubKey, &pkcs11_hPrvKey);
它保存在容器名称如
cont_4440xxxxxxxx
如何像CKA_ID一样更改容器名称?有人可以帮忙吗?
如果您的 cryptoki 库允许,您可以通过调用 C_SetAttributeValue
函数设置它们的新属性来重命名所有对象。
在您的情况下,它可能如下所示:
CK_ATTRIBUTE atAttr[2];
atAttr[0].type = CKA_LABEL;
atAttr[0].pValue = pLabelValue; // <-- pass here new Label value pointer
atAttr[0].ulValueLen = ulLabelLen; // <-- pass here new Label length
atAttr[1].type = CKA_ID;
atAttr[1].pValue = pIDValue; // <-- pass here new ID value pointer
atAttr[1].ulValueLen = ulIDLen; // <-- pass here new ID length
rv = g_pFunctionList->C_SetAttributeValue(hSession, pkcs11_hPubKey, atAttr, 2);
rv = g_pFunctionList->C_SetAttributeValue(hSession, pkcs11_hPrvKey, atAttr, 2);