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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline benchstyle  
#1 Оставлено : 26 апреля 2020 г. 16:38:25(UTC)
benchstyle

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

Группы: Участники
Зарегистрирован: 26.04.2020(UTC)
Сообщений: 10
Откуда: Муром

Сказал(а) «Спасибо»: 1 раз
Добрый день, есть задача подписывать документы через ЭЦП и ставить штампик с реквизитами подписи на базе Gost3410_2012_256 в C#.
С c# на Вы, пытаюсь собрать Франкештейна на основе примеров от КриптоПро и iText7. Проблема в том, что никак не могу подружить X509, которые используются в примерах КриптоПро и bouncyCastle от iText.

Цитата:


ICipherParameters pk = Org.BouncyCastle.Security.DotNetUtilities.GetKeyPair(certificate.PrivateKey).Private;

System.ArgumentException
HResult=0x80070057
Сообщение = Unsupported algorithm specified
Имя параметра: privateKey
Источник = BouncyCastle.Crypto
Трассировка стека:
в Org.BouncyCastle.Security.DotNetUtilities.GetKeyPair(AsymmetricAlgorithm privateKey) в D:\a\1\s\crypto\src\security\DotNetUtilities.cs:строка 152
в Рабочий_сертификат.Program.Main() в C:\Users\IRON\source\repos\Рабочий сертификат\Рабочий сертификат\Program.cs:строка 87


Буду благодарен, если подскажите, как починить код. Спасибо
Offline two_oceans  
#2 Оставлено : 27 апреля 2020 г. 9:55:58(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,403
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 95 раз
Поблагодарили: 340 раз в 320 постах
Добрый день. По одной строке сложно сказать что еще нужно чинить в коде. С C# я примерно также, но скорее всего Вам не нужно "дербанить" то что уже получили - просто используйте сам certificate или certificate.PrivateKey (смотря что по смыслу подходит) далее в программе.

В чем может быть проблема - Криптопро возвращает экземпляр privatekey привязанный к Криптопро и не содержащий реального закрытого ключа, вместо реального ключа там временный идентификатор. По требованиям сертификации нужно чтобы реальный закрытый ключ не покидал контейнер и не хранился в открытом виде.

Это нормально: потом при подписании или другой операции боунтикасл все равно передаст этот идентификатор-ключ "по месту привязки", то есть обратно в Криптопро и Криптопро по идентификатору и табличке связывающей идентификатор с контейнерами найдет реальный закрытый ключ в контейнере.

Однако если Вы попробуете идентификатор-ключ обработать чем-то кроме криптопро, то ничего хорошего не выйдет - реального закрытого ключа там нет и ключевую пару не получите. Аналогично при работе с продуктами КриптоПро нельзя выгрузить реальный закрытый ключ куда-либо в открытом виде (не считая утилит самого Криптопро, экспортирующих в pfx и копирования самого контейнера - там ключ зашифрован) или загрузить закрытый ключ не из контейнера.

Отредактировано пользователем 27 апреля 2020 г. 10:04:23(UTC)  | Причина: Не указана

Offline benchstyle  
#3 Оставлено : 27 апреля 2020 г. 15:51:17(UTC)
benchstyle

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

Группы: Участники
Зарегистрирован: 26.04.2020(UTC)
Сообщений: 10
Откуда: Муром

Сказал(а) «Спасибо»: 1 раз
Автор: two_oceans Перейти к цитате
Добрый день. По одной строке сложно сказать что еще нужно чинить в коде. С C# я примерно также, но скорее всего Вам не нужно "дербанить" то что уже получили - просто используйте сам certificate или certificate.PrivateKey (смотря что по смыслу подходит) далее в программе.

В чем может быть проблема - Криптопро возвращает экземпляр privatekey привязанный к Криптопро и не содержащий реального закрытого ключа, вместо реального ключа там временный идентификатор. По требованиям сертификации нужно чтобы реальный закрытый ключ не покидал контейнер и не хранился в открытом виде.

Это нормально: потом при подписании или другой операции боунтикасл все равно передаст этот идентификатор-ключ "по месту привязки", то есть обратно в Криптопро и Криптопро по идентификатору и табличке связывающей идентификатор с контейнерами найдет реальный закрытый ключ в контейнере.

Однако если Вы попробуете идентификатор-ключ обработать чем-то кроме криптопро, то ничего хорошего не выйдет - реального закрытого ключа там нет и ключевую пару не получите. Аналогично при работе с продуктами КриптоПро нельзя выгрузить реальный закрытый ключ куда-либо в открытом виде (не считая утилит самого Криптопро, экспортирующих в pfx и копирования самого контейнера - там ключ зашифрован) или загрузить закрытый ключ не из контейнера.



Добрый день, сертификат дальше не дербаним, просто Private Key нужно перегнать из System.x509 в bouncyCastle.x509, т.к. код от iText обрабатывает именно такой формат.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.