Skip to content

⭐ Приложение-сервер для работы с Электронно Цифровой Подписью (ЭЦП) РК

License

Notifications You must be signed in to change notification settings

malikzh/NCANode

Repository files navigation

NCANode

⭐ Приложение-сервер для работы с Электронно Цифровой Подписью (ЭЦП) РК


License:MIT Downloads Docker Pulls Build CI and Test GitHub release (latest SemVer) codecov


Возможности

  • Кроссплатформенный сервер (Windows, Mac OS, Linux)
  • Работа с API посредством JSON
  • Подпись XML данных с помощью xmldsig
  • Подпись Wsse для SmartBridge
  • Поддержка OCSP и CRL
  • Проверка валидности сертификатов (включая цепочку доверия)
  • Поддержка работы с CMS ( Cryptographic Message Syntax )
  • Поддержка TSP-меток в CMS
  • Поддержка множественных подписей для xmldsig и CMS
  • Возможность добавления подписей уже в существующие файлы CMS и XML
  • Поддержка новых ЭЦП (ГОСТ 2015) и новых CRL
  • Добавлены тесты на весь функционал
  • Docker

Кому надо?

Если Вам необходимо реализовать подпись данных будь формата XML или любом другом произвольном формате, при этом на стороне сервера, Вы можете запустить NCANode на сервере и обращаться к нему посредством API (Http/RabbitMQ).

Кто использует?

Исходя из полученных писем от программистов, NCANode используется как в стартапах, так и в крупных страховых компаниях

СМИ об NCANode

https://profit.kz/news/56732/Otkritij-kod-Beeline-Hacktoberfest-v-Kazahstane/

Пример

Пример запроса (запрос информации о ключе):

{
  "xml": "<?xml version=\"1.0\" encoding=\"utf-8\"?><a><b>test</b></a>",
  "signers": [
    {
      "key": "MIIHTwIBAzCCBwkGCSqGS...",
      "password": "qwerty12"
    }
  ]
}

Пример ответа:

{
  "status": 200,
  "message": "OK",
  "xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?><a><b>test</b><ds:Signature x..."
}

Документация

Документацию можно найти на http://ncanode.kz

Swagger: https://v3.ncanode.kz/swagger-ui/

Contributors

Лицензия

Проект лицензирован под лицензией MIT

Важно!!!

По требованию АО «НИТ» | НУЦ РК. Библиотеки kalkancrypt-*.jar/knca_provider_jce_kalkan-*.jar и kalkancrypt-xmldsig-*.jar Были удалены из репозитория, поэтому для компиляции Вам необходимо подставить библиотеки из комплекта разработчика (SDK) в директорию /lib.

Сборка проекта

Версия gradle: 7.2 Версия java: 17

Для сборки проекта необходимо:

  1. Подставить библиотеки kalkancrypt (knca_provider_jce_kalkan-*.jar и kalkancrypt-xmldsig-*.jar) в директорию lib (Их можно запросить тут)
  2. ./gradlew bootJar (для jar файла) или ./gradlew bootWar (для war файла)

Собранный проект будет лежать: build/libs/NCANode.jar или build/libs/NCANode.war

Запуск проекта без сборки

Проект запустить можно командой:

$ ./gradlew bootRun

Запуск в Docker из готового образа

docker volume create ncanode_cache
docker run -p 14579:14579 -v ncanode_cache:/app/cache -d malikzh/ncanode

Запуск через Docker Compose

Предварительно нужно собрать проект через gradle и сгенерировать jar файлы

docker compose build  // сборка образа
docker compose up -d  // запуск контейнера
docker compose ps  // проверка статуса контейнера
docker compose stop  // остановка контейнера

После запуска

Проверить можно, перейдя на страницу: http://localhost:14579/actuator/health

Сделано с ❤️