Rucades
Вас приветсвует Rucades - CAdESCOM Ruby binding!
Gem реализует интерфейс, аналогичный CAdESCOM и разработан путём повторения функциональности pycades
Совместимость
Gem тестировался в следующем окружении:
- Ubuntu 20, 22
- macOS: macos-latest (arm64), macos-15-intel (amd64)
- Ruby 2.7.8, 3.1.7, 3.2.11, 3.3.11, 3.4.9, 4.0.5
Вероятно, Gem совместим с другими вариантами Linux, однако КриптоПро ЭЦП SDK доступно только для Ubuntu. После каждого релиза автоматически выполняется проверка работоспособности Gem на Ubuntu 22 и macOS-latest.
Установка
Зависимости
- Ruby и Bundler для Вашей платформы.
- Средства сборки C/C++ расширений Ruby для Вашей платформы.
- CMake — необходим для сборки native extension.
- Boost — требуется при использовании КриптоПро ЭЦП SDK версии ниже 2.0.15700; начиная с версии 2.0.15700 Boost не требуется.
- КриптоПро CSP и пакет разработки CSP (
cprocsp-develили аналогичный пакет для Вашей платформы). - КриптоПро ЭЦП SDK с пакетом CAdES (
cprocsp-pki-cadesили аналогичный пакет для Вашей платформы), версия не ниже 2.0.14071.
Используйте официальные инструкции КриптоПро для выбранной операционной системы и архитектуры:
- документация КриптоПро CSP описывает установку и особенности CSP на поддерживаемых платформах;
- страница загрузки КриптоПро CSP содержит дистрибутивы для разных платформ и архитектур;
- документация КриптоПро ЭЦП SDK описывает использование и требования SDK;
- страница загрузки КриптоПро ЭЦП SDK содержит актуальные пакеты SDK.
Начиная с КриптоПро CSP 5.0 R3, пакеты CAdES/SDK поставляются в составе основного дистрибутива CSP. Для более ранних версий CSP может потребоваться отдельная установка архива КриптоПро ЭЦП SDK.
Установка опубликованного Gem из RubyGems.org
Добавьте Gem в Gemfile Вашего проекта:
gem 'rucades'
Затем выполните установку зависимостей проекта обычным для Bundler способом.
Для установки без Gemfile можно использовать опубликованный пакет RubyGems.org:
gem install rucades
Компиляция расширения может занять 10-15 минут. Во время компиляции Ruby может не выводить сообщений.
Проверка установки
Скрипт test.rb
require 'rucades'
puts "CADES SDK version: #{Rucades::About.new.version.to_s}"
Запуск
ruby test.rb
Ожидаемый результат (или что-то похожее)
CADES SDK version: 2.0.14892
Установка из исходного кода репозитория
Этот вариант нужен для установки unreleased-версии из репозитория, либо для утановки в контроллируем окружении. Во втором случае добавть ссылку на commit, оторый считается надёжным.
Добавьте в Gemfile Вашего проекта следующую строку:
gem 'rucades', git: 'https://github.com/maxirmx/rucades'
Затем выполните установку зависимостей проекта обычным для Bundler способом.
Использование
В каталоге 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 installrake --tasks