Статус: Вам и не снилось
  Группы: Администраторы
 Зарегистрирован: 24.12.2007(UTC) Сообщений: 831 Откуда: Крипто-Про
  Сказал(а) «Спасибо»: 1 раз Поблагодарили: 48 раз в 44 постах
  
	 
	
     | 
    
        
            
		      
                Попробуйте сохранить сертификат из штампа в файл и проверить его стандартными средствами. Например, certutil -verify <имя файла>.    | 
 | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 08.04.2009(UTC) Сообщений: 30 Откуда: Череповец
  Поблагодарили: 1 раз в 1 постах
  
	 
	
     | 
    
        
            
		      
                Смирнов написал:Попробуйте сохранить сертификат из штампа в файл и проверить его стандартными средствами. Например, certutil -verify <имя файла>.  Встроил в код после создания штампа времени Smtp.Display и еще дополнительно сделал показ информации о подписи CadesUIDisplaySignatures. Если использую TSP Сервер от Крипто-про. Получается такая штука, штамп-времени создается, но почему-то в строке  Подпись пишется:  Верна, но сертификат не кор...При проверке через CadesUIDisplaySignatures показывает в форме что подпись Cades-Bes действительна и сертификат рабочий. Если использую TSP Сервер от ТрансТелеКом'a Штамп-времени создается, и в строке  Подпись так-же пишется:  Верна, но сертификат не кор...При проверке через CadesUIDisplaySignatures показывает в форме что подпись Cades-Bes действительна недействительна и не удалось построить цепочку сертификатов.  Соответственно и сертификат TSP отображается недействительным. Хотя! Если брать на проверку чужой штамп-времени, проверка проходит нормально без ошибок. Наверное косяк при создании или что-то я дополнительно забываю указывать в параметрах при запросе TSP. Отредактировано пользователем 7 декабря 2010 г. 11:51:55(UTC)
 | Причина: Не указана  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Вам и не снилось
  Группы: Администраторы
 Зарегистрирован: 24.12.2007(UTC) Сообщений: 831 Откуда: Крипто-Про
  Сказал(а) «Спасибо»: 1 раз Поблагодарили: 48 раз в 44 постах
  
	 
	
     | 
    
        
            
		      
                Ничего не понял из Вашего текста. Давайте по порядку. Если вы создаёте и проверяете усовершенствованную ЭЦП, то зачем вам отдельно получать и проверять штамп времени?
  P.S. Сохраните штамп в файл с расширением .tsr и откройте этот файл для просмотра штампа - там можно найти и посмотреть сертификат. Штамп также можно получить с помощью утилиты tsputil. Также можно в коде позвать CStamp::Display(). В общем, есть масса способов для извлечения сертификата.    | 
 | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 08.04.2009(UTC) Сообщений: 30 Откуда: Череповец
  Поблагодарили: 1 раз в 1 постах
  
	 
	
     | 
    
        
            
		      
                Смирнов написал:Ничего не понял из Вашего текста. Давайте по порядку. Если вы создаёте и проверяете усовершенствованную ЭЦП, то зачем вам отдельно получать и проверять штамп времени?
   Переписал выше пост, дабы убрать всю воду. Есть такая система ЭТРАН, она требует отдельно ЭЦП и отдельно TSP. Цитата: P.S. Сохраните штамп в файл с расширением .tsr и откройте этот файл для просмотра штампа - там можно найти и посмотреть сертификат. Штамп также можно получить с помощью утилиты tsputil. Также можно в коде позвать CStamp::Display(). В общем, есть масса способов для извлечения сертификата.
  В общем результаты я описал выше.  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 08.04.2009(UTC) Сообщений: 30 Откуда: Череповец
  Поблагодарили: 1 раз в 1 постах
  
	 
	
     | 
    
        
            
		      
                Попробовал сделать так: Чистый winXP sp3, установил установочный пакет от ТТК, версия CSP 3.6.5355. Соответственно все цепочки сертификатов установились из пакета. Установил tsputil, сделал 2 запросa: tsputil makestamp -u  http://cryptopro.ru/tsp/tsp.srf text.txt tsp.tsr tsputil makestamp -u  http://tsp.pki.transtk.ru/tspca1/tsp.srf text.txt tsp2.tsr. В итоге, то что tsp.tsr - Подпись верна, но не находит УЦ КриптоПро - в принципе все верно, сертификаты КриптоПро я не ставил. То что tsp2.tsr - подпись верна, но сертификат не проходит, хотя цепочка сертификатов до УЦ ТТК верна. Навевает на мысль что либо не туда обращаюсь, либо что-то не то P.S. Все дело было в старых сертификатов от ТТК, блин, инсталляшка оказалась еще с января месяца.  Скачал новые сертификаты с сайта ТТК, установил, все поехало. Спасибо. Тему можно закрыть. Отредактировано пользователем 7 декабря 2010 г. 23:08:41(UTC)
 | Причина: Не указана  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 08.04.2009(UTC) Сообщений: 30 Откуда: Череповец
  Поблагодарили: 1 раз в 1 постах
  
	 
	
     | 
    
        
            
		      
                При получении штампа времени для создания хэш значения использовал такой код: Код:	
IHashedDataPtr iHashedData(__uuidof(HashedData));
iHashedData->Algorithm = CAPICOM_HASH_ALGORITHM_SHA1;
_bstr_t t1=(_bstr_t) s;
iHashedData->Hash(t1);
_bstr_t tH = iHashedData->Value; 
 Но появилась необходимость сделать создание TSP для консольного приложения, а интерфейс IHashedDataPtr используется  только для Десктоп приложений и для консольных не подходит. Начал искать замену. В итоге нашел два варианта: 1) Использовать прямой код TSP SDK  Код:
	CRequest Req;
        Req.put_DataHashAlg(CALG_SHA1);
        Req.AddData((unsigned char *)s,strlen(s));
 
 2)  Используя CryptoAPI: Код:
    LPSTR tohash =s;
    HCRYPTPROV hProv;
    HCRYPTHASH hash;
 
    CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL,CRYPT_VERIFYCONTEXT))
 
    CryptCreateHash(hProv, CALG_SHA1, 0, 0, &hash)
    
    CryptHashData(hash, (BYTE *)&tohash, sizeof(tohash), 0)
        
    ZeroMemory(&Buf, sizeof(Buf));
    BufSize = sizeof(Buf);
 
    CryptGetHashParam(hash, HP_HASHVAL,(BYTE *) &Buf, &BufSize, 0))
 
 В итоге получается каждый раз разный хэш от одних данных не совпадающий с исходным. Отредактировано пользователем 6 марта 2012 г. 20:05:16(UTC)
 | Причина: Не указана  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Сотрудник
  Группы: Участники
 Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
  
	 
	
     | 
    
        
            
		      
                Цитата:CryptHashData(hash, (BYTE *)&tohash, sizeof(tohash), 0)  &tohash - это char**, а Вы его преобразовываете к BYTE*. & тут лишний sizeof(tohash)=4 - размер указателя, а Вам нужна длина строки Отредактировано пользователем 6 марта 2012 г. 20:28:14(UTC)
 | Причина: Не указана    | 
 | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 08.04.2009(UTC) Сообщений: 30 Откуда: Череповец
  Поблагодарили: 1 раз в 1 постах
  
	 
	
     | 
    
        
            
		      
                Kirill Sobolev написал:Цитата:CryptHashData(hash, (BYTE *)&tohash, sizeof(tohash), 0)  &tohash - это char**, а Вы его преобразовываете к BYTE*. & тут лишний sizeof(tohash)=4 - размер указателя, а Вам нужна длина строки  Поменял sizeof на strlen(tohash), начал считать правильно длину. Но хэш с оригинальным почему-то не сходится. Итак проверил через веб сайты, хэш строки: Proverka Результат SHA1 - ba65a6245dc80208fcae5e4a8bbbd39cb2d1da89 Если кодировать через IHashedDataPtr  то результат будет - 5E366E4231D23B55711A6FD06FCC03D71AF3FBEA   Если через ryptHashData(hash, (BYTE *)&tohash, strlen(tohash), 0) - ba65a6245dc80208fcae5e4a8bbbd39cb2d1da89 Если через Req.AddData((unsigned char *)s,strlen(s))   -  BA65A6245DC80208FCAE5E4A8BBBD39CB2D1DA89  Странно как-то, при то что вариант хэш через IHashedDataPtr нормально принимается АСУ ЭТРАН. После праздников буду дальше разбираться.  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Сотрудник
  Группы: Участники
 Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
  
	 
	
     | 
    
        
            
		      
                Цитата:Если кодировать через IHashedDataPtr то результат будет - 5E366E4231D23B55711A6FD06FCC03D71AF3FBEA   Хэш считаеся от юникодной строки. Если в коде Код:IHashedDataPtr iHashedData(__uuidof(HashedData));
iHashedData->Algorithm = CAPICOM_HASH_ALGORITHM_SHA1;
_bstr_t t1=(_bstr_t) s;
iHashedData->Hash(t1);
_bstr_t tH = iHashedData->Value; 
 s - это char*, то вызывайте iHashedData->Hash(SysAllocStringByteLen(s, strlen(s)));    | 
 | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 08.04.2009(UTC) Сообщений: 30 Откуда: Череповец
  Поблагодарили: 1 раз в 1 постах
  
	 
	
     | 
    
        
            
		      
                Kirill Sobolev написал:Цитата:Если кодировать через IHashedDataPtr то результат будет - 5E366E4231D23B55711A6FD06FCC03D71AF3FBEA   Хэш считаеся от юникодной строки.  Да, в идеале считается от юникодной, только в АСУ ЭТРАН сделано по другому и хэш считается от простой строки, почему и возникают проблемы при его формировании.  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
	                           
	
    
        Быстрый переход
         
	
    
    Вы не можете создавать новые темы в этом форуме.
	
	Вы не можете отвечать в этом форуме.
	
	Вы не можете удалять Ваши сообщения в этом форуме.
	
	Вы не можете редактировать Ваши сообщения в этом форуме.
	
	Вы не можете создавать опросы в этом форуме.
	
	Вы не можете голосовать в этом форуме.
	
	
    
    
        Important Information:
        The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
        
        
More Details
        Close