Форум КриптоПро
	 » 
	Устаревшие продукты
	 » 
	КриптоПро CSP 3.6
	 » 
	Проверка подписи не по данным а по хешу данных
	 
	
        
            
            
    | 
	Статус: Активный участник
 Группы: Участники
 Зарегистрирован: 22.01.2008(UTC) Сообщений: 675   Откуда: Йошкар-ОлаСказал «Спасибо»: 3 разПоблагодарили: 95 раз в 68 постах
 
 | 
            
		      
                Автор: dmishin  Юрий, подскажите каким методом добраться до нужного узла после выполнения CryptDecodeObject? Вызвав ещё раз CryptDecodeObject :) И так до победного конца. | 
| С уважением, Юрий Строжевский
 | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Активный участник
 Группы: Участники
Зарегистрирован: 07.08.2012(UTC)
 Сообщений: 123
 
 Сказал(а) «Спасибо»: 4 разПоблагодарили: 6 раз в 6 постах
 
 | 
            
		      
                Под линуксом и CryptDecodeObject выдает ошибку: 0x00000057 Хотя под виндой все ок... Остается только попробовать собрать массив из того что выдает CryptMsgGetParam(CMSG_SIGNER_AUTH_ATTR_PARAM) Отредактировано пользователем 25 ноября 2013 г. 12:31:34(UTC)
 | Причина: Не указана | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Активный участник
 Группы: Участники
 Зарегистрирован: 22.01.2008(UTC) Сообщений: 675   Откуда: Йошкар-ОлаСказал «Спасибо»: 3 разПоблагодарили: 95 раз в 68 постах
 
 | 
            
		      
                Автор: dmishin  Под линуксом и CryptDecodeObject выдает ошибку: 0x00000057Хотя под виндой все ок...
 
 Остается только попробовать собрать массив из того что выдает CryptMsgGetParam(CMSG_SIGNER_AUTH_ATTR_PARAM)
 Смотря что декодировать. Там тоже реализован ограниченный набор декодируемых структур.  Проще декодировать примитивные ASN.1 типы и обрабатывать уже их. | 
| С уважением, Юрий Строжевский
 | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Активный участник
 Группы: Участники
Зарегистрирован: 07.08.2012(UTC)
 Сообщений: 123
 
 Сказал(а) «Спасибо»: 4 разПоблагодарили: 6 раз в 6 постах
 
 | 
            
		      
                И так получил третью реализацию, которая не работает под линуксом:
 1. Получаю подписанные атрибуты:
 CryptMsgGetParam(msgObject, CMSG_SIGNER_AUTH_ATTR_PARAM, 0, msgAuthAttr, &msgParamLen)
 2. Пытаюсь запаковать в ASN.1:
 CryptEncodeObject(MY_ENCODING_TYPE, PKCS_ATTRIBUTES, msgAuthAttr, msgAuthAttrData, &msgAuthAttrLen)
 
 
 Получаю 0x80092002. Что означает что скорее всего под линуксом не реализовано...
 | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Активный участник
 Группы: Участники
Зарегистрирован: 07.08.2012(UTC)
 Сообщений: 123
 
 Сказал(а) «Спасибо»: 4 разПоблагодарили: 6 раз в 6 постах
 
 | 
            
		      
                Автор: Юрий  Автор: dmishin  Под линуксом и CryptDecodeObject выдает ошибку: 0x00000057Хотя под виндой все ок...
 
 Остается только попробовать собрать массив из того что выдает CryptMsgGetParam(CMSG_SIGNER_AUTH_ATTR_PARAM)
 Смотря что декодировать. Там тоже реализован ограниченный набор декодируемых структур.  Проще декодировать примитивные ASN.1 типы и обрабатывать уже их. Просто исходное сообщение не декодируется. Т.е. корневой элемент. | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Активный участник
 Группы: Участники
Зарегистрирован: 07.08.2012(UTC)
 Сообщений: 123
 
 Сказал(а) «Спасибо»: 4 разПоблагодарили: 6 раз в 6 постах
 
 | 
            
		      
                Автор: Юрий  Проще декодировать примитивные ASN.1 типы и обрабатывать уже их.
 
 Остался еще вариант с реализацией ASN.1 парсера для получения нужного узла. У меня варианты кончились. Отредактировано пользователем 26 ноября 2013 г. 7:05:47(UTC)
 | Причина: Не указана | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Активный участник
 Группы: Участники
 Зарегистрирован: 22.01.2008(UTC) Сообщений: 675   Откуда: Йошкар-ОлаСказал «Спасибо»: 3 разПоблагодарили: 95 раз в 68 постах
 
 | 
            
		      
                Автор: dmishin  Автор: Юрий  Автор: dmishin  Под линуксом и CryptDecodeObject выдает ошибку: 0x00000057Хотя под виндой все ок...
 
 Остается только попробовать собрать массив из того что выдает CryptMsgGetParam(CMSG_SIGNER_AUTH_ATTR_PARAM)
 Смотря что декодировать. Там тоже реализован ограниченный набор декодируемых структур.  Проще декодировать примитивные ASN.1 типы и обрабатывать уже их. Просто исходное сообщение не декодируется. Т.е. корневой элемент. Да нет, простейшие типы ASN.1 прекрасно декодируются/кодируются в Linux. Так что-то ошибочно у вас в коде. | 
| С уважением, Юрий Строжевский
 | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Активный участник
 Группы: Участники
Зарегистрирован: 07.08.2012(UTC)
 Сообщений: 123
 
 Сказал(а) «Спасибо»: 4 разПоблагодарили: 6 раз в 6 постах
 
 | 
            
		      
                Автор: Юрий  Автор: dmishin  Автор: Юрий  Автор: dmishin  Под линуксом и CryptDecodeObject выдает ошибку: 0x00000057Хотя под виндой все ок...
 
 Остается только попробовать собрать массив из того что выдает CryptMsgGetParam(CMSG_SIGNER_AUTH_ATTR_PARAM)
 Смотря что декодировать. Там тоже реализован ограниченный набор декодируемых структур.  Проще декодировать примитивные ASN.1 типы и обрабатывать уже их. Просто исходное сообщение не декодируется. Т.е. корневой элемент. Да нет, простейшие типы ASN.1 прекрасно декодируются/кодируются в Linux. Так что-то ошибочно у вас в коде. Как вариант - в сообщении возможно есть ошибка, которую win реализация прощает. Но на всякий случай проверю код. | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Активный участник
 Группы: Участники
Зарегистрирован: 07.08.2012(UTC)
 Сообщений: 123
 
 Сказал(а) «Спасибо»: 4 разПоблагодарили: 6 раз в 6 постах
 
 | 
            
		      
                Удалось поэлементно запаковать атрибуты: 	for (DWORD i = 0; i < msgAuthAttr->cAttr; i++) { 		if(!CryptEncodeObject(MY_ENCODING_TYPE, PKCS_ATTRIBUTE, &(msgAuthAttr->rgAttr[i]), NULL, &encodedAttrLen)) { 			HandleError("1"); 		} 		if(!(encodedAttr = (BYTE *)malloc(encodedAttrLen))){ 			HandleError("Memory Allocation error"); 		} 		if(!CryptEncodeObject(MY_ENCODING_TYPE, PKCS_ATTRIBUTE, &(msgAuthAttr->rgAttr[i]), encodedAttr,&encodedAttrLen)) { 			HandleError("2"); 		} 		if(!(encodedAttributes = (BYTE *)realloc(encodedAttributes, encodedAttributesLen + encodedAttrLen))){ 			HandleError("Memory Allocation error"); 		} 		memmove(encodedAttributes+encodedAttributesLen, encodedAttr, encodedAttrLen); 		encodedAttributesLen += encodedAttrLen; 	} Не нашел функцию для генерации заголовка с длиной данных для ASN.1, поэтому подставил пока вручную для проверки. Получил искомое значение для хеша и валидация прошла успешно. П.С. Остается найти или написать генерацию заголовка элемента. Отредактировано пользователем 25 ноября 2013 г. 15:47:56(UTC)
 | Причина: Не указана | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Активный участник
 Группы: Участники
Зарегистрирован: 07.08.2012(UTC)
 Сообщений: 123
 
 Сказал(а) «Спасибо»: 4 разПоблагодарили: 6 раз в 6 постах
 
 | 
            
		      
                Заголовки добавил через CryptEncodeObject(X509_OCTET_STRING) | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
	                           
	Форум КриптоПро
	 » 
	Устаревшие продукты
	 » 
	КриптоПро CSP 3.6
	 » 
	Проверка подписи не по данным а по хешу данных
	 
	
    
        Быстрый переход
         
	
    
    Вы не можете создавать новые темы в этом форуме.
	
	Вы не можете отвечать в этом форуме.
	
	Вы не можете удалять Ваши сообщения в этом форуме.
	
	Вы не можете редактировать Ваши сообщения в этом форуме.
	
	Вы не можете создавать опросы в этом форуме.
	
	Вы не можете голосовать в этом форуме.
	
	
    
    
        Important Information:
        The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
        
        
More Details
        Close