Статус: Участник
Группы: Участники
Зарегистрирован: 25.01.2008(UTC) Сообщений: 29 Откуда: Moscow
|
Вопрос. Была написана и оттестирована библиотека, работающая с КриптоПро 3.0. После перехода на 3.6 некоторые методы работать перестали. Например в следующем коде с КриптоПро 3.6 не отрабатывает функция CryptGetHashParam. Код:
if(buff)
{
HCRYPTPROV cryptoProv = NULL;
if(::CryptAcquireContext(&cryptoProv, NULL, CP_GR3410_2001_PROV, PROV_GOST_2001_DH, CRYPT_VERIFYCONTEXT))
{
HCRYPTHASH hHash;
if(::CryptCreateHash(cryptoProv, CALG_GR3411, NULL, 0, &hHash))
{
if(::CryptHashData(hHash,(BYTE*)buff, buffSize, 0))
{
DWORD hash_size = 0;
DWORD paramSize;
if(::CryptGetHashParam(hHash, HP_HASHSIZE, (BYTE*)(&hash_size), ¶mSize,0))
{
jbyteArray hashVal = env->NewByteArray(hash_size);
jbyte* hashValBuffer = env->GetByteArrayElements(hashVal, 0);
if(::CryptGetHashParam(hHash, HP_HASHVAL,(BYTE*)(hashValBuffer), &hash_size,0))
{
ret_val = hashVal;
}
}
}
::CryptDestroyHash(hHash);
}
::CryptReleaseContext(cryptoProv, 0);
}
}
Подскажи, в какую сторону копать?
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,450  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 38 раз Поблагодарили: 747 раз в 642 постах
|
DWORD paramSize; стоит инициализировать 4
|
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.01.2008(UTC) Сообщений: 29 Откуда: Moscow
|
Не заметил ошибку. А почему с 3.0 работало? =)
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,450  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 38 раз Поблагодарили: 747 раз в 642 постах
|
|
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.01.2008(UTC) Сообщений: 29 Откуда: Moscow
|
Еще такой вопрос - используется вызов Код:
::CryptAcquireCertificatePrivateKey(certContext,
0,
NULL,
&cryptProv,
&keySpec,
&fCallerFreeProv)
Полученный keySpec далее передается в функцию CryptSignHash. С 3.0 все работает. С 3.6 ошибка NTE_NO_KEY. keySpec возвращается 1 (AT_KEYEXCHANGE)
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,450  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 38 раз Поблагодарили: 747 раз в 642 постах
|
А ключ AT_KEYEXCHANGE в контейнере есть? |
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.01.2008(UTC) Сообщений: 29 Откуда: Moscow
|
Да, есть. С AT_SIGNATURE выдается NTE_BAD_KEYSET UPDATE: сгенерировали новые ключи на провайдере 3.6 (ранее использовали ключи, сгенерированные 3.0) - функция отработала без ошибок. Отредактировано пользователем 5 апреля 2011 г. 20:48:29(UTC)
| Причина: Не указана
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close