Вызов pem_read_privatekey заставляет программу сбой в OpenSSL 3.xC++

Программы на C++. Форум разработчиков
Anonymous
Вызов pem_read_privatekey заставляет программу сбой в OpenSSL 3.x

Сообщение Anonymous »

Я вызываю pem_read_privatekey , чтобы прочитать закрытый ключ, используя следующий код, однако после вызова pem_read_privatekey Программа сбоят (существует с кодом ошибки 1) в Windows 11.

Код: Выделить всё

std::string pem = get_pem();

FILE* tmp = tmpfile();

if (!tmp) {
return;
}

for (char ch : pem) fputc(ch, tmp);
rewind(tmp);

auto pkey = PEM_read_PrivateKey(tmp, NULL, NULL, NULL);
if (!pkey) {
fclose(tmp);
return;
}

fclose(tmp);
Этот код работал нормально в Openssl версии 1.x, но после обновления до любой версии 3.x вызов PEM_Read_privateKey сбоя в Windows. Другими словами, следующий код работает нормально < /p>
auto pem = get_pem();

BIO* bio = BIO_new_mem_buf(pem.data(), (int)pem.size());
if (!bio) {
return;
}

EVP_PKEY* pkey = PEM_read_bio_PrivateKey(bio, nullptr, nullptr, nullptr);
BIO_free(bio);

if (!pkey) {
return;
}

// ... use pkey
< /code>
Я пробовал разные версии openssl 3.x, поведение остается неизменным. В чем может быть проблема?>

Подробнее здесь: https://stackoverflow.com/questions/797 ... penssl-3-x

Вернуться в «C++»