是否有任何方法可以使用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
来更改或设置令牌标签。
请注意,公司可能会为自己的产品提供一些非标准功能。因此,它可能也是特定产品中的一个非标准函数或扩展,可以帮助您更改令牌标签。