Как сделать Detached GOST R 34.10 CMS подпись на Node.js? Собственно вопрос: как сделать CMS подпись в Node.js?
Есть КриптоПРОшный ключ экспортированный в формат PKCS#12. Подпись необходима для протокола OAuth2 для ЕСИА, и хочется обойтись без КриптоПРО.
Openssl: GOST2001-GOST89-GOST89, GOST94-GOST89-GOST89
crypto.getCiphers: GOST 28147-89, gost89, gost89-cnt

21 Авг 2019 в 07:13
302 +1
0
Ответы
1

Для создания Detached GOST R 34.10 CMS подписи на Node.js, вы можете воспользоваться библиотекой node-forge, которая поддерживает работу с CMS. Вот пример кода, который показывает как создать подпись с использованием node-forge:

const forge = require('node-forge');
// Загрузка закрытого ключа из PKCS#12 файла
const p12File = fs.readFileSync('path/to/pkcs12/file.p12', 'binary');
const p12Asn1 = forge.asn1.fromDer(p12File);
const p12 = forge.pkcs12.pkcs12FromAsn1(p12Asn1, false, 'password');
const key = p12.getBags({bagType: forge.pki.oids.pkcs8ShroudedKeyBag})[forge.pki.oids.pkcs8ShroudedKeyBag][0];
// Создание подписи
const md = forge.md.sha256.create();
const content = forge.util.createBuffer('Your data to sign');
const signed = forge.pkcs7.createSignedData();
signed.content = forge.util.createBuffer(content.getBytes());
signed.addCertificate(p12.getBags({bagType: forge.pki.oids.certBag})[forge.pki.oids.certBag][0]);
signed.addSigner({
key: key.key,
certificate: p12.getBags({bagType: forge.pki.oids.certBag})[forge.pki.oids.certBag][0],
digestAlgorithm: forge.pki.oids.sha1
});
signed.sign();
const signedData = signed.toDer();

Обратите внимание, что этот код является примером и нужно будет настроить параметры под ваш ключ и данные. Также убедитесь, что у вас установлена и настроена библиотека node-forge перед использованием этого кода.

20 Апр в 13:05
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 548 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир