| ||||
| ||||
Вызываю: 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. Такого в списке допустимых алгоритмов нет. Как быть? | ||||
Ответы: | ||||
| ||||
> Вызываю: 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) | ||||
| ||||
>Так ведь 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) Это хэш, а мне надо сигнатуру. | ||||
| ||||
Прошу прощения, в прошлом ответе невнимательно посмотрел на код, вместо 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" | ||||