Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@n3/crypto

Package Overview
Dependencies
Maintainers
8
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@n3/crypto

Comfortable api over cadesplugin from cryptopro

  • 0.1.8
  • latest
  • npm
  • Socket score

Version published
Weekly downloads
212
increased by351.06%
Maintainers
8
Weekly downloads
 
Created
Source

@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"
  }
}

FAQs

Package last updated on 29 Feb 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc