pupes-message/client/crypt.cpp
2025-05-03 16:23:19 +02:00

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