Форум КриптоПро
	 » 
	Средства криптографической защиты информации
	 » 
	КриптоПро .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