Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

3 Страницы<123>
Опции
К последнему сообщению К первому непрочитанному
Offline MZ_st  
#11 Оставлено : 21 ноября 2012 г. 16:57:32(UTC)
MZ_st

Статус: Участник

Группы: Участники
Зарегистрирован: 12.11.2012(UTC)
Сообщений: 13

Смирнов написал:
Ещё можно перехватить исключение и посмотреть на него.

Как его посмотреть? там нет реального эксепшена

Делаю консольный проект - в отладке в _getptd_noexit (файл tidtable.c) TL_LastError - 0x00002EF3

Code(HEX): 0x00002EF3
Type: win32
Name: ERROR_INTERNET_INCORRECT_HANDLE_STATE

Description:
The requested operation cannot be carried out because the handle supplied is not in the correct state.


Может меня не туда занесло?

Отредактировано пользователем 22 ноября 2012 г. 12:14:40(UTC)  | Причина: Не указана

Offline MZ_st  
#12 Оставлено : 22 ноября 2012 г. 10:02:52(UTC)
MZ_st

Статус: Участник

Группы: Участники
Зарегистрирован: 12.11.2012(UTC)
Сообщений: 13

Новожилова Елена написал:
MZ_st написал:
валится на Send исключение SEH - внешний компонент создал исключение
Я так понимаю косяк где то в установке или конфигурации sdk? Установлен Windows 7 x64. Пробовал обе платформы проектов х64 и Win32 - ошибка та же.


Нужно лог смотреть.


Каким способом можно включить трассировку?
Offline MZ_st  
#13 Оставлено : 22 ноября 2012 г. 13:35:04(UTC)
MZ_st

Статус: Участник

Группы: Участники
Зарегистрирован: 12.11.2012(UTC)
Сообщений: 13

Вся проблема была в req->Send() - не указал req->Send(false) d'oh!

если на tsp.pkitrans.ru ошибку Встречено неверное значение тега ASN1 - это говорит о отсутствии лицензии на sdk или это другой косяк? (на cryptopro.ru/tsp без ошибок)

Отредактировано пользователем 22 ноября 2012 г. 15:52:09(UTC)  | Причина: Не указана

Offline Новожилова Елена  
#14 Оставлено : 22 ноября 2012 г. 16:38:35(UTC)
Новожилова Елена

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах
Как включить трассировку описано здесь http://www.cryptopro.ru/....aspx?g=posts&t=4577

req->Send(false) означает, что полученный ответ службы штампов не будет проверен.
Offline MZ_st  
#15 Оставлено : 22 ноября 2012 г. 16:45:11(UTC)
MZ_st

Статус: Участник

Группы: Участники
Зарегистрирован: 12.11.2012(UTC)
Сообщений: 13

Новожилова Елена написал:
Как включить трассировку описано здесь http://www.cryptopro.ru/....aspx?g=posts&t=4577

req->Send(false) означает, что полученный ответ службы штампов не будет проверен.

это нормальное явление, что при проверке ответа происходит CAtlexception?

Отредактировано пользователем 22 ноября 2012 г. 16:45:44(UTC)  | Причина: Не указана

Offline Новожилова Елена  
#16 Оставлено : 22 ноября 2012 г. 17:10:38(UTC)
Новожилова Елена

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах
Это значит, что полученный штамп проверить не удалось.
Offline MZ_st  
#17 Оставлено : 22 ноября 2012 г. 18:05:32(UTC)
MZ_st

Статус: Участник

Группы: Участники
Зарегистрирован: 12.11.2012(UTC)
Сообщений: 13

При проверке штампа (Send(True)) возникает ошибка 0х80092004 , штамп не возвращается, http status 200.
по логу вроде ошибок нет - ошибка видимо свидетельствует о отсутствии сертификата. Это нормальное поведение?


Без проверки (Send(False)) штамп возвращается.


Если указываю сертификат - получаю ошибку 0х80072EF3 майкрософт говорит что это баг, но для 4 эксплорера http://support.microsoft.com/kb/177190/en-us

[27204] cprdr: Thread: file:line function text xcode(dcode) level: 0
[27204] 08:36:02.054 ::WinHttpOpen("Crypto-Pro tspcli.dll", WINHTTP_ACCESS_TYPE_NO_PROXY (1), "", "", 0x0)
[27204] 08:36:02.054 ::winhttp-dll added a reference to winhttp.dll (via LoadLibrary() call)
[27204] 08:36:02.057 ::thread-pool created
[27204] 08:36:02.057 ::thread pool initialized successfully
[27204] 08:36:02.057 ::_SvcsStartup() succeeded; async-count = 1
[27204] 08:36:02.057 ::WinHttpOpen() returning handle 0x503f3f0
[27204] 08:36:02.057 ::WinHttpCrackUrl("http://webproxy.dy.droot.org:8080", 0x0, 0x0, 0x68ce460)
[27204] 08:36:02.057 ::WinHttpCrackUrl() returning TRUE
[27204] 08:36:02.057 ::WinHttpSetOption(0x503f3f0, WINHTTP_OPTION_PROXY (38), 0x68ce4d8 [0x3], 12)
[27204] 08:36:02.057 ::WinHttpSetOption() returning TRUE
[27204] 08:36:02.057 ::WinHttpConnect(0x503f3f0, "www.cryptopro.ru", 80, 0x0)
[27204] 08:36:02.059 ::Indicate Status 0x503f220, 0x0, WINHTTP_CALLBACK_STATUS_HANDLE_CREATED (1024), 0x68ce288 [0x503f220], 4
[27204] 08:36:02.059 ::WinHttpConnect() returning handle 0x503f220
[27204] 08:36:02.059 ::WinHttpOpenRequest(0x503f220, "POST", "tsp/tsp.srf", "", "", 0x0, 0x00000000)
[27204] 08:36:02.059 ::Indicate Status 0x5085840, 0x0, WINHTTP_CALLBACK_STATUS_HANDLE_CREATED (1024), 0x68ce23c [0x5085840], 4
[27204] 08:36:02.059 ::WinHttpCreateUrl(0x68ce1d8, 0x0, 0x0, 0x68ce228)
[27204] 08:36:02.059 :: WinHttpCreateUrl(); URL = (null), URL Length = 0
[27204] 08:36:02.059 :: WinHttpCreateUrl: error 122 [ERROR_INSUFFICIENT_BUFFER]
[27204] 08:36:02.060 ::WinHttpCreateUrl() returning FALSE

[27204] 08:36:02.060 ::WinHttpCreateUrl(0x68ce1d8, 0x0, 0x5076df8, 0x68ce228)
[27204] 08:36:02.060 :: WinHttpCreateUrl(); URL = http://www.cryptopro.ru/tsp/tsp.srf, URL Length = 35
[27204] 08:36:02.060 ::WinHttpCreateUrl() returning TRUE
[27204] 08:36:02.060 ::WinHttpOpenRequest() returning handle 0x5085840
[27204] 08:36:02.060 ::WinHttpSetOption(0x5085840, WINHTTP_OPTION_AUTOLOGON_POLICY (77), 0x68ce518 [0x2], 4)
[27204] 08:36:02.060 ::WinHttpSetOption() returning TRUE
[27204] 08:36:02.060 ::WinHttpSetOption(0x5085840, WINHTTP_OPTION_CLIENT_CERT_CONTEXT (47), 0x50766a8 [0x1], 20)
[27204] 08:36:02.060 :: WinHttpSetOption: error 12019 [ERROR_WINHTTP_INCORRECT_HANDLE_STATE]
[27204] 08:36:02.061 ::WinHttpSetOption() returning FALSE
[27204] 08:36:02.067 ::WinHttpCloseHandle(0x5085840)
[27204] 08:36:02.067 ::usr-req 0507DF10 is shutting down
[27204] 08:36:02.067 ::Indicate Status 0x5085840, 0x0, WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING (2048), 0x68cd58c [0x5085840], 4
[27204] 08:36:02.067 ::WinHttpCloseHandle() returning TRUE
[27204] 08:36:02.067 ::WinHttpCloseHandle(0x503f220)
[27204] 08:36:02.067 ::Indicate Status 0x503f220, 0x0, WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING (2048), 0x68cd58c [0x503f220], 4
[27204] 08:36:02.067 ::WinHttpCloseHandle() returning TRUE

если использую этот же запрос сохраненный через Display и подставленный в tsputil- получаю нормальный штамп времени с сертификатом, проверенный - файлы во вложении Brick wall Brick wall

Закрытый ключ лежит в запароленом контейнере. При подписании cadesSignMessage пароль спрашивается (кстати подпись возвращается CADES_X_LONG_TYPE_1 со штампом времени), а при запросе штампа через tsp.sdk - нетThink

Отредактировано пользователем 26 ноября 2012 г. 13:23:25(UTC)  | Причина: Не указана

Вложение(я):
zz.tsr (2kb) загружен 4 раз(а).
zz.tsq (1kb) загружен 3 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline MZ_st  
#18 Оставлено : 26 ноября 2012 г. 15:22:36(UTC)
MZ_st

Статус: Участник

Группы: Участники
Зарегистрирован: 12.11.2012(UTC)
Сообщений: 13

Новожилова Елена написал:
Это значит, что полученный штамп проверить не удалось.


Может подскажите, почему через cades.dll работает

CRYPT_SIGN_MESSAGE_PARA signPara;
signPara.cbSize = sizeof(CRYPT_SIGN_MESSAGE_PARA);
signPara.dwMsgEncodingType = X509_ASN_ENCODING | PKCS_7_ASN_ENCODING;
signPara.pSigningCert = 0;
signPara.HashAlgorithm.pszObjId = szOID_CP_GOST_R3411;
signPara.HashAlgorithm.Parameters.cbData = NULL;
signPara.cMsgCert = 0;
signPara.rgpMsgCert = NULL;
signPara.cAuthAttr = 0;
signPara.dwInnerContentType = 0;
signPara.cMsgCrl = 0;
signPara.cUnauthAttr = 0;
signPara.dwFlags = 0;
signPara.pvHashAuxInfo = NULL;
signPara.rgAuthAttr = NULL;

CADES_SIGN_PARA csp;
csp.dwSize = sizeof(CADES_SIGN_PARA);
csp.szHashAlgorithm = szOID_CP_GOST_R3411;
csp.hAdditionalStore = NULL;
csp.dwCadesType = CADES_X_LONG_TYPE_1;

CADES_SERVICE_CONNECTION_PARA servi;
servi.dwSize = sizeof(CADES_SERVICE_CONNECTION_PARA);
servi.wszUri = L"http://www.cryptopro.ru/tsp/tsp.srf";
servi.pAuthPara = NULL;
csp.pTspConnectionPara = &servi;


CADES_AUTH_PARA au;
au.dwSize = sizeof(CADES_AUTH_PARA);
au.dwAuthType = CADES_AUTH_NTLM;
au.pClientCertificate = NULL;

CADES_PROXY_PARA proxy;
proxy.dwSize = sizeof(CADES_PROXY_PARA);
proxy.pProxyAuthPara = &au;
proxy.wszProxyUri = L"http://webproxy.dy.droot.org:8080";

csp.pProxyPara = &proxy;


CADES_SIGN_MESSAGE_PARA para = { sizeof(para) };
para.pSignMessagePara = &signPara;
para.pCadesSignPara = &csp;

BYTE* pbMessage;
DWORD cbMessage;


pbMessage =
(BYTE*)TEXT("Why can't I have only timestamp?");

cbMessage = (lstrlen((TCHAR*) pbMessage) + 1) * sizeof(TCHAR);


const BYTE* MessageArray[] = {pbMessage};
DWORD_PTR MessageSizeArray[1];
MessageSizeArray[0] = cbMessage;

PCRYPT_DATA_BLOB pSignedMessage = NULL;

HCERTSTORE hst = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, NULL,CERT_SYSTEM_STORE_CURRENT_USER, L"MY");


PCCERT_CONTEXT pSignerCert = CryptUIDlgSelectCertificateFromStore(hst, NULL, L"SELECT A CERTIFICATE", L"WHERE TO DO",0, 0, NULL);

para.pSignMessagePara->pSigningCert = pSignerCert;

try
{
if(!CadesSignMessage(&para,FALSE,1,MessageArray,MessageSizeArray,
&pSignedMessage))

{
DWORD d = GetLastError();
int r = 0;

}
}
catch(ATL::CAtlException &ex)
{
int a = 0;
}


CRYPT_VERIFY_MESSAGE_PARA cryptVerifyPara = { sizeof(cryptVerifyPara) };
cryptVerifyPara.dwMsgAndCertEncodingType =
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING;

CADES_VERIFY_MESSAGE_PARA verifyPara = { sizeof(verifyPara) };
verifyPara.pVerifyMessagePara = &cryptVerifyPara;

PCADES_VERIFICATION_INFO pVerifyInfo = 0;

PCRYPT_DATA_BLOB pContent = 0;
if(!CadesVerifyMessage(&verifyPara,0,
pSignedMessage->pbData,pSignedMessage->cbData,&pSignedMessage,&pVerifyInfo))
{
CadesFreeVerificationInfo(pVerifyInfo);
return false;

}

if(pVerifyInfo->dwStatus != CADES_VERIFY_SUCCESS )
return false;

а через tspcli.dll получаю ошибку WinHttpSetOption: error 12019 [ERROR_WINHTTP_INCORRECT_HANDLE_STATE] ?

CryptoPro::PKI::TSP::Client::CRequest *req = new CryptoPro::PKI::TSP::Client::CRequest();

CryptoPro::PKI::TSP::Client::CStamp* stamp = new CryptoPro::PKI::TSP::Client::CStamp();

req->ResetData();

req->put_TSAAddress(L"http://www.cryptopro.ru/tsp/tsp.srf");


req->put_DataHashAlg(CALG_GR3411);

req->put_ProxyAuthType(CryptoPro::PKI::TSP::Client::CRequest::atNTLM);
req->put_ProxyAddress(L"http://webproxy.dy.droot.org:8080");
req->put_CertReq(true);




req->put_ClientCertificate(pSignerCert);


req->AddData(pbMessage, cbMessage);

req->Display(NULL, L"");

byte* d;
ULONG ds;


try
{
*stamp = req->Send(false);

stamp->Display(NULL, L"");

}
catch(ATL::CAtlException &ex)
{
int a = 0;
}
CertCloseStore(hst, CERT_CLOSE_STORE_FORCE_FLAG);

unsigned long httst = req->get_HTTPStatus();

Отредактировано пользователем 26 ноября 2012 г. 15:31:53(UTC)  | Причина: Не указана

Offline Новожилова Елена  
#19 Оставлено : 29 ноября 2012 г. 16:35:33(UTC)
Новожилова Елена

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах
1. В приложенном файле запроса нет сертификата.
2. Служба штампов на http://www.cryptopro.ru/tsp/tsp.srf не поддерживает аутентификацию по сертификатам клиентов.

Зачем вы кладете в запрос сертификат?
Offline MZ_st  
#20 Оставлено : 29 ноября 2012 г. 16:40:22(UTC)
MZ_st

Статус: Участник

Группы: Участники
Зарегистрирован: 12.11.2012(UTC)
Сообщений: 13

Вроде победилось- переустановкой крипто про и tsp.sdk - пришлось переставить, так как почему то tspcli.dll вдруг начала требовать зависимую сборку clib.dll версии 1.205 при запуске приложения...d'oh!
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
3 Страницы<123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.