18.01.2003 14:02:14 | База OID`oв | | Ответов: 3 |
|
Den | | |
|
После апгрейда 1.2 -> 2.0 происходит нечто странное : CryptFindOIDInfo по запросу на id алгоритма 0x0000801E
возвращает "1.2.643.2.2.3" (ГОСТ Р 34.11/34.10-2001), хотя по идее должна отдавать "1.2.643.2.2.9"....
(проверялось на XP & 2000, CPCSP 2.0(2049) лицензионный ) |
|
Ответы:
|
|
То-же самое происходит и на WinNT4.0, причем cpcsp 2.0 (2049) был установлен сразу... |
|
21.01.2003 11:29:18 | Василий |
|
Дело в том, что, согласно MSDN, данная функция CryptFindOIDInfo возвращает первое зарегистрированное для такого алгида значение. Причем поиск может быть сужен для группы алгидов - третий параметр функции.
Так вот, если его задать константой CRYPT_HASH_ALG_OID_GROUP_ID, то будет возвращено именно 1.2.643.2.2.9, а если константой CRYPT_SIGN_ALG_OID_GROUP_ID - то 1.2.643.2.2.3. При поиске без указания группы результат непредсказуем, поскольку зависит от порядка, в котором зарегистрированы OID-ы для данного значения ALG_ID.
В данном случае для ALG_ID = CALG_GR3411 = 0x0000801E есть три OID-а - 1.2.643.2.2.3, 1.2.643.2.2.4, 1.2.643.2.2.9. |
|
|
Да, спасибо ;) Понятно что при указании группы все работает корректно, но смущает что для получения 1.2.643.2.2.3 или 1.2.643.2.2.4 достаточно указать только id хеша. Получается что в данном случае CryptFindOIDInfo может работать не по строгому соответствию? Ведь 1.2.643.2.2.3 или 1.2.643.2.2.4 означают сразу по два алгаида, и резонно ожидать что их можно получить скорее через CRYPT_OID_INFO_SIGN_KEY, чем через CRYPT_OID_INFO_ALGID_KEY... |
|