Статус: Новичок
Группы: Участники
Зарегистрирован: 20.03.2009(UTC) Сообщений: 9
|
Добрый день. Имею такой код: Код:
FILETIME filetime;
if(::SystemTimeToFileTime(×tamp,&filetime) && ::CryptCreateHash(provider,m_outer->getDefaultHashAlgId(),0,0,&hash))
{
if(::CryptHashData(hash,(LPBYTE)&filetime,sizeof(filetime),0) && ::CryptHashData(hash,(LPBYTE)data,data_size,0))
{
LPBYTE temp = 0;
for(ULONG cb = 256;;)
{
temp = (LPBYTE)realloc(temp,cb);
if(temp == 0)
{
nerr = ERROR_NOT_ENOUGH_MEMORY;
break;
}
if(::CryptSignHash(hash,dwKeySpec,0,0,temp,&cb))
{
// Тут кладу подпись куда надо, и выхожу
break;
}
nerr = ::GetLastError();
switch(nerr)
{
case ERROR_MORE_DATA :
continue;
}
break;
}
}
else
{
nerr = ::GetLastError();
}
::CryptDestroyHash(hash);
}
Ну так вот, если в качестве алгоритма хеша используется sha-1, то CryptSignHash() возвращает длину 64 байта, а сам буфер заполняет нулями. Если проверить GetLastError() после вызова, то оно 0. Я понимаю, что не очень правильно подсовывать левый алгоритм, но всякое в жизни бывает, и хотелось бы получить тогда ошибку соответствующую... Тем более, что хеш sha-1 провайдер считает как-то. Замечено это с КриптоПро версии 3.0.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close