@archivesystems/cryptopro
v1.0.10
Published
Простой интерфейс для [КриптоПро ЭЦП Browser plug-in](https://www.cryptopro.ru/products/cades/plugin).
Downloads
18
Readme
Простой интерфейс для КриптоПро ЭЦП 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];
}