С CryptoPP 5.6.4 я импортировал открытый ключ RSA следующим образом:
#include <pem.h>
const std::string publickey_str = "rsa_key here";
RSA::PublicKey publicKey;
try
{
StringSource source(publickey_str, true);
PEM_Load(source, publicKey);
}
catch (const Exception& ex)
{
std::cerr << ex.what() << std::endl;
return;
}
Сегодня я скачал и скомпилировал Crypto ++ 7.0.0, и я был удивлен, увидев, что pem.h небольше не присутствует в папке cryptopp.Документация не изменилась, и я не смог найти, куда была перемещена функция PEM_load
.
Кто-нибудь знает это?
РЕДАКТИРОВАТЬ : после добавления пакета PEM и перестройки Crypto ++ (все прошло нормально), я получаю неразрешенный внешний символ при компиляции моего проекта (который использует PEM_Load
вместе с другими частями Crypto ++:
"void __cdecl CryptoPP::PEM_Load(class CryptoPP::BufferedTransformation &,class CryptoPP::RSAFunction &)"
(?PEM_Load@CryptoPP@@YAXAEAVBufferedTransformation@1@AEAVRSAFunction@1@@Z)
Я добавил cryptlib.lib в компоновщик, установил флаг /MT
, и cryptopp был построен статически с использованием VS2017. У меня нет ошибки в других функциях Crypto ++, либо из aes.h
, rsa.h
и т.д.