@n3/crypto
v1.0.0
Published
Comfortable api over cadesplugin from cryptopro
Maintainers
Keywords
Readme
@n3/crypto
Установка
npm install @n3/cryptoAPI
Получение списка доступных сертификатов
import { getValidCertificates } from '@n3/crypto';
getValidCertificates()
.then((certificates) => {
...
}, (err) => {
...
});certificates - массив, содержащий объекты с полями:
certificate- объект сертификата, используемый для подписания; долежн передаваться в функцииsignHashиsignStringname- описание сертификата видаSTREET="ул. Проверочная, д. 1, лит. А", SNILS=12345678901, OGRN=1234567890123, INN=001234567890, [email protected], C=RU, S=78 Санкт-Петербург, L=Санкт-Петербург, O=Тестовая организация, OU=Отдел тестирования, G=Тест Тестович, SN=Тестов, T=Инженер-программист, CN=Тестовая организацияprint- Thumbprint сертификата видаCC1A530EC972A18FF5A9CD5D5EF319FD86B9E6CFparams- представлениеnameв виде {key: value}objid- уникальный id сертификатаvalidFromDate- дата, с которой сертификат валиден, например,2017-04-06T05:53:47.000Z2017-04-06T05:53:47.000Z- дата, по которую сертификат валиден, например,2018-04-06T05:53:47.000Z
Подписание хеша
import { signHash } from '@n3/crypto';
signHash(hash, certificate)
.then((signedHash) => {
...
}, (errorMessage) => {
...
});hash- hex-строкаcertificate- сертификат из результата вызоваgetValidCertificates
Добавление подписи к подписанному сообщению
import { coSignHash } from '@n3/crypto';
coSignHash(hash, certificate, signedMessage)
.then((signedHash) => {
...
}, (errorMessage) => {
...
});hash- hex-строкаcertificate- сертификат из результата вызоваgetValidCertificatessignedMessage- подписанное сообщение
Подписание строки
import { signString } from '@n3/crypto';
signHash(stringToSign, certificate)
.then((signedString) => {
...
}, (errorMessage) => {
...
});stringToSign- base64-строкаcertificate- сертификат из результата вызоваgetValidCertificates
Валидация подписи строки
import { verifySignString } from '@n3/crypto';
verifySignString(singedMessage, dataToSign, isDetached)
.then((signedString) => {
...
}, (errorMessage) => {
...
});singedMessage- проверяемое подписанное сообщениеdataToSign- содержимое объекта CAdESCOM.CadesSignedData, подписанное с помощью цифровой подписиisDetached- вид подписи: отделенная (true) или совмещенная (false)
Получение версии плагина
import { getVersion } from '@n3/crypto';
getVersion()
.then(({
plugin,
provider,
}) => {
...
}, (errorMessage) => {
...
});plugin- версия плагинаBuildVersion- Возвращает номер сборкиMajorVersion- Возвращает старший компонент версии.MinorVersion- Возвращает младший компонент версии.Version- Возвращает строковое представление версии.
provider- версия криптопровайдераBuildVersion- Возвращает номер сборки криптопровайдераMajorVersion- Возвращает старший компонент версии криптопровайдераMinorVersion- Возвращает младший компонент версии криптопровайдераVersion- Возвращает строковое представление версии криптопровайдераName- Возвращает наименование криптопровайдера
Получение информации об алгоритме хэширования
import { getAlgorithm } from '@n3/crypto';
getAlgorithm(certificate)
.then(({
algorithmOid,
signMethod,
digestMethod,
hashMethod
}) => {
...
}, (errorMessage) => {
...
});certificate- сертификат из результата вызоваgetValidCertificatesalgorithmOid- OID алгоритма хэшированияsignMethod- URI алгоритма подписиdigestMethod- URI метода дайджестаhashMethod- алгоритм хэширования
Включение мока
import { mock } from '@n3/crypto';
import mockJSON from 'cryptopro-mock.json';
mock(mockJSON);После этого все вышеперечисленные методы будут возвращать фейковые данные, сгенерированные с помощью mockJSON.
Формат json для мока
certificates: [{
ValidFromDate: #String
ValidToDate: #String
SubjectName: #String
Thumbprint: #String
}]
plugin: {
BuildVersion: #Number
MajorVersion: #Number
MinorVersion: #Number
Version: #String
}
provider: {
BuildVersion: #Number
MajorVersion: #Number
MinorVersion: #Number
Version: #String
Name: #String
}Пример json для мока
{
"certificates": [
{
"ValidFromDate": "2017-04-06T05:53:47.000Z",
"ValidToDate": "2018-04-06T05:53:47.000Z",
"SubjectName": "STREET=\"ул. Проверочная, д. 1, лит. А\", SNILS=12345678901, OGRN=1234567890123, INN=001234567890, [email protected], C=RU, S=78 Санкт-Петербург, L=Санкт-Петербург, O=Тестовая организация, OU=Отдел тестирования, G=Тест Тестович, SN=Тестов, T=Инженер-программист, CN=Тестовая организация",
"Thumbprint": "CC1A530EC972A18FF5A9CD5D5EF319FD86B9E6CF"
},
{
"ValidFromDate": "2017-01-24T07:51:47.000Z",
"ValidToDate": "2017-03-24T07:51:47.000Z",
"SubjectName": "STREET=\"ул. Проверочная, д. 1, лит. А\", SNILS=12345678901, OGRN=1234567890123, INN=001234567890, [email protected], C=RU, S=78 Санкт-Петербург, L=Санкт-Петербург, O=Тестовая организация, OU=Отдел тестирования, G=Тест Тестович, SN=Тестов, T=Инженер-программист, CN=Тестовая организация",
"Thumbprint": "DA572D0784DB9C95DEAD44D3E2A7D6288CF7A42E"
}
],
"plugin": {
"BuildVersion": 2,
"MajorVersion": 0,
"MinorVersion": 12619,
"Version": "2.0.12619"
},
"provider": {
"BuildVersion": 3,
"MajorVersion": 1,
"MinorVersion": 101,
"Version": "3.1.101",
"Name": "Microsoft RSA/Schannel Cryptographic Provide"
}
}