Как изменить метку токена с помощью C_SetAttributeValue - PullRequest
0 голосов
/ 23 марта 2020

Есть ли способ изменить метку токена с помощью C_SetAttributeValue? какой шаблон используется для изменения имени токена, как я пытался с помощью приведенной ниже функции получил ошибку iaik.pkcs.pkcs11.wrapper.PKCS11Exception: CKR_TEMPLATE_INCOMPLETE

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);

Ответы [ 2 ]

0 голосов
/ 26 марта 2020

C_SetAttributeValue классифицируется как функция управления объектами. Точнее, функция криптоки C_SetAttributeValue используется для изменения или установки значения атрибута объекта (не токена). Если вы используете стандартную библиотеку PKCS#11, вы должны использовать C_initToken для изменения или установки метки токена.

Обратите внимание, что компания может предоставлять некоторые нестандартные функции для своих собственных продуктов. Таким образом, это может быть также нестандартная функция или расширение в конкретном c продукте, которое поможет вам изменить метку токена.

0 голосов
/ 23 марта 2020

Здравствуйте, StackOverflow!

Посмотрите определение C_SetAttributeValue:

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

Второй параметр - это идентификатор объекта, а не идентификатор слота.

Пожалуйста, обратитесь к документации производителя вашей библиотеки для расширений PKCS # 11, которые позволяют устанавливать метку токена.

...