| ||||
| ||||
с помощью CryptSetHashParam | ||||
Ответы: | ||||
| ||||
OID задаётся в виде строки, заканчивающейся нулём. Можно использовать константу (определённую в файле WinCryptEx.h) #define szOID_CP_GOST_R3411 "1.2.643.2.2.9" | ||||
| ||||
спасибо. | ||||
| ||||
Возвращает NTE_BAD_TYPE. У меня CryptoPro 2.0 - может быть, в этом проблема? | ||||
| ||||
Можно узнать параметры при создании этого объекта хеша (..CreateHash)? | ||||
| ||||
//--- Create a new hash object. if not(CryptCreateHash( CryptContext.Provider, CALG_GR3411, 0, 0, @hHash)) then begin Exit; end; | ||||
| ||||
При этом CryptContext.Provider - хендл КриптоПро CSP ? Если да, то нет необходимости задавать HP_OID - он автоматически поставится. | ||||
| ||||
Да, хэндл Крипто-Про. Просто в примере SigningHash.c есть строки // По умолчанию провайдер работает на наборе параметров 1.2.643.2.2.30.1. // Без установки параметра HP_OID программа будет неверно работать, // если параметры хеширования не будут являться параметрами // по умолчанию. и я подумал, что проблемы из-за этого. | ||||
| ||||
Это имеется в виду, что если при хешировании задать параметры НЕ по умолчанию, то потом (например, при проверке подписи на другом компьютере) нужно будет не забыть также выставить в тот же OID. Если не задавать, т.е. всегда жить на параметрах по умолчанию - то ничего не нужно. | ||||
| ||||
просто ошибка NTE_BAD_TYPE означает, что "Параметр dwParam передаёт неизвестное значение параметра." Поэтому хотелось бы узнать - в криптопро 2.0 нет такого значения параметра HP_OID или он у меня определен неправильно? HP_OID = $000a | ||||