Rucades

Вас приветсвует Rucades - CAdESCOM Ruby binding!

Gem реализует интерфейс, аналогичный CAdESCOM и разработан путём повторения функциональности pycades

Gem Version Build-and-test

Совместимость

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 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 install
  • rake --tasks

Лицензия

MIT License.