Перейти к содержанию

CryptoPro - класс для работы с ЭЦП#

Класс CryptoPro реализует интеграцию с КриптоПро ЭЦП Browser plug-in для работы с ЭЦП. Поддерживается КЭП (квалифицированная электронная подпись).

Необходимое ПО для установки#

Список поддерживаемых браузеров и ОС, а так же инструкция по установке https://docs.cryptopro.ru/cades/plugin

Статические методы#

findCertificates#

Получить список сертификатов.

Метод принимает объект со свойствами:

Возвращает Promise, результатом которого будет массив, в котором содержатся объекты со свойствами:

  • notBefore - дата начала действия сертификата (в формате YYYY-MM-DDTHH:mm:ss.sssZ)
  • notAfter - дата окончания действия сертификата (в формате YYYY-MM-DDTHH:mm:ss.sssZ)
  • rawData - сертификат в кодировке base64
  • serialNumber - серийный номер
  • subjectName - имя субъекта
  • thumbprint - отпечаток сертификата (sha1)
Пример
1
2
3
import { CryptoPro } from 'ecosoft-lexema8'
const certificates = await CryptoPro.findCertificates()
console.log(certificates)

sign#

Подписать данные (подпись в формате cms).

Метод принимает объект со свойствами:

  • thumbprint - thumbprint сертификата.
  • dataBase64 - данные для подписи в кодировке base64.
  • files - массив файлов для подписания в кодировке base64.
  • signatureType - тип подписи (по умолчанию 'CMS'). Доступные значения: 'CMS', 'CAdES-BES', 'CAdES-T', 'CAdES-A'.
  • tsaUrl - адрес службы штампов времени. Используется для CAdES-T', CAdES-A подписи.
  • autoDestroy - если true, то автоматически удаляет объекты, созданные плагином (по умолчанию false). Если false, то удаление нужно вызывать вручную методом clearMemory.
  • checkCertificate - проверка сертификата (по умолчанию true - включено).

Возвращает Promise, результатом которого будет подпись (если передать dataBase64), либо массив (если передать files) подписей (cms) в кодировке base64.

Пример
1
2
3
4
5
6
import { CryptoPro } from 'ecosoft-lexema8'
const signature = await CryptoPro.sign({
  thumbprint: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  dataBase64: 'dGVzdA=='
})
console.log(signature)

signXml#

Подписать XML.

Метод принимает объект со свойствами:

  • thumbprint - thumbprint сертификата.
  • files - массив строк в формате XML для подписания.
  • autoDestroy - если true, то автоматически удаляет объекты, созданные плагином (по умолчанию false). Если false, то удаление нужно вызывать вручную методом clearMemory.
  • checkCertificate - проверка сертификата (по умолчанию true - включено).

Возвращает Promise, результатом которого будет массив исходных строк в формате XML со встроенной подписью.

Пример
1
2
3
4
5
6
import { CryptoPro } from 'ecosoft-lexema8'
const result = await CryptoPro.signXml({
  thumbprint: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  files: [file1, file2]
})
console.log(result)

enhanceCades#

Для подписи CAdES-A добавляет новый архивный штамп времени (перештамповка) для продления срока ее архивного хранения.

Метод принимает объект со свойствами:

  • signatureBase64 - CAdES-A подпись в кодировке base64.
  • dataBase64 - исходные данные, которые были подписаны в кодировке base64.
  • tsaUrl - адрес службы штампов времени.

Возвращает Promise, результатом которого будет подпись в кодировке base64.

clearMemory#

Очищает память от объектов, созданных плагином.

Возвращает Promise.

verify#

Проверка подписи.

Метод принимает объект со свойствами:

  • signatureBase64 - подпись (cms) в кодировке base64.
  • dataBase64 - проверяемые данные в кодировке base64.
  • signatureType - тип подписи (по умолчанию 'CMS'). Доступные значения: 'CMS', 'CAdES-BES', 'CAdES-T', 'CAdES-A'.

Возвращает Promise, результатом которого будет true, если подпись действительна, либо false, если подпись недействительна.

Пример
1
2
3
4
5
6
import { CryptoPro } from 'ecosoft-lexema8'
const result = await CryptoPro.verify({
  signatureBase64: 'c2lnbmF0dXJl',
  dataBase64: 'dGVzdA=='
})
console.log(result)

verifyXml#

Проверка подписи.

Метод принимает объект со свойствами:

  • file - строка в формате XML со встроенной подписью.

Возвращает Promise, результатом которого будет true, если подпись действительна, либо false, если подпись недействительна.

Пример
1
2
3
4
5
import { CryptoPro } from 'ecosoft-lexema8'
const result = await CryptoPro.verifyXml({
  file: file1
})
console.log(result)

checkPlugin#

Проверяет доступность плагина.

Возвращает Promise, результатом которого будет объект со свойствами:

  • ready - если true, то есть доступ, если false, то нет доступа.
  • error - описание ошибки, если ready = false, если ready = true, то error = undefined
Пример
1
2
3
import { CryptoPro } from 'ecosoft-lexema8'
const result = await CryptoPro.checkPlugin()
console.log(result)

checkCsp#

Проверяет доступность КриптоПро CSP.

Возвращает Promise, результатом которого будет объект со свойствами:

  • ready - если true, то есть доступ, если false, то нет доступа.
  • error - описание ошибки, если ready = false, если ready = true, то error = undefined
Пример
1
2
3
import { CryptoPro } from 'ecosoft-lexema8'
const result = await CryptoPro.checkCsp()
console.log(result)

checkTspLicense#

Проверяет лицензию КриптоПро TSP Client.

Возвращает Promise, результатом которого будет объект со свойствами:

  • licType - Возвращает информацию о типе лицензии продукта КриптоПро.
  • validTo - Возвращает информацию о сроке действия лицензии продукта КриптоПро.
  • serialNumber - Возвращает информацию о серийном номере лицензии продукта КриптоПро.
Пример
1
2
3
import { CryptoPro } from 'ecosoft-lexema8'
const result = await CryptoPro.checkTspLicense()
console.log(result)

checkOcspLicense#

Проверяет лицензию КриптоПро OCSP Client.

Возвращает Promise, результатом которого будет объект со свойствами:

  • licType - Возвращает информацию о типе лицензии продукта КриптоПро.
  • validTo - Возвращает информацию о сроке действия лицензии продукта КриптоПро.
  • serialNumber - Возвращает информацию о серийном номере лицензии продукта КриптоПро.
Пример
1
2
3
import { CryptoPro } from 'ecosoft-lexema8'
const result = await CryptoPro.checkOcspLicense()
console.log(result)