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

Уведомление

Icon
Error

3 Страницы<123
Опции
К последнему сообщению К первому непрочитанному
Offline Михаил AAAAAA  
#21 Оставлено : 13 мая 2022 г. 12:23:07(UTC)
Михаил AAAAAA

Статус: Новичок

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

Браузер: Версия 101.0.4951.64 (Официальная сборка), (64 бит)
Версия плагина: 2.0.14530
Криптопровайдер: Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider
Версия криптопровайдера: 4.0.9963

Информация о сертификате
Криптопровайдер: Microsoft Enhanced Cryptographic Provider v1.0
Алгоритм ключа: RSA
Статус: Действителен
Установлен в хранилище: Да
Информация о публичном ключе:
Algorithm: "1.2.840.113549.1.1.1" ("RSA")
Length: 2048 bit

При тестировании на https://www.cryptopro.ru...page/cades_bes_file.html с этим сертификатом в полученной подписи алгоритм хэширования данных - sha1.
Я понимаю, что для ГОСТ алгоритмов нежелательно (а может и нельзя) использовать предварительное хэширование, поэтому для этого варианта работает код:
Код:

//_content - данные, закодированные в base64
var oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
yield oSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY);
yield oSignedData.propset_Content(_content);
var sign = yield oSignedData.SignCades(oSigner, cadesplugin.CADESCOM_PKCS7_TYPE, true);

Результат - подпись формируется, работает как с ГОСТ, так и другими алгоритмами в зависимости от данных в сертификате. Есть одно но с нашим "RSA сертификатом" - в информации о подписи алгоритм хэширования данных при подписании использовался SHA1, что является не надежным. Поэтому для этого случая отдельно формируем объект CAdESCOM.HashedData с алгоритмом CADESCOM_HASH_ALGORITHM_SHA_256, который в последствии поступает в SignHash.
Есть предположение, что SignHash смотрит на алгоритм публичного ключа сертификата, видит "1.2.840.113549.1.1.1", на основании этого выбирает допустимый алгоритм хэширования только sha1, видит несоотвествие поступившего хэша sha256 с допустимыми и поэтому выдает ошибку "Указан неправильный алгоритм (0x80090008)". Для правильной работы SignHash с алгоритмом подписи RSA нужно убрать жесткий контроль алгоритма хэширования или расширить список допустимых.

Отредактировано пользователем 13 мая 2022 г. 12:29:07(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
3 Страницы<123
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.