...
- использовать современный и поддерживаемый плагин (получить больше поддерживаемых платформ и браузеров)
- перейти на новые отечественные алгоритмы электронной подписи ГОСТ 2012
- перейти на мировые стандарты электронной подписи RSA (до 2048 бит)
- перейти с "сырой" подписи на полноценную подпись с атрибутами формата PKCS#7 и сертификаты X509
- использовать всю линейку продуктов семейства Рутокен ЭЦП, не ограничиваясь моделью Рутокен Web
- использовать более современную модель promise в Javascript
Для примера апдейта будем использовать демонстрационный сайт:
Например, код Код серверной части сайта написан на PHP, но и для других языков алгоритм будет тот же.
...
В этой схеме нет сложностей, связанных с сертификатами X509, и стандартами подписи PKCS#7 (CMS), происходит только "сырая" подпись данных и проверка корректности подписи.
Однако, при желании , или необходимости, сертификаты X509 и CMS могут быть сравнительно легко подключены.
...
- Установим Рутокен Плагин. Актуальная версия плагина доступна по ссылке:
https://www.rutoken.ru/support/download/rutoken-plugin/ - Изменим загрузчик плагина. Для этого заменим на страницах или в системе сборки скрипт rutokenweb.js на rutoken.js:
https://www.npmjs.com/package/rutoken
Оба эти скрипта используют Promise . Если у вас установлен и работает rutokenweb.js, то зависимости должны быть. Если rutokenweb.js не работает, то Иначе следует установить скрипт для работы с промисами. Для этого перейдите по ссылке:
, например данную библиотеку: https://github.com/jakearchibald/es6-promise - Используйте Установим модуль проверки совместимости плагина и браузера:
https://www.npmjs.com/package/rutoken-browser-check
Он дает возможность локализовать проблемы при инициализации.
У данного скрипта есть зависимость:
https://www.npmjs.com/package/bowser - Изменим логику инициализации работы плагина. Для этого:
- вынесем логику в отдельный файл boot.js, чтобы не копировать;
- подключим его на всех страницах, где это необходимо;
- удалим лишние переменные;
- удалим функцию token_refresh из подписи на onload странице.
В общем случае, плагин получается в финальной финальном resolve цепочке промисов, в которой мы цепочки промисов. Мы передаем его конструктору нашей обертки вместе с методом получения PIN-кода.
Этот метод нужен, чтобы эмулировать отображение окна со списком логинов и обработать выбор корректного id.
Возвращается Метод должен возвращать промис с id устройства и PIN-кодом, введенным пользователем.
Все ошибки инициализации прилетают в reject промиса.
Ошибки от плагина прилетают другие, поэтому то место, где они обрабатывались необходимо изменить. - Используйте Используем обертку над плагином rtwToCrypto.js. Код обертки:
https://github.com/blade-runner/rutokenweb-to-plugin
Подменяем методы Рутокен Web на необходимые нам.
Таким образом Обертка подменяет необходимые методы таким образом, что все старые сигнатуры вашего кода сохраняются и ваш код работает, но теперь уже с другим плагином и всеми устройствами семейства Рутокен ЭЦП.
...