Статус: Участник
Группы: Участники
Зарегистрирован: 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
Буду благодарен, если подскажите, как починить код. Спасибо
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 395 раз в 366 постах
|
Добрый день. По одной строке сложно сказать что еще нужно чинить в коде. С C# я примерно также, но скорее всего Вам не нужно "дербанить" то что уже получили - просто используйте сам certificate или certificate.PrivateKey (смотря что по смыслу подходит) далее в программе. В чем может быть проблема - Криптопро возвращает экземпляр privatekey привязанный к Криптопро и не содержащий реального закрытого ключа, вместо реального ключа там временный идентификатор. По требованиям сертификации нужно чтобы реальный закрытый ключ не покидал контейнер и не хранился в открытом виде. Это нормально: потом при подписании или другой операции боунтикасл все равно передаст этот идентификатор-ключ "по месту привязки", то есть обратно в Криптопро и Криптопро по идентификатору и табличке связывающей идентификатор с контейнерами найдет реальный закрытый ключ в контейнере. Однако если Вы попробуете идентификатор-ключ обработать чем-то кроме криптопро, то ничего хорошего не выйдет - реального закрытого ключа там нет и ключевую пару не получите. Аналогично при работе с продуктами КриптоПро нельзя выгрузить реальный закрытый ключ куда-либо в открытом виде (не считая утилит самого Криптопро, экспортирующих в pfx и копирования самого контейнера - там ключ зашифрован) или загрузить закрытый ключ не из контейнера. Отредактировано пользователем 27 апреля 2020 г. 10:04:23(UTC)
| Причина: Не указана
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 26.04.2020(UTC) Сообщений: 10 Откуда: Муром
Сказал(а) «Спасибо»: 1 раз
|
Автор: two_oceans Добрый день. По одной строке сложно сказать что еще нужно чинить в коде. С C# я примерно также, но скорее всего Вам не нужно "дербанить" то что уже получили - просто используйте сам certificate или certificate.PrivateKey (смотря что по смыслу подходит) далее в программе.
В чем может быть проблема - Криптопро возвращает экземпляр privatekey привязанный к Криптопро и не содержащий реального закрытого ключа, вместо реального ключа там временный идентификатор. По требованиям сертификации нужно чтобы реальный закрытый ключ не покидал контейнер и не хранился в открытом виде.
Это нормально: потом при подписании или другой операции боунтикасл все равно передаст этот идентификатор-ключ "по месту привязки", то есть обратно в Криптопро и Криптопро по идентификатору и табличке связывающей идентификатор с контейнерами найдет реальный закрытый ключ в контейнере.
Однако если Вы попробуете идентификатор-ключ обработать чем-то кроме криптопро, то ничего хорошего не выйдет - реального закрытого ключа там нет и ключевую пару не получите. Аналогично при работе с продуктами КриптоПро нельзя выгрузить реальный закрытый ключ куда-либо в открытом виде (не считая утилит самого Криптопро, экспортирующих в pfx и копирования самого контейнера - там ключ зашифрован) или загрузить закрытый ключ не из контейнера. Добрый день, сертификат дальше не дербаним, просто Private Key нужно перегнать из System.x509 в bouncyCastle.x509, т.к. код от iText обрабатывает именно такой формат.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close