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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Shrike  
#1 Оставлено : 2 августа 2011 г. 21:34:37(UTC)
Shrike

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

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

Пытаюсь создать ЭЦП для данных. Примерный код:
Код:

			CspParameters cp = new CspParameters();
			cp.KeyContainerName = "MyContainer";
			cp.ProviderType = 75;
			var gost = new Gost3410CryptoServiceProvider(cp) {PersistKeyInCsp = true};

			var data = File.ReadAllBytes("c:\myfile.dat");
			var gostHash = new Gost3411CryptoServiceProvider();
			byte[] hashValue = gostHash.ComputeHash(data);

			var signFormatter = new GostSignatureFormatter(csp);
			byte[] signature = signFormatter.CreateSignature(hashValue);

При вызове CreateSignature я получаю:
CryptographicUnexpectedOperationException: "Required object identifier (OID) cannot be found."

Очевидно срабатывает проверка в начале метода GostSignatureFormatter.CreateSignature на то, что "oid_ == null".
Идентификатор инициализируется в конструкторе GostSignatureFormatter как:
oid_ = CryptoConfig.MapNameToOID("GOST3410")

Выполнив это, я действительно получаю null.

Что я делаю не так?
Вложение(я):
osinfo.xml (57kb) загружен 21 раз(а).
osinfo.xml (56kb) загружен 9 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline Павел Смирнов  
#2 Оставлено : 4 августа 2011 г. 13:46:34(UTC)
Павел Смирнов

Статус: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
Проверьте, работает ли Sharpei вообще. См. вопрос Почему не работает КриптоПро Sharpei в данной теме.
Техническую поддержку оказываем тут.
Наша база знаний.
Offline Shrike  
#3 Оставлено : 4 августа 2011 г. 16:52:57(UTC)
Shrike

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

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

Смирнов написал:
Проверьте, работает ли Sharpei вообще. См. вопрос Почему не работает КриптоПро Sharpei в данной теме.


Работает. Я могу подписывать/зашифровывать, т.е. это работает:
Код:

var sign = csp.SignHash(hashValue)
csp.VerifyHash(hashValue,sign )


Заодно вопрос - зачем нужны GostSignatureFormatter/GostSignatureDeformatter? Ведь подписывать/проверять хэш можно методами Gost3410CryptoServiceProvider.
В реализации GostSignatureFormatter.CreateSignature я увидел только то, что хэшу делает реверс.


UPDATE:
хотя возможно я поторопился говорить, что "работает".
При попытке получить Gost3410CryptoServiceProvider из сертификата, сгенерированного с помощью csptest.exe (с параметрами: "-keyset -newkeyset -makecert -container test -keytype exchange -exportable"), я получаю исключение:
Код:

var csp = X509Certificate2PrivateKey;

Исключение:
Can't get PrivateKey from the certificate: System.NotSupportedException: The certificate key algorithm is not supported.
at System.Security.Cryptography.X509Certificates.X509Certificate2.get_PrivateKey()

Отредактировано пользователем 4 августа 2011 г. 17:13:49(UTC)  | Причина: Не указана

Offline Павел Смирнов  
#4 Оставлено : 4 августа 2011 г. 18:50:11(UTC)
Павел Смирнов

Статус: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
Shrike написал:
Работает. Я могу подписывать/зашифровывать, т.е. это работает:
Код:

var sign = csp.SignHash(hashValue)
csp.VerifyHash(hashValue,sign )

Этого мало. Работает ли код и пример по ссылке, приведённой мной выше?

Shrike написал:
Заодно вопрос - зачем нужны GostSignatureFormatter/GostSignatureDeformatter? Ведь подписывать/проверять хэш можно методами Gost3410CryptoServiceProvider.
В реализации GostSignatureFormatter.CreateSignature я увидел только то, что хэшу делает реверс.

В "обычной жизни" они не нужны. Зато, например, класс SignedXml по названию метода подписи автоматически получает правильный объект SignatureDescription и делает (и проверяет) правильную подпись XMLDSIG по ГОСТ Р 34.10-2001.
Техническую поддержку оказываем тут.
Наша база знаний.
Offline Павел Смирнов  
#5 Оставлено : 4 августа 2011 г. 18:51:22(UTC)
Павел Смирнов

Статус: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
Shrike написал:
Исключение:
Can't get PrivateKey from the certificate: System.NotSupportedException: The certificate key algorithm is not supported.
at System.Security.Cryptography.X509Certificates.X509Certificate2.get_PrivateKey()

Значит, есть проблемы. Продолжайте по той же инструкции.
Техническую поддержку оказываем тут.
Наша база знаний.
Offline Shrike  
#6 Оставлено : 4 августа 2011 г. 18:53:40(UTC)
Shrike

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

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

Смирнов написал:
Shrike написал:
Исключение:
Can't get PrivateKey from the certificate: System.NotSupportedException: The certificate key algorithm is not supported.
at System.Security.Cryptography.X509Certificates.X509Certificate2.get_PrivateKey()

Значит, есть проблемы. Продолжайте по той же инструкции.


Да, есть. Я приложил osinfo.xml к первому сообщению.
Offline Shrike  
#7 Оставлено : 4 августа 2011 г. 19:02:37(UTC)
Shrike

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

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

Цитата:
Shrike написал:
Заодно вопрос - зачем нужны GostSignatureFormatter/GostSignatureDeformatter? Ведь подписывать/проверять хэш можно методами Gost3410CryptoServiceProvider.
В реализации GostSignatureFormatter.CreateSignature я увидел только то, что хэшу делает реверс.

В "обычной жизни" они не нужны. Зато, например, класс SignedXml по названию метода подписи автоматически получает правильный объект SignatureDescription и делает (и проверяет) правильную подпись XMLDSIG по ГОСТ Р 34.10-2001.


А разве подпись создаваемая методами Gost3410CryptoServiceProvider SignHash/CreateSignature не по ГОСТ Р 34.10-2001?
Кстати, неплохо бы отразить в документации, что CreateSignature просто вызывает SignHash.
Offline Павел Смирнов  
#8 Оставлено : 4 августа 2011 г. 19:26:35(UTC)
Павел Смирнов

Статус: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
Shrike написал:
Да, есть. Я приложил osinfo.xml к первому сообщению.

В журнале много ошибок. Sharpei установлен некорректно. Попробуйте переустановить.
Техническую поддержку оказываем тут.
Наша база знаний.
Offline Павел Смирнов  
#9 Оставлено : 4 августа 2011 г. 19:29:34(UTC)
Павел Смирнов

Статус: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
Shrike написал:
А разве подпись создаваемая методами Gost3410CryptoServiceProvider SignHash/CreateSignature не по ГОСТ Р 34.10-2001?

По ГОСТ, но для XMLDSIG требуется специальная обработка. Для этого и придуманы Formatter/Deformatter. Для ГОСТ в XMLDSIG необходимо перевернуть подпись, возвращаемую из SignHash.

Shrike написал:
Кстати, неплохо бы отразить в документации, что CreateSignature просто вызывает SignHash.

Зачем? Метод форматирования не должен быть прозрачен и документирован для пользователя.
Техническую поддержку оказываем тут.
Наша база знаний.
Offline Shrike  
#10 Оставлено : 4 августа 2011 г. 20:04:42(UTC)
Shrike

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

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

Смирнов написал:
Shrike написал:
Да, есть. Я приложил osinfo.xml к первому сообщению.

В журнале много ошибок. Sharpei установлен некорректно. Попробуйте переустановить.

Удалил, перегрузился, скачал последние RTE&SDK, поставил, перегрузился. Результат тот же. Куда бежать?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.