Плагин упрощающий работу с КриптоПРО в N2O проектах
- простое подключение в любом месте кастомизируемого проекта N2O
- создание модального окна с выбором сертификата и блоком информации по нему
- если найден только один сертификат, которым можно подписать, то автоматически применяется он
- возможность указывать тип HASH подписи (открепленная, присоединенная)
- отправка запроса на получение документа для подписи и его сохранение
- гибкая настройка плагина
В конфиге кастомизируемого проекта N2O необходимо:
- Импортировать button
import { EcpButton } from 'n2o-ecp-plugin';
- Использовать в качестве кастомного действия
{ buttons: { EcpButton }}
EcpButton может принимать следующие параметры:
-
buttonLabel
- текст кнопки вызова открытия модального окна с сертификатами -
title
- заголовок модального окна -
signButtonLabel
- текст кнопки подтверждения подписи -
cancelButtonLabel
- текст кнопки отмены -
fileForSign
- строка для подписи -
signType
- вид подписи (HASH, XML) -
typeOfSign
- тип HASH подписи, гдеtrue
- открепленная (по умолчанию),false
- присоединенная -
fileRequestService
- настройка получения документа с сервера-
url
- путь, на который будет отправлен запрос -
type
- метод запроса -
data
- объект или функция, результат которой отправиться вместе с запросом на сервер, для GET запроса отправиться в query, для остальных в body -
documentKey
- ключ в котором вернется документ из body, по умолчанию 'hash'
-
-
fileSaveService
- настройка сохранения подписи-
url
- путь, на который будет отправлен запрос -
type
- метод запроса -
data
- объект или функция, результат которой отправиться вместе с запросом на сервер, для GET запроса отправиться в query, для остальных в body
-
-
successSign
- callback функция получения подписи -
errorSign
- callback функция ошибки
В режиме fileRequestService плагин отправляет алгоритм сертификата вместе с data. Ключ - certificate
{
"Document": "документ",
"SignedDocument": "подписаный документ",
"Name": "ФИО из сертификата",
"SignDate": "дату и время подписи",
"SerialNumber": "серийный номер сертификата",
"ValidFrom": "даты действия ('с'' в формате dd.mm.yyyy hh24:mm:ss)",
"ValidTo": "даты действия ('по'' в формате dd.mm.yyyy hh24:mm:ss)",
"Issuer" : "владелец сертификата",
"Data": "response fileRequestService"
}
Кроме кастомного действия N2O, в пакете также присутствует api для работы с КриптоПРО.
- Импортируем api
import { EcpApi } from 'n2o-ecp-plugin';
- Используем
const certificates = await EcpApi.getCertificates();
Все методы возвращают Promise.
EcpApi.getCertificates()
Метод получения сертификатов.
Пример данных:
[
{
algorithm: "ГОСТ Р 34.10-2001",
issuerName: "CN=CRYPTO-PRO Test Center 2, O=CRYPTO-PRO LLC, L=Moscow, C=RU, E=support@cryptopro.ru",
label: "Test Certificate (до 20.02.2020 17:02:34)",
name: "Test Certificate",
oid: "1.2.643.2.2.19",
serialNumber: "12003D490CF6FB17B679DB04B90001003D490C",
subjectName: "CN=Test Certificate",
thumbprint: "C478ACE69DD1DFEEDD6695CC8ED7BE3A5FBED89C",
validFrom: "20.11.2019 16:52:34",
validTo: "20.02.2020 17:02:34",
}
]
EcpApi.getCertificate(hash)
Метод получения сертификата по хешу.
Аргументы:
- hash - хеш сертификата
EcpApi.sign({ signType, certificate, data, typeOfSign, fileRequestService, fileSaveService })
Метод подписи.
Агрументы:
- signType - вид подписи вид подписи (HASH, XML)
- certificate - сертификат подписи
- data - данные на подпись, также может быть массивом
- typeOfSign - тип HASH подписи, где
true
- открепленная (по умолчанию),false
- присоединенная - fileRequestService - настройка получения документа с сервера
- url - путь, на который будет отправлен запрос
- type - метод запроса
- data - объект или функция, результат которой отправиться вместе с запросом на сервер, для GET запроса отправиться в query, для остальных в body
- documentKey - ключ в котором вернется документ из body, по умолчанию 'hash'
- fileSaveService - настройка сохранения подписи
- url - путь, на который будет отправлен запрос
- type - метод запроса
- data - объект или функция, результат которой отправиться вместе с запросом на сервер, для GET запроса