04.06.2003 14:09:36CryptFindOIDInfo Ответов: 3
Михаил Баранов
Вызываю: CryptFindOIDInfo(CRYPT_OID_INFO_ALGID_KEY, &CALG_GR3410, CRYPT_SIGN_ALG_OID_GROUP_ID); (пример из ctkey.c)
получаю null.
Как получить OID алгоритма подписи зная его ALG_ID?

Пробовал CryptEnumOIDInfo, нужный мне OID "1.2.643.2.2.3" имеет цифровое значение 32798. Такого в списке допустимых алгоритмов нет.
Как быть?
 
Ответы:
04.06.2003 19:28:16Василий
> Вызываю: CryptFindOIDInfo(CRYPT_OID_INFO_ALGID_KEY, &CALG_GR3410, CRYPT_SIGN_ALG_OID_GROUP_ID); (пример из ctkey.c)
> получаю null.

Так ведь CALG_GR3410 - константа :-)
#define CALG_GR3410 \
(ALG_CLASS_SIGNATURE | ALG_TYPE_GR3410 | ALG_SID_GR3410)

> Как получить OID алгоритма подписи зная его ALG_ID?

Так.

ALG_ID some_alg = 0;
some_alg = CALG_GR3410;
CryptFindOIDInfo(CRYPT_OID_INFO_ALGID_KEY,
(void*) &some_alg, CRYPT_SIGN_ALG_OID_GROUP_ID);



Пробовал CryptEnumOIDInfo, нужный мне OID "1.2.643.2.2.3" имеет цифровое значение 32798. Такого в списке допустимых алгоритмов нет.
> Как быть?
Есть такой!
#define CALG_GR3411 \
(ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_GR3411)
05.06.2003 4:57:48Михаил Баранов

>Так ведь CALG_GR3410 - константа :-)
понятно, что константа. я сократил для форума

>Так.
>ALG_ID some_alg = 0;
>some_alg = CALG_GR3410;
>CryptFindOIDInfo(CRYPT_OID_INFO_ALGID_KEY,
>(void*) &some_alg, >CRYPT_SIGN_ALG_OID_GROUP_ID);

Ну и какой результат Вы получили? у меня null

>Есть такой!
>#define CALG_GR3411 \
(ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_GR3411)
Это хэш, а мне надо сигнатуру.
10.06.2003 17:14:36Василий
Прошу прощения, в прошлом ответе невнимательно посмотрел на код, вместо
CRYPT_SIGN_ALG_OID_GROUP_ID нужно
CRYPT_PUBKEY_ALG_OID_GROUP_ID


Вот список OID-ов по группам

/* CRYPT_HASH_ALG_OID_GROUP_ID */
#define szOID_CP_GOST_R3411 "1.2.643.2.2.9"

/* CRYPT_ENCRYPT_ALG_OID_GROUP_ID */
#define szOID_CP_GOST_28147 "1.2.643.2.2.21"

/* CRYPT_PUBKEY_ALG_OID_GROUP_ID */
#define szOID_CP_GOST_R3410 "1.2.643.2.2.20"
#define szOID_CP_GOST_R3410EL "1.2.643.2.2.19"
#define szOID_CP_DH_EX "1.2.643.2.2.99"
#define szOID_CP_DH_EL "1.2.643.2.2.98"

/* CRYPT_SIGN_ALG_OID_GROUP_ID */
#define szOID_CP_GOST_R3411_R3410 "1.2.643.2.2.4"
#define szOID_CP_GOST_R3411_R3410EL "1.2.643.2.2.3"