@n3/crypto

0.1.8 • Public • Published

@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, E=testov@test.test, 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, E=testov@test.test, 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, E=testov@test.test, 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"
  }
}

Readme

Keywords

none

Package Sidebar

Install

npm i @n3/crypto

Weekly Downloads

18

Version

0.1.8

License

ISC

Unpacked Size

258 kB

Total Files

16

Last publish

Collaborators

  • a.kamaev
  • d.lukyanov
  • avataka
  • alex.skachkov
  • v.voloshin
  • n3admin
  • vtaits
  • k.kulik
  • a_sannikov