Код: Выделить всё
#include
#include
#include
#include
#include
#include
#include
// Custom deleter for EVP_PKEY
struct EVP_PKEY_Deleter {
void operator()(EVP_PKEY *pkey) const { EVP_PKEY_free(pkey); }
};
// Type alias for unique_ptr with EVP_PKEY and custom deleter
using Key = std::unique_ptr;
std::pair generate_rsa_keys() {
EVP_PKEY_CTX *ctx = EVP_PKEY_CTX_new_id(EVP_PKEY_RSA, nullptr);
if (!ctx) {
throw std::runtime_error("Failed to create context");
}
EVP_PKEY *pkey_raw = EVP_RSA_gen(2048);
if (!pkey_raw) {
EVP_PKEY_CTX_free(ctx);
throw std::runtime_error("Key generation failed");
}
EVP_PKEY *public_key_raw = EVP_PKEY_new();
if (!public_key_raw) {
EVP_PKEY_free(pkey_raw);
EVP_PKEY_CTX_free(ctx);
throw std::runtime_error("Failed to create public key");
}
if (EVP_PKEY_copy_parameters(public_key_raw, pkey_raw)
Подробнее здесь: [url]https://stackoverflow.com/questions/79144068/generate-rsa-key-pairs-using-openssl-3-0-in-c[/url]