1.0.10 • Published 4 years ago

@archivesystems/cryptopro v1.0.10

Weekly downloads
1
License
UNLICENSED
Repository
-
Last release
4 years ago

Простой интерфейс для КриптоПро ЭЦП Browser plug-in.

Установка

Требует cadesplugin_api.js. Скачать его можно по ссылке: https://www.cryptopro.ru/sites/default/files/products/cades/cadesplugin_api.js. После подключения cadesplugin_api.js появляется объект window.cadesplugin.

npm install @archivesystems/cryptopro

Использование

import {
  getCertificates,
  getPlugin,
  signCadesBES,
} from '@archivesystems/cryptopro';

const plugin = await getPlugin();
const certificates = await getCertificates(plugin);

if (certificates.length > 0) {
  const data = 'Hello world';
  const signature = await signCadesBES(
    plugin,
    certificates[0],
    data,
    'Document name'
  );
  console.log(signature);
} else {
  console.log('No certificates found');
}

Подпись результата хэш-функции:

import {
  getCertificates,
  getPlugin,
  HashAlgorithm,
  signHash,
} from '@archivesystems/cryptopro';

const plugin = await getPlugin();
const certificates = await getCertificates(plugin);

const hash = '12A50838191B5504F1E5F2FD078714CF6B592B9D29AF99D0B10D8D02881C3857';
const algorithm = HashAlgorithm.CP_GOST_3411_2012_256;

if (certificates.length > 0) {
  const data = 'Hello world';
  const signature = await signHash(
    plugin,
    certificates[0],
    hash,
    algorithm,
    'Document name'
  );
  console.log(signature);
} else {
  console.log('No certificates found');
}

В современных браузерах используются промисы, в Internet Explorer — синхронное выполнение (работа с плагином через NPAPI). Часть методов (например, пример выше) работает одинаково во всех браузерах. Но свойства и методы классов Plugin, Certificate, Signer могут работать по-разному. Например:

import {
  createObject,
  getCertificates,
  getPlugin,
  ObjectType,
  Signer,
} from '@archivesystems/cryptopro';

const plugin = await getPlugin();
const certificates = await getCertificates(plugin);

const signer = await createObject<Signer>(plugin, ObjectType.Signer);

if (signer.propset_Certificate) {
  // Chrome и т. п.
  await signer.propset_Certificate(certificates[0]);
} else {
  // IE и т. п.
  signer.Certificate = certificates[0];
}
1.0.10

4 years ago

1.0.9

4 years ago

1.0.8

4 years ago

1.0.7

4 years ago

1.0.6

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago