Для отладки приложений использующих интерфейс PKCS#11 можно использовать утилиту PKCS11-SPY.
Это переработанная версия утилиты, входящей в проект OpenSC и отличается от нее поддержкой расширенного интерфейса.
Утилита выводит лог PKCS#11 вызовов в формате текстового файла.
1. Подготовка файлов
Заменим оригинальную библиотеку на библиотеку-шпион, для этого:
1. Загрузите архив с Рутокен SDK
2. Разархивируйте содержимое, утилита PKCS11-SPY находится в папке <sdk>\pkcs11\util\pkcs11-spy
3. Выберите версию ОС и разрядность в соответствии с разрядностью приложения
- Рутокен Плагин использует 32х разрядную библиотеку PKCS#11
- Драйверы Рутокен содержат обе библиотеки. Какая используется – зависит от разрядности отлаживаемого приложения.
4. Найдите папку с библиотекой PKCS#11 (rtPKCS11ECP), которую использует приложение:
- для Рутокен Плагин - C:\Users\Имя_пользователя\AppData\Roaming\Aktiv Co\CryptoPlugin\4.4.1.0
- для Драйверов Рутокен: C:\Windows\System32\ или C:\Windows\SysWOW64\
5. Переименуйте оригинальную библиотеку PKCS#11 (rtPKCS11ECP), например, в rtPKCS11ECP-orig
6. Скопируйте rtpkcs11-spy.dll(.dylib или .so) из разархивированной папки в папку с оригинальной библиотекой PKCS#11 (rtPKCS11ECP)
7. Переименуйте библиотеку-шпион, задав ей имя оригинальной библиотеки PKCS#11 (rtPKCS11ECP)
2. Настройка утилиты
Теперь укажем утилите путь до оригинальной библиотеки и путь, куда будет записываться лог-файл.
Для Windows
Для 32 битных приложений
В реестре установить в строковый параметр HKLM\Software\Aktiv Co.\Rutoken\rtPKCS11-Spy\Module путь к оригинальной библиотеке PKCS#11 (rtPKCS11ECP-orig).
В реестре установить в строковый параметр HKLM\Software\Aktiv Co.\Rutoken\rtPKCS11-Spy\Output путь к лог файлу, в который будет записываться последовательность вызовов PKCS#11 функций.
Для 64 битных приложений
В реестре установить в строковый параметр HKLM\Software\Aktiv Co.\Rutoken\rtPKCS11-Spy\Module путь к оригинальной библиотеке PKCS#11 (rtPKCS11ECP-orig).
В реестре установить в строковый параметр HKLM\Software\Aktiv Co.\Rutoken\rtPKCS11-Spy\Output путь к лог файлу, в который будет записываться последовательность вызовов PKCS#11 функций.
Для Linux и macOS
записать в системные переменные
RT_PKCS11SPY - путь к оригинальной библиотеке PKCS#11 (rtPKCS11ECP-orig)
RT_PKCS11SPY_OUTPUT - путь к лог файлу, в который будет записываться последовательность вызовов PKCS#11 функций.
Например:
- для Linux
RT_PKCS11SPY=/opt/aktivco/rutokenecp/lib/librtpkcs11ecp-orig.so
RT_PKCS11SPY_OUTPUT=/home/user/Desktop/logfile.txt - для Mac
RT_PKCS11SPY=/Library/Aktiv\ Co/Rutoken\ ECP/lib/librtpkcs11ecp-orig.dylib
RT_PKCS11SPY_OUTPUT=/Users/user/Desktop/logfile.txt
3. Воспроизведение сценария
Выполните действия, которые необходимо залогировать. Если логи нужны для решения ошибки - выполните действия, которые приводят к этой ошибке.
Если требуется воспроизвести сценарий в браузере, перед воспроизведением ошибки, перезапустите браузер.
4. Файл логов
Убедитесь, что файл rtpkcs11-spy.log с логами создан по адресу, указанному во 2 пункте.
5. Переименование библиотеки
Удалите библиотеку-шпион из папки с оригинальной библиотекой и переименуйте оригинальную библиотеку обратно.