32 lines
900 B
C++
32 lines
900 B
C++
#include "../common/color.h"
|
|
#include "flow_help.h"
|
|
#include <iostream>
|
|
#include <openssl/bio.h>
|
|
#include <openssl/ssl.h>
|
|
|
|
namespace pupes_message_client_lib {
|
|
EVP_PKEY *generate_keypair() {
|
|
std::clog << BLUE "[LOG]" RESET << " Generating keypair...\n";
|
|
EVP_PKEY_CTX *ctx = EVP_PKEY_CTX_new_id(EVP_PKEY_ML_DSA_87, NULL);
|
|
if (!ctx) {
|
|
std::cerr << "Failed to create key generation context" << std::endl;
|
|
return nullptr;
|
|
}
|
|
|
|
if (EVP_PKEY_keygen_init(ctx) <= 0) {
|
|
std::cerr << "Failed to initialize key generation" << std::endl;
|
|
EVP_PKEY_CTX_free(ctx);
|
|
return nullptr;
|
|
}
|
|
|
|
// Generate the key pair
|
|
EVP_PKEY *keypair = NULL;
|
|
if (EVP_PKEY_keygen(ctx, &keypair) <= 0) {
|
|
std::cerr << "Failed to generate key pair" << std::endl;
|
|
EVP_PKEY_CTX_free(ctx);
|
|
return nullptr;
|
|
}
|
|
SaveOrGetKeypair(keypair);
|
|
return keypair;
|
|
}
|
|
} // namespace pupes_message_client_lib
|