Описание
КриптоАРМ ГОСТ – это новый уровень развития знакомой многим программы КриптоАРМ. Новое приложение обеспечивает возможность создания и проверки электронной подписи файлов с произвольным расширением на операционных системах 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": ,
"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":
}
Сборка проекта
Для сборки проекта необходимо:
- Подставить бибилиотеки 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). Проверка электронной подписи с учетом списков отозванных сертификатов. Добавление электронной подписи к уже существующей.