У меня есть открытый ключ в видеOpenSSL PEM_read_RSAPublicKey и PEM_read_RSA_PUBKEY сбой программы
-----BEGIN PUBLIC KEY-----
MIIB...
-----END PUBLIC KEY-----
, который был создан с использованием OpenSSL. Я пытаюсь загрузить его в память, как, например:
FILE* file = fopen("public.pem","r");
if (file != nullptr)
{
//This can be changed to this for the same results:
//RSA* rsa = PEM_read_RSAPublicKey(file, nullptr, nullptr, nullptr);
RSA* rsa = PEM_read_RSA_PUBKEY(file, nullptr, nullptr, nullptr);
//etc...
}
Всякий раз, когда он попадает в RSA * = ... RSA выравнивают сбои программы. Я видел другую запись для этого и (как вы можете видеть), я пробовал это решение, и оно не работает.
Я попытался использовать версии BIO, и программа не сбой, но я получаю сообщение об ошибке «no start line».
Любые идеи относительно того, что может быть причиной этого?
Я думаю, что вам нужно указать на правильные структуры, где данные будут считаны вместо использования nullptr. –
Возможно, метод PEM_read_RSA_PUBKEY не должен быть задан 'nullptr'? –
Я пробовал: if (! PEM_read_RSA_PUBKEY (файл, & rsa, nullptr, nullptr)) (где rsa инициализировалась с помощью RSA_new()), и она все еще сбой. Последние два поля - это только поля пароля, если вы используете пароль. Второй - последний указатель функции обратного вызова для поиска пароля, а последний - это void *, указывающий на char *. У шахты есть пароль, но использование (void *) пароля для последнего параметра не помогает. –