| 
	Статус: Активный участник
 Группы: Участники
 Зарегистрирован: 22.01.2008(UTC) Сообщений: 675   Откуда: Йошкар-ОлаСказал «Спасибо»: 3 разПоблагодарили: 95 раз в 68 постах
 
 | 
            
		      
                Во-первых возможно у вас неточность в документации: для функции CryptDecodeObject  есть поддержка параметра PKCS7_SIGNER_INFO, а для CryptEncodeObject  - нет. Во-вторых когда я пытаюсь получить результат от CryptEncodeObject( ...PKCS7_SIGNER_INFO... ), то получаю странную ошибку 0x80092002 (Ошибка при шифровании или расшифровывании).  Учитывая то, что "AuthAttrs" и "EncryptedHash" у структуры CMSG_SIGNER_INFO заполнены, никакого шифрования там быть не должно. P.S.: Да и вообще там никакого шифрования быть не должно - это функция простого кодирования структур в ASN.1 и более ничего там быть не должно. Отредактировано пользователем 1 июля 2013 г. 6:21:53(UTC)
 | Причина: добавил P.S. | 
| С уважением, Юрий Строжевский
 | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Активный участник
 Группы: Участники
 Зарегистрирован: 22.01.2008(UTC) Сообщений: 675   Откуда: Йошкар-ОлаСказал «Спасибо»: 3 разПоблагодарили: 95 раз в 68 постах
 
 | 
            
		      
                Мда, точно такая же ошибка при использовании CryptEncodeObject( ...X509_ALGORITHM_IDENTIFIER... ) с "HashEncryptionAlgorithm" из CMSG_SIGNER_INFO. | 
| С уважением, Юрий Строжевский
 | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Сотрудник
 Группы: Администраторы
 Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,417  Откуда: КРИПТО-ПРОСказал «Спасибо»: 37 разПоблагодарили: 729 раз в 630 постах
 
 | 
            
		      
                Спасибо, посмотрим, поправим. | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Сотрудник
 Группы: Администраторы, УчастникиЗарегистрирован: 24.11.2009(UTC)
 Сообщений: 965
 Откуда: Crypto-Pro
 
 Сказал(а) «Спасибо»: 3 разПоблагодарили: 174 раз в 152 постах
 
 | 
            
		      
                Цитата:Во-первых возможно у вас неточность в документации: для функции CryptDecodeObject есть поддержка параметра PKCS7_SIGNER_INFO, а для CryptEncodeObject - нет.
 Во-вторых когда я пытаюсь получить результат от CryptEncodeObject( ...PKCS7_SIGNER_INFO... ), то получаю странную ошибку 0x80092002 (Ошибка при шифровании или расшифровывании).
 Учитывая то, что "AuthAttrs" и "EncryptedHash" у структуры CMSG_SIGNER_INFO заполнены, никакого шифрования там быть не должно.
 
 P.S.: Да и вообще там никакого шифрования быть не должно - это функция простого кодирования структур в ASN.1 и более ничего там быть не должно.
 Нет, в документации написано правильно.  Насчет кода ошибки, это ошибка перевода в русской версии Win. Оригинал выглядит так Цитата:/*  An error occurred during encode or decode operation.*/
 /**/
 #define CRYPT_E_BAD_ENCODE               _HRESULT_TYPEDEF_(0x80092002L)
 
 | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Активный участник
 Группы: Участники
 Зарегистрирован: 22.01.2008(UTC) Сообщений: 675   Откуда: Йошкар-ОлаСказал «Спасибо»: 3 разПоблагодарили: 95 раз в 68 постах
 
 | 
            
		      
                Ладно, пусть так. Спасибо за информацию!Всё-равно я уже сделал собственную функцию кодирования SignerInfo.
 | 
| С уважением, Юрий Строжевский
 | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Участник
 Группы: Участники
Зарегистрирован: 06.09.2013(UTC)
 Сообщений: 14
 
 | 
            
		      
                Такая же ошибка возникает. Как исправить? Код:
CMSG_SIGNER_INFO  signer;
signer.Issuer = pCertcontext->pCertInfo->Issuer;
signer.SerialNumber = pCertcontext->pCertInfo->SerialNumber;
signer.EncryptedHash.pbData= pbHash;
signer.EncryptedHash.cbData = cbHash;
signer.AuthAttrs.cAttr = 0;
signer.AuthAttrs.rgAttr = nil;
signer.UnauthAttrs.cAttr = 0;
signer.UnauthAttrs.rgAttr = nil;
DWORD sizePKCS = 0;
BYTE *signaturePKCS = 0;
if (!CryptEncodeObject(
		PKCS_7_ASN_ENCODING,
		PKCS7_SIGNER_INFO,
		&signer,
		NULL,
		&sizePKCS)) {
	printf("Error CryptEncodeObject() = 0x%x\n", CSP_GetLastError());
}
signaturePKCS = (BYTE *) malloc(sizePKCS);
if (!CryptEncodeObject(
		PKCS_7_ASN_ENCODING,
		PKCS7_SIGNER_INFO,
		&signer,
		signaturePKCS,
		&sizePKCS)) {
	printf("Error CryptEncodeObject() = %d\n", CSP_GetLastError());
}
 Отредактировано пользователем 13 января 2014 г. 4:05:01(UTC)
 | Причина: Не указана | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Активный участник
 Группы: Участники
 Зарегистрирован: 22.01.2008(UTC) Сообщений: 675   Откуда: Йошкар-ОлаСказал «Спасибо»: 3 разПоблагодарили: 95 раз в 68 постах
 
 | 
            
		      
                Автор: Миха  Такая же ошибка возникает. Как исправить? Для Linux функция CryptEncodeObject реализована самими разработчиками компании "Крипто-Про". И для этой функции эти разработчики убрали кодирование PKCS7_SIGNER_INFO. Нет его. И это прописано в документации. Так что есть два выхода: 1) Ждать пока разработчики "Крипто-Про" доработают CryptEncodeObject; 2) Реализовать собственное кодирование для PKCS7_SIGNER_INFO; Я выбрал второй вариант. | 
| С уважением, Юрий Строжевский
 | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
	                           
	
    
        Быстрый переход
         
	
    
    Вы не можете создавать новые темы в этом форуме.
	
	Вы не можете отвечать в этом форуме.
	
	Вы не можете удалять Ваши сообщения в этом форуме.
	
	Вы не можете редактировать Ваши сообщения в этом форуме.
	
	Вы не можете создавать опросы в этом форуме.
	
	Вы не можете голосовать в этом форуме.
	
	
    
    
        Important Information:
        The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
        
        
More Details
        Close