Проблема с pkcs11-tool

Добрый вечер! Использую --module /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so.
При попытке выполнить --init-token выводит ошибку
error: PKCS11 function C_GetTokenInfo failed: rv = CKR_TOKEN_NOT_RECOGNIZED (0xe1)

Подскажите пожалуйста, в чем может быть проблема?
pcsc_scan и opensc-tool отрабатывают корректно.

Re: Проблема с pkcs11-tool

TolikTipaTut1, добрый день! Подскажите, пожалуйста, какую задачу вы хотите решить с помощью Рутокена?
Какая у вас модель Рутокена? Отформатировать Рутокен можно через pkcs15-init:

$ pkcs15-init --erase-card --reader номер_ридера
$ pkcs15-init --create-pkcs15 --so-pin "87654321" --so-puk "" --reader номер_ридера
$ pkcs15-init --store-pin --label "User PIN" --auth-id 02 --pin "12345678" --puk "" --so-pin "87654321" --finalize --reader номер_ридера

номер_ридера - порядковый номер ридера в системе. Если он один - параметр не нужен.

При этом, вы можете отформатировать с помощью pkcs11-tool и нашей библиотеки rtpkcs11ecp.
Мы всегда отдаем предпочтение использованию нашей библиотеке librtpkcs11ecp.so. Так как это наша собственная разработка - она поддерживается лучше и оперативнее.

Re: Проблема с pkcs11-tool

у меня две модели рутокена - рутокен ЭЦП и ЭЦП 2.0.
Я пытаюсь вывести список сертификатов и вычислить хэш-код / подписать сообщение, сипользуя интерфейс pkcs#11

(2022-06-26 22:25:50 отредактировано TolikTipaTut1)

Re: Проблема с pkcs11-tool

Попробовал еще так: pkcs15-tool --reader 0 --list-info.
Ошибка PKCS#15 binding failed: Unsupported card

Еще пара выводов:
pkcs11-tool --list-slots --module /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so
Available slots:
Slot 0 (0x0): Aktiv Rutoken ECP 00 00
C_GetTokenInfo() failed: rv = CKR_TOKEN_NOT_PRESENT
Slot 1 (0x4): Broadcom Corp 5880 [Contacted SmartCard] (0123456789ABCD) 01 00
  (empty)
Slot 2 (0x8): Broadcom Corp 5880 [Contactless SmartCard] (0123456789ABCD) 0...
  (empty)

pkcs11-tool --list-token-slots --module /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so
Available slots:
No slots.

Re: Проблема с pkcs11-tool

Дебаг команды pkcs11-tool --list-token-slots --module /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so тут: https://drive.google.com/file/d/1HB6pVd … sp=sharing

Re: Проблема с pkcs11-tool

TolikTipaTut1,
Перед выполнением pkcs15-tool, Рутокен был проинициализирован через pkcs15-init?

Сертификаты на Рутокене были созданы, используя opensc-pkcs11.so?

(2022-06-28 15:20:31 отредактировано TolikTipaTut1)

Re: Проблема с pkcs11-tool

После отчистки токена все заработало. На нем, благо, были только тестовые ключи. На рабочих токенах пока боюсь делать. Ключи генерировались с использованием криптопро, но при создании ключей указывалось, что должна использоваться криптография на токенах

Re: Проблема с pkcs11-tool

TolikTipaTut1, для создания ключей ГОСТ-криптоповайдерами, такими как КриптоПро, не обязательно на устройствах создавать PKCS15 структуру.

Для очистки устройств и других служебных действий рекомендуем использовать Утилиту администрирования Рутокен

Re: Проблема с pkcs11-tool

А как со существующими ключами на токене работать с использованием pkcs11-tool, чтобы не возникало ошибок, описанных выше? С использованием модуля от Рутокен?

Re: Проблема с pkcs11-tool

TolikTipaTut1, верно, использовать нашу библиотеку PKCS#11 -  rtpkcs11ecp.

Re: Проблема с pkcs11-tool

Подскажите пожалуйста, при записи файла на рутокен с использованием opensc-explorer или opensc-tool указать, чтобы при его чтении запрашивался пароль, например, пользователя? Пример:

Working Elementary File  ID 0A02

File path:               3F00/1000/1003/0A00/0A02
File size:               70 bytes
EF structure:            Transparent
ACL for READ:            CHV2
ACL for UPDATE:          CHV2
ACL for DELETE:          CHV2
ACL for WRITE:           CHV2
ACL for REHABILITATE:    N/A
ACL for INVALIDATE:      N/A
ACL for LIST FILES:      N/A
ACL for CRYPTO:          N/A
Type attributes:         01 00
Security attributes:     43 02 02 00 00 00 00 02 00 00 00 00 00 00 00
Life cycle:              Operational, activated

Re: Проблема с pkcs11-tool

TolikTipaTut1,

Подойдет ли вам pkcs11-tool для этого?

Создание файла на токене, что доступен по ПИНу:
pkcs11-tool --module opensc-pkcs11.so --login --pin 12345678 --write-object file.txt --type data --id 5 --label 'data2' --private

Его чтение:
pkcs11-tool --module opensc-pkcs11.so --login --pin 12345678 --read-object --type data --label 'data2'

(2022-06-30 13:44:22 отредактировано TolikTipaTut1)

Re: Проблема с pkcs11-tool

Попробуем. Думаю, подойдет. Если возможно - предоставьте также примеры создания директорий и изменения "атрибутов безопасности" загруженых EF и созданных DF. При записи файла в определенный DF его путь как следует указывать?

Re: Проблема с pkcs11-tool

TolikTipaTut1,

Вы хотите работe на APDU-уровне?
Если да - то, расскажите, пожалуйста, про вашу задачу и почему вы хотите идти сложным путем встраивания Рутокенов через APDU.

Плюсы использования rtpkcs11ecp:
1.    Всю историю про внутренние форматы на различных Рутокенах мы берем на себя. Мы сами это поддерживаем.
2.    Для включения новых моделей Вы просто получаете от нас новую версию библиотеки, пересобираете ваше приложение и сразу получаете готовую поддержку.
3.    Оберегаете себя от потенциальных проблем с APDU и не тратите лишнее время на тестирование.
4.    PKCS#11 собрана практически под все платформы.

Пример создания файлов (в т.ч. с доступом по PIN-коду) через API PKCS11 в вашем приложении есть в Рутокен SDK. Примеры находятся по пути внутри архива:
sdk\pkcs11\samples\Standard\CreateDataObject
sdk\pkcs11\samples\Standard\DeleteDataObject
sdk\pkcs11\samples\Standard\FindDataObject


Если вам все же нужна работа на APDU, то напишите, пожалуйста, на partners@rutoken.ru.

(2022-06-30 14:39:54 отредактировано TolikTipaTut1)

Re: Проблема с pkcs11-tool

Павел Анфимов, наоборот, стараемся уйти от apdu и получить высокоуровневый интерфейс для работы с токенами. Просто нам может требуется создание "директорий" и хранение в них файлов, доступ к которым должен осуществляться через PIN. Если можно это сделать с использованием pkcs11-tool (или opensc-tool) - было бы просто замечательно.