Форум КриптоПро
	 » 
	Средства криптографической защиты информации
	 » 
	КриптоПро .NET
	 » 
	CryptographicUnexpectedOperationException при использовании GostSignatureFormatter
	 
	
        
            
            
    | 
	Статус: Участник
 Группы: Участники
Зарегистрирован: 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 раз(а).У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться. | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Вам и не снилось
 Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
 Сообщений: 831
 Откуда: Крипто-Про
 
 Сказал(а) «Спасибо»: 1 разПоблагодарили: 48 раз в 44 постах
 
 | 
            
		      
                Проверьте, работает ли Sharpei вообще. См. вопрос Почему не работает КриптоПро Sharpei  в данной теме . | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Участник
 Группы: Участники
Зарегистрирован: 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)
 | Причина: Не указана | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Вам и не снилось
 Группы: Администраторы
Зарегистрирован: 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. | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Вам и не снилось
 Группы: Администраторы
Зарегистрирован: 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()
 
 Значит, есть проблемы. Продолжайте по той же инструкции. | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Участник
 Группы: Участники
Зарегистрирован: 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 к первому сообщению. | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Участник
 Группы: Участники
Зарегистрирован: 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.  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Вам и не снилось
 Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
 Сообщений: 831
 Откуда: Крипто-Про
 
 Сказал(а) «Спасибо»: 1 разПоблагодарили: 48 раз в 44 постах
 
 | 
            
		      
                Shrike написал:Да, есть. Я приложил osinfo.xml к первому сообщению. В журнале много ошибок. Sharpei установлен некорректно. Попробуйте переустановить. | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Вам и не снилось
 Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
 Сообщений: 831
 Откуда: Крипто-Про
 
 Сказал(а) «Спасибо»: 1 разПоблагодарили: 48 раз в 44 постах
 
 | 
            
		      
                Shrike написал:А разве подпись создаваемая методами Gost3410CryptoServiceProvider SignHash/CreateSignature не по ГОСТ Р 34.10-2001? По ГОСТ, но для XMLDSIG требуется специальная обработка. Для этого и придуманы Formatter/Deformatter. Для ГОСТ в XMLDSIG необходимо перевернуть подпись, возвращаемую из SignHash. Shrike написал:Кстати, неплохо бы отразить в документации, что CreateSignature просто вызывает SignHash.  Зачем? Метод форматирования не должен быть прозрачен и документирован для пользователя. | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Участник
 Группы: Участники
Зарегистрирован: 18.05.2011(UTC)
 Сообщений: 24
 Откуда: Moscow
 
 | 
            
		      
                Смирнов написал:Shrike написал:Да, есть. Я приложил osinfo.xml к первому сообщению. В журнале много ошибок. Sharpei установлен некорректно. Попробуйте переустановить. Удалил, перегрузился, скачал последние RTE&SDK, поставил, перегрузился. Результат тот же. Куда бежать? | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
	                           
	Форум КриптоПро
	 » 
	Средства криптографической защиты информации
	 » 
	КриптоПро .NET
	 » 
	CryptographicUnexpectedOperationException при использовании GostSignatureFormatter
	 
	
    
        Быстрый переход
         
	
    
    Вы не можете создавать новые темы в этом форуме.
	
	Вы не можете отвечать в этом форуме.
	
	Вы не можете удалять Ваши сообщения в этом форуме.
	
	Вы не можете редактировать Ваши сообщения в этом форуме.
	
	Вы не можете создавать опросы в этом форуме.
	
	Вы не можете голосовать в этом форуме.
	
	
    
    
        Important Information:
        The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
        
        
More Details
        Close