@n3/crypto
v0.1.8
Published
Comfortable api over cadesplugin from cryptopro
Downloads
327
Maintainers
Keywords
Readme
@n3/crypto
Установка
npm install @n3/crypto
API
Получение списка доступных сертификатов
import { getValidCertificates } from '@n3/crypto';
getValidCertificates()
.then((certificates) => {
...
}, (err) => {
...
});
certificates
- массив, содержащий объекты с полями:
certificate
- объект сертификата, используемый для подписания; долежн передаваться в функцииsignHash
иsignString
name
- описание сертификата видаSTREET="ул. Проверочная, д. 1, лит. А", SNILS=12345678901, OGRN=1234567890123, INN=001234567890, [email protected], C=RU, S=78 Санкт-Петербург, L=Санкт-Петербург, O=Тестовая организация, OU=Отдел тестирования, G=Тест Тестович, SN=Тестов, T=Инженер-программист, CN=Тестовая организация
print
- Thumbprint сертификата видаCC1A530EC972A18FF5A9CD5D5EF319FD86B9E6CF
params
- представлениеname
в виде {key: value}objid
- уникальный id сертификатаvalidFromDate
- дата, с которой сертификат валиден, например,2017-04-06T05:53:47.000Z
2017-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
- сертификат из результата вызоваgetValidCertificates
signedMessage
- подписанное сообщение
Подписание строки
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
- сертификат из результата вызоваgetValidCertificates
algorithmOid
- 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"
}
}