Skip to content

maxirmx/rucades

Repository files navigation

Rucades

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

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

Build-and-test

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

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

Лицензия

MIT License.