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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Сашка  
#1 Оставлено : 13 апреля 2009 г. 17:35:41(UTC)
Сашка

Статус: Новичок

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

Добрый день.

Имею такой код:

Код:

FILETIME filetime;
if(::SystemTimeToFileTime(&timestamp,&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.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.