如何使用C_SetAttributeValue更改令牌标签



是否有任何方法可以使用C_SetAttributeValue更改令牌标签?当我尝试使用以下函数时,使用哪个模板来更改令牌名称,结果出现错误iaik.pkcs.pkcs1.wrapper.PKCS11Exception:CKR_template_COMPLETE

token = getToken();
CK_ATTRIBUTE[] attrs = new CK_ATTRIBUTE[2];
attrs[0] = new CK_ATTRIBUTE();
attrs[0].type = PKCS11Constants.CKA_LABEL;
attrs[0].pValue = label.toCharArray();
attrs[1] = new CK_ATTRIBUTE();
attrs[1].type = PKCS11Constants.CKA_ID;
attrs[1].pValue = label.toCharArray();
token.getSlot().getModule().getPKCS11Module().C_SetAttributeValue(
session.getSessionHandle(), token.getSlot().getSlotID(), attrs, true);

你好!

查看C_SetAttributeValue定义:

CK_DEFINE_FUNCTION(CK_RV, C_SetAttributeValue)(
CK_SESSION_HANDLE hSession,
CK_OBJECT_HANDLE hObject,
CK_ATTRIBUTE_PTR pTemplate,
CK_ULONG ulCount
);

第二个参数是对象ID,而不是插槽ID。

请参阅您的库的制造商文档,以获取PKCS#11的允许设置令牌标签的扩展。

C_SetAttributeValue被归类为对象管理函数。更准确地说,cryptocki函数C_SetAttributeValue用于修改或设置对象(而不是令牌(的属性值。如果使用标准的PKCS#11库,则应使用C_initToken来更改或设置令牌标签。

请注意,公司可能会为自己的产品提供一些非标准功能。因此,它可能也是特定产品中的一个非标准函数或扩展,可以帮助您更改令牌标签。

最新更新