Добавление вендорских библиотек PKCS11
Для работы с физическими токенами различных вендоров могут понадобиться библиотеки для аутентификации по клиентским сертификатам в браузере. Подобная библиотека может реализовывать интерфейс PKCS11.
Вендорский пакет библиотеки, реализующей PKCS11, является вариантом Аврора-проекта с установкой дополнительных пакетов. Основные требования к конфигурационным файлам подобных проектов описаны в разделе Конфигурационные пакеты. В этом разделе приводятся дополнительные требования к структуре и конфигурации библиотек, работающих с технологией PKCS11.
Утилита p11-kit в ОС Аврора
Утилита p11-kit для формирования списка поддерживаемых токенов сканирует каталог с конфигурационными файлами /opt/extension/p11-kit-modules/, в котором для каждой библиотеки должен находиться конфигурационный файл <название_библиотеки>.module, соответствующий формату p11-kit.
Создание библиотеки, реализующей PKCS11
Чтобы создать вендорскую библиотеку PKCS11 для ОС Аврора, необходимо выполнить следующие действия:
1. Создать библиотеку, например, с именем ru.auroraos.mylib. Она в процессе сборки будет генерировать so-файл, например, libmypkcs11.so, через который будет предоставляться интерфейс PKCS11.
2. Создать конфигурационный файл mylib.module, содержащий путь к so-файлу на Аврора-устройстве. so-файл должен быть помещён в подкаталог каталога /opt/extension/p11-kit-modules/, имя подкаталога должно совпадать с именем проекта библиотеки, ru.auroraos.mylib. Пример файла .module:
module: /opt/extension/p11-kit-modules/ru.auroraos.mylib/libmypkcs11.so
3. Описать desktop-файл библиотеки, в частности, команду запуска Exec. Пример:
[Desktop Entry]
Type=Application
X-Nemo-Application-Type=silica-qt5
Name=My PKCS11 lib
Icon=ru.auroraos.mylib
Exec=sailfish-qml ru.auroraos.mylib
NoDisplay=true
[X-Application]
Permissions=
ApplicationName=mylib
OrganizationName=ru.auroraos
4. Описать spec-файл библиотеки для корректного формирования её rpm-пакета. Для библиотеки с именем ru.auroraos.mylib файлы .so и .module должны быть установлены по пути /opt/extension/p11-kit-modules/ru.auroraos.mylib. Пример spec-файла:
%global __provides_exclude libmypkcs11.so
Name: ru.auroraos.mylib
Summary: My PKCS#11 library
Version: 0.1
Release: 1
License: License
Url: https://www.myurl.ru
Source0: %{name}-%{version}.tar.bz2
Source1: mylib.module
Source2: libmypkcs11.so
Source3: ru.auroraos.mylib.desktop
BuildRequires: pkgconfig(sailfishapp)
Requires: libauroraapp-launcher
%description
My PKCS#11 library for tokens.
%install
mkdir -p %{buildroot}/opt/extension/p11-kit-modules/ru.auroraos.mylib
cp %{SOURCE1} %{buildroot}/opt/extension/p11-kit-modules/ru.auroraos.mylib
cp %{SOURCE2} %{buildroot}/opt/extension/p11-kit-modules/ru.auroraos.mylib
mkdir -p %{buildroot}%{_datadir}/applications/
cp %{SOURCE3} %{buildroot}%{_datadir}/applications/
desktop-file-install --delete-original \
--dir %{buildroot}%{_datadir}/applications \
%{buildroot}%{_datadir}/applications/*.desktop
%files
%attr(0664,root,root) /opt/extension/p11-kit-modules/ru.auroraos.mylib/mylib.module
/opt/extension/p11-kit-modules/ru.auroraos.mylib/libmypkcs11.so
%{_datadir}/applications/ru.auroraos.mylib.desktop
5. Собрать rpm-пакет и использовать профиль Extended для его подписи.
Использование библиотеки
После установки библиотеки к её функциональности можно обращаться, например, с помощью утилиты pkcs11-tool:
pkcs11-tool --module /opt/extension/p11-kit-modules/ru.auroraos.mylib/libmypkcs11.so -l --pin 12345678 --write-object ./client_A_gost.der --type privkey --id 2222