Я пишу код c/c++ для библиотеки Win32 Dynamic_link в Visual Studio 6. На самом деле я использую libcryptoMD.lib для реализации шифрования RSA с использованием файла pem и файла ppk. Я могу сделать это шифрование в примере кода, но PEM_read_RSAPublicKey() дает сбой в реальном коде приложения.
Я уже пытался установить все настройки проекта фактического кода приложения для примера проекта, так как могут быть некоторые конфликты в библиотеках зависимостей фактического кода приложения. Но, к моему удивлению, пример проекта работал успешно, а фактическое приложение не удалось. Я также искал, почему эта функция могла дать сбой в реальном коде приложения, но не смог найти никакого полезного ответа. Эта функция нуждается в указателе файла pem-файла с открытым ключом и указателе RSA, которые абсолютно прекрасны.
RSA * create_RSA(RSA * keypair, int pem_type, char *file_name) {
RSA *rsa = NULL;
FILE *fp = NULL;
if(pem_type == PUBLIC_KEY_PEM)
{
fp = fopen(file_name, "rb");
PEM_read_RSAPublicKey(fp, &rsa, NULL, NULL);
fclose(fp);
}
else if(pem_type == PRIVATE_KEY_PEM)
{
fp = fopen(file_name, "rb");
PEM_read_RSAPrivateKey(fp, &rsa, NULL, NULL);
fclose(fp);
}
return rsa;
}
PEM_read_RSAPublicKey(fp, &rsa, NULL, NULL);
вылетает, показывая
OPENSSL_Uplink(6F8D1880,08): нет OPENSSL_Applink в фактическом коде приложения.
fopen()
вызовы. - person Andrew Henle   schedule 02.10.2019