Вас приветсвует Rucades - CAdESCOM Ruby binding!
Gem реализует интерфейс, аналогичный CAdESCOM и разработан путём повторения функциональности pycades
Gem тестировался в следующем окружении:
- Ububtu 20, 22
- Ruby 2.7. 3.0, 3.1, 3.2
Вероятно, Gem совместим с другими вариантами Linux, однако КриптоПро ЭЦП SDK доступно только для Ubuntu.
- Установите пакеты для сборки
sudo apt update
sudo apt install cmake build-essential libboost-all-dev ruby-dev tar git wget libffi-dev
sudo gem install bundler
- Скачайте архив с КриптоПро CSP для Вашей архитектуры, распакуйте его и установите КриптоПро CSP Например,
для amd64
wget -O linux-arm64_deb.tgz https://cryptopro.ru/sites/default/files/private/csp/50/11455/linux-arm64_deb.tgz
tar xvf linux-arm64_deb.tgz
cd linux-arm64_deb
sudo ./install.sh
для arm64
wget -O linux-arm64_deb.tgz https://cryptopro.ru/sites/default/files/private/csp/50/11455/linux-arm64_deb.tgz
tar xvf linux-arm64_deb.tgz
cd linux-arm64_deb
sudo ./install.sh
- Установите пакет cprocsp-devel
sudo apt install ./lsb-cprocsp-devel_5.0*.deb
- Скачайте архив с КриптоПро ЭЦП SDK, распакуйте его и установите пакет cprocsp-pki-cades (версия не ниже 2.0.14071)
для amd64
tar xvf cades-linux-amd64.tar.gz
cd cades-linux-amd64
sudo apt install ./cprocsp-pki-cades*.deb
для arm64
tar xvf cades-linux-arm64.tar.gz
cd cades-linux-arm64
sudo apt install ./cprocsp-pki-cades*.deb
- Добавьте в Gemfile Вашего проекта следующую строку:
gem 'rucades', git: 'https://github.com/maxirmx/rucades'
Замечание. Репозиторий 'https://github.com/maxirmx/rucades' - приватный. Чтобы bundler имел к нему доступ,
должен быть настроен OAuth токен
и конфигурацию: bundle config GITHUB__COM myoauthtoken:x-oauth-basic
- Выполните
bundle install
!!! Компиляция расширения может занять 10-15 минут. Во время компиляции Ruby не выводит никаких сообщений. !!!
- Проверка установки
Скрипт test.rb
require 'rucades'
puts "CADES SDK version: #{Rucades::About.new.version.to_s}"
Запуск
bundle exec ruby test.rb
Ожидаемый результат (или что-то похожее)
CADES SDK version: 2.0.14892
В каталоге samples есть 4 примера, унаследованные от pycades:
- encrypt - decrypt
- sign - verify signature
- sign xml document - verify signature
- sign hash - verify signature
Для запуска примеров необходим сертификат с привязкой к закрытому ключу. Тестовый сертификат можно установить с помощью команды:
для amd64
/opt/cprocsp/bin/amd64/cryptcp -createcert -dn "CN=test" -provtype 80 -cont '\\.\HDIMAGE\test' -ca https://cryptopro.ru/certsrv
для arm64
/opt/cprocsp/bin/aarch64/cryptcp -createcert -dn "CN=test" -provtype 80 -cont '\\.\HDIMAGE\test' -ca https://cryptopro.ru/certsrv
RSpec обеспечивает покрытие тестами всех классов и примерно 70% функций. Однако, следует иметь в виду, что тестируются С++ --> Ruby bindings, а не функциональность. То есть RSpec проверяет, что функция создалась с нужным имененм и параметрами, но не правильность её работы.
Этот Gem использует
- bundler для управления зависимстями
- rake для управления сборкой
- RSpec 'to make TDD productive and fun'
- Rice для генерации Ruby bindings
Чтобы начать разработку нужно:
- прочитать документацию на Rice
- установить зависимости, как описано выше в разделе установка
bundle install
rake --tasks