Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Mogaba  
#1 Оставлено : 8 августа 2025 г. 12:45:14(UTC)
Mogaba

Статус: Участник

Группы: Участники
Зарегистрирован: 03.10.2023(UTC)
Сообщений: 18
Российская Федерация

Здравствуйте,

для работы с КриптоПро в JavaScript обязательно наличие браузерного расширения? У меня приложение на Electron, там с расширениями тяжело работать. Подписывать не требуется, нужно только вытаскивать информацию о сертификате из подписанных файлов.
Offline Андрей *  
#2 Оставлено : 8 августа 2025 г. 13:00:47(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,869
Мужчина
Российская Федерация

Сказал «Спасибо»: 588 раз
Поблагодарили: 2322 раз в 1820 постах
Автор: Mogaba Перейти к цитате
Здравствуйте,

для работы с КриптоПро в JavaScript обязательно наличие браузерного расширения? У меня приложение на Electron, там с расширениями тяжело работать. Подписывать не требуется, нужно только вытаскивать информацию о сертификате из подписанных файлов.


Здравствуйте.

Тогда парсинг asn1 на js подключать и показывать необходимые сведения.
Либо на сервере реализовать необходимое, а на сторону клиента выдавать в каком-либо формате (json) для js?

как пример на js (универсальный) https://lapo.it/asn1js/
Техническую поддержку оказываем тут
Наша база знаний
Offline Mogaba  
#3 Оставлено : 8 августа 2025 г. 16:33:27(UTC)
Mogaba

Статус: Участник

Группы: Участники
Зарегистрирован: 03.10.2023(UTC)
Сообщений: 18
Российская Федерация

Сделал с помощью библиотеки pkijs, вот пример для открепленной подписи:

Код:
import * as pkijs from 'pkijs';
import * as fs from 'node:fs';

const buf = fs.readFileSync('sign.pdf.p7s');
const pkiObj = pkijs.ContentInfo.fromBER(buf);
const signedData = new pkijs.SignedData({ schema: pkiObj.content });
const cert = signedData.certificates[0];

let cn;

for (const tav of cert.subject.typesAndValues) {
    // Common name
    if (tav.type === '2.5.4.3') {
        cn = tav.value.valueBlock.value;
        break;
    }
}

const fromDate = new Date(cert.notBefore.value).toLocaleDateString();
const toDate = new Date(cert.notAfter.value).toLocaleDateString();
const serialArray = cert.serialNumber.valueBlock.valueHexView;
const serial = Buffer.from(serialArray).toString('hex');

console.log(cn);
console.log(fromDate);
console.log(toDate);
console.log(serial);
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (3)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.