Статус: Вам и не снилось
Группы: Администраторы
Зарегистрирован: 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,732 Откуда: КРИПТО-ПРО Поблагодарили: 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,732 Откуда: КРИПТО-ПРО Поблагодарили: 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