14.06.2007 18:13:41подскажите, какая структура должна передаваться при установке HP_OID Ответов: 9
slow
с помощью CryptSetHashParam
 
Ответы:
15.06.2007 12:49:18Василий
OID задаётся в виде строки, заканчивающейся нулём.
Можно использовать константу (определённую в файле WinCryptEx.h)
#define szOID_CP_GOST_R3411 "1.2.643.2.2.9"
18.06.2007 10:15:35slow
спасибо.
18.06.2007 10:38:08slow
Возвращает NTE_BAD_TYPE. У меня CryptoPro 2.0 - может быть, в этом проблема?
18.06.2007 11:06:08Василий
Можно узнать параметры при создании этого объекта хеша (..CreateHash)?
18.06.2007 11:24:51slow
//--- Create a new hash object.

if not(CryptCreateHash(
CryptContext.Provider,
CALG_GR3411,
0,
0,
@hHash)) then
begin
Exit;
end;
18.06.2007 12:19:56Василий
При этом CryptContext.Provider - хендл КриптоПро CSP ?
Если да, то нет необходимости задавать HP_OID - он автоматически поставится.
18.06.2007 15:30:47slow
Да, хэндл Крипто-Про. Просто в примере SigningHash.c есть строки

// По умолчанию провайдер работает на наборе параметров 1.2.643.2.2.30.1.
// Без установки параметра HP_OID программа будет неверно работать,
// если параметры хеширования не будут являться параметрами
// по умолчанию.

и я подумал, что проблемы из-за этого.
18.06.2007 17:04:24Василий
Это имеется в виду, что если при хешировании задать параметры НЕ по умолчанию, то потом (например, при проверке подписи на другом компьютере) нужно будет не забыть также выставить в тот же OID.
Если не задавать, т.е. всегда жить на параметрах по умолчанию - то ничего не нужно.
18.06.2007 17:48:48slow
просто ошибка NTE_BAD_TYPE означает, что
"Параметр dwParam передаёт неизвестное значение параметра."

Поэтому хотелось бы узнать - в криптопро 2.0 нет такого значения параметра HP_OID или он у меня определен неправильно?

HP_OID = $000a