Здравствуйте!
В SDK есть набор примеров работы с RSA и GOST, в частности пример на cpp KalkanGOST_test. Насколько я понимаю, там используется скомпилированная библиотека OpenSSL (libeay32.lib, ssleay32.lib) с поддержкой GOST. Хотелось бы узнать какая версия OpenSSL использовалась для сборки этих библиотек. Сам пытался скомпилировать последнюю версию OpenSSL(1.0.1i) с поддержкой GOST и с использованием полученной библиотеки выполнить тестовый пример KalkanGOST_test. Но у меня возвращается результат 0 на строчке 351 файла KalkanGOST_test.cpp
FILE *fp12;
PKCS12 *p12;
EVP_PKEY *pkey = NULL;
X509 *cert = NULL;
STACK_OF(X509) * ca = NULL;
printf("GOST example start...\n");
ENGINE_load_openssl();
ENGINE_load_gost();
OpenSSL_add_all_algorithms();
ENGINE_register_all_pkey_asn1_meths();
//чтение p12 файла
fp12 = fopen("gost\\gost.p12","rb");
p12 = d2i_PKCS12_fp(fp12, NULL);
if (!p12)
{
fprintf(stderr,(char*)"error read p12 file");
return GOST_ERROR_PKCS12;
}
if (!PKCS12_parse(p12,(char*)"123456",&pkey, &cert, &ca)) // Здесь возвращается 0
{
ERR_print_errors_fp(stderr); // выводится ошибка
}
fclose(fp12);
Текст ошибки:
6096:error:0609E09C:digital envelope routines:func(158):reason(156):..\crypto\ev
p\p_lib.c:239:
6096:error:0606F076:digital envelope routines:func(111):reason(118):..\crypto\ev
p\evp_pkey.c:84:TYPE=1.3.6.1.4.1.6801.1.5.8
6096:error:23076072:PKCS12 routines:func(118):reason(114):..\crypto\pkcs12\p12_k
iss.c:129:
С использованием библиотек(libeay32.lib, ssleay32.lib), находящихся в примерах, все происходит без ошибок.