Commit 9ef900fc authored by jan.koester's avatar jan.koester
Browse files

test

parent ae3464e9
Loading
Loading
Loading
Loading
Loading
+16 −30
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@
#endif

#include <uuidp.h>
#include <netplus/utils/certgen.h>

#include "backend.h"
#include "authdb.h"
@@ -133,40 +134,32 @@ static std::string tempDir() {
#endif
}

static std::string devNull() {
#ifdef _WIN32
    return "NUL";
#else
    return "/dev/null";
#endif
}

static bool generateTestCerts() {
    std::string prefix = tempDir() + "authdb_cluster_test_" + std::to_string(test_getpid());
    g_keyFile  = prefix + ".key";
    g_certFile = prefix + ".crt";
    g_keyFile  = prefix + ".key.der";

    // Generate RSA key + self-signed cert (paritypp QUIC expects RSA DER key)
    std::string cmd =
        "openssl req -x509 -newkey rsa:2048 "
        "-keyout " + g_keyFile + " -out " + g_certFile +
        " -days 1 -nodes -subj \"/CN=authdb-test\" -batch 2>" + devNull();
    // Generate 2048-bit RSA self-signed cert using libnetplus certgen API
    netplus::CertGenConfig cfg;
    cfg.commonName = "authdb-test";
    cfg.rsaBits    = 2048;
    cfg.validDays  = 1;

    int ret = system(cmd.c_str());
    if (ret != 0) {
    netplus::CertKeyPair pair;
    if (!netplus::generateSelfSignedCert(cfg, pair)) {
        std::cerr << "Failed to generate test TLS certificates\n";
        return false;
    }

    // Convert key to DER (paritypp/QUIC expects DER private key)
    std::string derKey = prefix + ".key.der";
    cmd = "openssl rsa -in " + g_keyFile + " -outform DER -out " + derKey + " 2>" + devNull();
    ret = system(cmd.c_str());
    if (ret != 0) {
        std::cerr << "Failed to convert key to DER\n";
    // Write PEM cert and DER key (paritypp QUIC expects DER private key)
    if (!netplus::writePemFile(g_certFile, pair.certPem)) {
        std::cerr << "Failed to write cert file\n";
        return false;
    }
    if (!netplus::writeDerFile(g_keyFile, pair.keyDer)) {
        std::cerr << "Failed to write key file\n";
        return false;
    }
    g_keyFile = derKey;

    return true;
}
@@ -174,13 +167,6 @@ static bool generateTestCerts() {
static void cleanupTestCerts() {
    if (!g_certFile.empty()) test_unlink(g_certFile.c_str());
    if (!g_keyFile.empty()) test_unlink(g_keyFile.c_str());
    // Also clean up PEM key
    std::string pemKey = g_keyFile;
    auto pos = pemKey.rfind(".der");
    if (pos != std::string::npos) {
        pemKey = pemKey.substr(0, pos);
        test_unlink(pemKey.c_str());
    }
}

// ═════════════════════════════════════════════════════════════