Описание
КриптоАРМ ГОСТ – это новый уровень развития знакомой многим программы КриптоАРМ. Новое приложение обеспечивает возможность создания и проверки электронной подписи файлов с произвольным расширением на операционных системах Windows, Linux и macOS.
КриптоАРМ ГОСТ работает с сертификатами и ключами усиленной квалифицированной электронной подписи и полностью совместим с криптопровайдером СКЗИ КриптоПро CSP начиная с версии 4.0.
В приложении поддержаны стандарты для электронной подписи и хеширования ГОСТ Р 34.10-2021 и ГОСТ Р 34.11-2021, которые с должны заменить прекращающие свое действие стандарты ГОСТ Р 34.10-2001 и ГОСТ Р 34.11-94.
Описание api
Для проверки открепленной подписи шлем пост запрос на /vsignf.phpС двума параметрами:
- hash – Хеш документа по GOST`у
- sign – подпись
В ответ прилетит json:Если ошибка до проверки сертификата:
{ "status":1, "mess":"Описание ошибки"
}Если проверка прошла:
{ "status":0, // 0 - все хорошо "data":{ "verify":0, // Проверка 1 - пройдена подпись валидна, 0 - не пройдена подпсись не валидна "verifyMessage":"сообщение об рошибки с кодом (0x800B010A)", "signers":[ // подписанты { "signingTime":"", //дата подписания "cert":{ // данные сертификата подписи "validToDate":"16.05.2021 11:56:29", // Валиден до "validFromDate":"16.02.2021 11:46:29", // Валиден от "subjectName":{ // Данные подписанта "C":"RU", "CN":"Test" }, "issuerName":{// Данные УЦ выдавшего сертификат "CN":"CRYPTO-PRO Test Center 2", "O":"CRYPTO-PRO LLC", "L":"Moscow", "C":"RU", "E":"support@cryptopro.ru" }, "certSerial":"120025DA...00025DAA0" // Серийный сертификата } } ] }
}Docker & ncanode
В проекте вы увидите два докерфайла, это:
Авторы
- Malik Zharykov – Initial work
Важно!!!
По требованию АО «НИТ» | НУЦ РК. Библиотеки kalkancrypt-0.6.jar и kalkancrypt_xmldsig-0.3.jar
Были удалены из репозитория, поэтому для компиляции Вам необходимо подставить библиотеки
из комплекта разработчика (SDK) в директорию /lib.
Документация
Руководство пользователя.pdf
Зачем это нужно
Данный контейнер не претендует на истину в последней инстанции.Является больше пособием для развертывания CryptoPro CSP 4 в среде Linux:UbuntuДля продакшена его можно и нужно допиливать.
Кто использует?
Исходя из полученных писем от программистов, NCANode используется как в стартапах, так и в крупных страховых компаниях
Лицензия
Проект лицензирован под лицензией MIT
Пример
Пример запроса (запрос информации о ключе):
Пример ответа:
{ "result": { "notAfter": "2021-08-22 18:11:36", "ocsp": { "revokationReason": 0, "revokationTime": null, "status": "ACTIVE" }, "chain": [ { "valid": true, "notAfter": "2021-08-22 18:11:36", "keyUsage": "AUTH", "serialNumber": "122684438670642568061334282296011886211357830154", "subject": { "lastName": "ТЕСТОВИЧ", "country": "KZ", "commonName": "ТЕСТОВ ТЕСТ", "gender": "", "surname": "ТЕСТОВ", "locality": "АЛМАТЫ", "dn": "CN=ТЕСТОВ ТЕСТ,SURNAME=ТЕСТОВ,SERIALNUMBER=IIN123456789011,C=KZ,L=АЛМАТЫ,S=АЛМАТЫ,G=ТЕСТОВИЧ", "state": "АЛМАТЫ", "birthDate": "12-34-56", "iin": "123456789011" }, "signAlg": "SHA256WithRSAEncryption", "sign": "LLQvGPQP rdLBTPRf0EgLIo/D9TqxeZ52pRyuCHN...", "publicKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMII...", "issuer": { "commonName": "ҰЛТТЫҚ КУӘЛАНДЫРУШЫ ОРТАЛЫҚ (RSA)", "country": "KZ", "dn": "C=KZ,CN=ҰЛТТЫҚ КУӘЛАНДЫРУШЫ ОРТАЛЫҚ (RSA)" }, "notBefore": "2021-08-22 18:11:36", "keyUser": [ "INDIVIDUAL" ] } ], "serialNumber": "122684438670642568061334282296011886211357830154", "subject": { "lastName": "ТЕСТОВИЧ", "country": "KZ", "commonName": "ТЕСТОВ ТЕСТ", "gender": "", "surname": "ТЕСТОВ", "locality": "АЛМАТЫ", "dn": "CN=ТЕСТОВ ТЕСТ,SURNAME=ТЕСТОВ,SERIALNUMBER=IIN123456789011,C=KZ,L=АЛМАТЫ,S=АЛМАТЫ,G=ТЕСТОВИЧ", "state": "АЛМАТЫ", "birthDate": "12-34-56", "iin": "123456789011" }, "signAlg": "SHA256WithRSAEncryption", "sign": "LLQvGPQP rdLBTPRf0EgLIo/D9TqxeZ52pRyuCHNm5P2iOdSn3DuDid1k4pNFHFDIuJ...", "publicKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtKWLOJf9qCqA6EO/SV...", "issuer": { "commonName": "ҰЛТТЫҚ КУӘЛАНДЫРУШЫ ОРТАЛЫҚ (RSA)", "country": "KZ", "dn": "C=KZ,CN=ҰЛТТЫҚ КУӘЛАНДЫРУШЫ ОРТАЛЫҚ (RSA)" }, "notBefore": "2021-08-22 18:11:36", "keyUser": [ "INDIVIDUAL" ], "valid": true, "keyUsage": "AUTH" }, "message": "", "status": 0}Сборка проекта
Для сборки проекта необходимо:
- Подставить бибилиотеки kalkancrypt (Их можно запросить тут)
mvn clean package
Собранный проект будет лежать: target/ncanode-jar-with-dependencies.jar
Сделано с ❤️
Установка
Предполагается что у вас установлен Docker.
Файлы и папки
/conf - кнфигурационные файлы Makefile.unix - Файл сборки расширения getRootAndCACert.php - скрипт получения корневых и УЦ сертификатов, необходимы для проверки подписей start.sh - скрипт инициализации и запуска необходимых сервисов в контейнере
/dist - дистрибутивы программ и файлы необходимые для компиляции и запуска приложений описаны в установке. linux-amd64_deb.tgz - дистрибутив CryptoPro CSP 4 cades_linux_amd64.tar.gz - дистрибутива КриптоПро ЭЦП Browser plug-in php-5.6.30.tar.bz2 - исходники необходимой версии PHP
/www - каталог с PHP API
/docker-compose-dev.yml - пример конфига для docker-compose
/Dockerfile - Файл сборки контенера
/run.sh - скрипт запуска контейнера со всеми необходимыми опциямиФункциональные возможности
- Электронная подпись – создание (формирование) электронной подписи в двух вариантах: совмещенной и отделенной. Формат подписи CMS (PKCS#7). Проверка электронной подписи с учетом списков отозванных сертификатов. Добавление электронной подписи к уже существующей.






