OpenSSL

Introduction

Quantum-Origin QO-Key Engine for OpenSSL v1.x

Quantum Origin, as a system, generates classical and post-quantum keys using verifiable quantum randomness. This high level view is covered in the Key Generation section.

Quantum Origin offers a few different methods and client-side utilities in order to assist and/or simplify customer access to Quantum Origin. QO-Key is one such tool.

QO-Key is a plug-in (aka ‘’engine’’) for OpenSSL that gives easy, and often seamless, integration with Quantum Origin.

An OpenSSL engine, in general, is a plugin which provides an alternative source for an otherwise pre-existing feature, in this case: key generation functionality using the Quantum-Origin. In order to achieve this, the QO-Key engine requires network connectivity to one of the Quantum-Origin servers exposing the Quantum-Origin API.

Implementation

The QO-Key engine is implemented as a single component - a dynamically linked library (shared object) which gets bound into OpenSSL at runtime as required - and a few configuration items:

Two configuration files:
  • qo_openssl.cnf - Used by OpenSSL to configure engines and other features.

  • qo_engines.cnf - Used by the QO-Key engine component to configure authentication, security, performance, logging etc.

Two environment variables:
  • OPENSSL_CONF - Points to location of openssl_conf.cnf

  • QO_ENGINES_CONF - Points to location of qo_engines.cnf

The engine, when installed and configured, becomes the alternate provider of AES, ECC, RSA, PQ-Signing keys.

In order to support AES and PQ keys, it is neccessary to install a customised version of OpenSSL (qo_openssl) which is built on top of the OQS fork of OpenSSL v1.x.

Internally, this engine uses the same QO-Decrypt library that is offered to customers to do the decryption of the responses from the QO server(s).

QO-Key is currently available for Ubuntu 18.04/20.04 and Centos7.

Support for Post-Quantum Algorithms

Note

Quantum Origin has implemented the QO-Key engine against the Open Quantum Safe fork of OpenSSL to allow organizations to evaluate post-quantum algorithms. The Open Quantum Safe fork of OpenSSL should be consulted regarding status and any advice regarding production use.

In order to support the generation of keys for the NIST PQC “Post Quantum Cryptography” candidate algorithms, QO-Key is implemented specifically for OQS-OpenSSL - a fork of the standard OpenSSL made by Open Quantum Safe <https://openquantumsafe.org/> which also adds these PQC algorithms.

Furthermore, in order to fully support the plugin, Quantum Origin makes some small modifications to the OQS-OpenSSL fork. This is applied by means of a small patch file - which is available for inspection and verification on request.

Installation

The installation of QO-Key has two distinct steps:

  • Step 1: Installation of QO-OpenSSL.

  • Step 2: Installation and configuration of the QO-Key engine itself.

Regarding Step 1: This can be either installed as-is, or it can be downloaded and built on-premises. This is offered for transparency for the security conscious.

The “as-is” binaries distribution is faster and easier to install.

The QO-Key engine itself is always distributed as a pre-built binary.

1. QO-Key with Prebuilt OQS-Binaries

In the pre-built binaries install, the OQS binaries are pre-built. This simplifies and speeds-up installation considerably.

  • qokey_oqs_openssl_install.sh

  • qokey_oqs_openssl_binaries__<platform>__<release>.tar.gz

This install script does the following:

  • Install required 3rd Party packages, including git, cmake, ninja, python.

  • Install the pre-built OQS LibOQS runtime libraries.

  • Install the pre-built OQS-OpenSSL binaries.

  • Install and configure the pre-built QO-Key engine.

The following items are required in order to start the installation:

  • CERT_FILE, CERT_KEY_FILE : The Client’s QO certificate, and associated key, as issued by Quantinuum during on-boarding/registration.

  • SHARED_SECRET_FILE : Text file containing the client’s QO shared secret, as issued by Quantinuum during on-boarding/registration.

  • API_USER_KEY_FILE : Text file containing the client’s QO API Key, as issued by Quantinuum during on-boarding/registration.

And finally, the chosen target folder for the installation. Typically $HOME/quantum-origin

./qokey_oqs_openssl_install.sh  $HOME/quantum-origin \
                                ~/Documents/keys/client_crt.pem \
                                ~/Documents/keys/client_prv.key.pem \
                                ~/Documents/keys/client_sharedsecret.txt \
                                ~/Documents/keys/qo_apiuserkey.txt

2. QO-Key with OQS downloaded, patched and built at customer site

In the pre-built binaries install, the OQS sources are downloaded, patched and built at the customer site.

The advantage of this is that the customer can, and is free to verify that the downloaded OpenSSL sources are authentic and original, and can inspect the small Quantum Origin patch which is applied to changes prior to the build.

  • qokey_engine_install.sh

  • qokey_engine_publish_<release>.tar.gz

Without going into the details, this install script does the following:

  • Install required 3rd Party packages, including git, cmake, ninja, python.

  • Download the OQS-OpenSSL source code repo from github.

  • Download the OQS LibOQS source code repo from github.

  • Build LibOQS.

  • Apply the Quantum Origin patch to OQS-OpenSSL.

  • Build OQS-OpenSSL.

  • Install and configure the pre-built QO-Key engine.

The following items are required in order to start the installation:

  • CERT_FILE, CERT_KEY_FILE : The Client’s QO certificate, and associated key, as issued by Quantinuum during on-boarding/registration.

  • SHARED_SECRET_FILE : Text file containing the client’s QO shared secret, as issued by Quantinuum during on-boarding/registration.

  • API_USER_KEY_FILE : Text file containing the client’s QO API Key, as issued by Quantinuum during on-boarding/registration.

And finally, the chosen target folder for the installation. Typically $HOME/quantum-origin

./qokey_engine_install.sh  $HOME/quantum-origin \
                           ~/Documents/keys/client_crt.pem \
                           ~/Documents/keys/client_prv.key.pem \
                           ~/Documents/keys/client_sharedsecret.txt

Part of this process involves installing build tools and dependencies. This step requires and will request elevated privileges (sudo).

In either case, the default location of the OpenSSL files is ~/quantum-origin/oqs-openssl.

This “Quantum Origin” instance of OpenSSL is not “installed” as such, but is run in a local environment on demand, so will not interfere with any existing instance of OpenSSL on the system. This is acheived through the creation of a launch script qo_openssl in the user’s ~/bin folder:

The binary can be run as follows:

$ qo_openssl version
OpenSSL 1.1.1o  3 May 2022, Open Quantum Safe 2022-05 dev, Quantum Origin QO-Key 08-Jul-2022
$
$ qo_openssl engine
(rdrand) Intel RDRAND engine
(dynamic) Dynamic engine loading support
(qokey_engine) Quantum Origin Key Engine v0.48.00 (02-Sep-2022) ( AES RSA ECC PQC )  [Lib 1.33.0]
$

Configuration

All of the required configuration was completed by the install process based upon the various supplied parameters. However, if something needs to be customised or modified, it is neccessary to know where to look. This is the purpose of this section.

Configuration Files

At runtime, OpenSSL looks for an OPENSSL_CONF environment variable which contains the location/path of a configuration file. It is in this configuration file that alternate providers, if any, are specified and configured.

Similar to OpenSSL, the QO-Key engine looks for an environment variable which points to its own configuration file, which contains the various items required to connect securely to Open Quantum to generate the key, and to validate and decrypt the response.

The two configuration files mentioned are:
  • qo_openssl.cnf - Used by OpenSSL to configure engines etc.

  • qo_engines.cnf - Used by the QO-Key engine to configure authentication, security, communications, logging etc.

qo_openssl.cnf

This configuration file is as received in the OQS distribution, plus the following lines which configure the binding of the QO-Key engine into OpenSSL:

openssl_conf = openssl_def

[openssl_def]
engines = engine_section

[engine_section]
qokey = qokey_section

[qokey_section]
engine_id = qokey_engine
init = 0

qo_engines.cnf

This configuration file is where the Quantum-Origin specific items are configured, including the Base-URL for the Quantum Origin API. The default value is “https://qo-uk.cambridgequantum.com/api/v1”, which may need modification depending on the customer location or requirements. Please see ‘Connecting to the Service’_ for details.

{
  "GeneralSettings":
  {
    "_1_Verbosity_bitmapped_field":"STATUS=1, CONFIG=2, PROGRESS=4, AUTH=8, DATA=16, CURL=32, SPARE6=64, SPARE7=128",
    "LOGGING_VERBOSITY":"7",
    "USE_LOCAL_EPHEMERAL_KEYS":"1"
  },
  "AuthSettings":
  {
    "AUTHTYPE":"CLIENT_CERT",
    "AUTHSSLCERTTYPE":"PEM",
    "AUTHSSLCERTFILE":"$QO_OPENSSL_INSTALL_DIRECTORY/user.cert.pem",
    "AUTHSSLKEYFILE":"$QO_OPENSSL_INSTALL_DIRECTORY/user.cert.key.pem",
    "AUTHAPIUSERKEY":"<QO_API_USER_KEY_GOES_HERE>",
    "AUTHSHAREDSECRETFILE":"$QO_OPENSSL_INSTALL_DIRECTORY/sharedsecret.txt"
  },
  "CommsSettings":
  {
    "BASEURL":"https://qo-uk.cambridgequantum.com/api/v1"
  }
}

Environment Variables

The main two environment variables mentioned are:
  • OPENSSL_CONF - Points to location of qo_openssl.cnf

  • QO_ENGINES_CONF - Points to location of qo_engines.cnf

However there are a few needed in order to keep separation between the Quantum-Origin instance of OpenSSL and the pre-installed system instance. The variables are all together in env.vars:

  • ~/quantum-origin/env.vars (example)

    export QO_OPENSSL_INSTALL_DIRECTORY=/home/<CURRENT_USER>/quantum-origin
    export QO_ENGINES_CONF=/home/<CURRENT_USER>/quantum-origin/qo_engines.cnf
    export OPENSSL_CONF=/home/<CURRENT_USER>/quantum-origin/qo_openssl.cnf
    export PATH=/home/<CURRENT_USER>/quantum-origin/oqs-openssl/apps:$PATH
    export OPENSSL_ROOT_DIR=/home/<CURRENT_USER>/quantum-origin/oqs-openssl
    export OPENSSLDIR=/home/<CURRENT_USER>/quantum-origin/oqs-openssl
    export LD_LIBRARY_PATH=/home/<CURRENT_USER>/quantum-origin/oqs-openssl/oqs/lib:$LD_LIBRARY_PATH
    export OPENSSL_ENGINES=/home/<CURRENT_USER>/quantum-origin/lib/engines-1.1
    

Launch Script

  • ~/bin/qo_openssl (example)

    #!/bin/bash
    source /home/<CURRENT_USER>/quantum-origin/env.vars
    /home/<CURRENT_USER>/quantum-origin/oqs-openssl/apps/openssl "$@"
    

Use and Examples

QO-Key Examples

INFO:
        openssl version
        openssl engine
        qo_openssl version
        qo_openssl engine

AES:
        qo_openssl genpkey -algorithm aes128
        qo_openssl genpkey -algorithm aes192
        qo_openssl genpkey -algorithm aes256

RSA:
        qo_openssl genpkey -algorithm rsa (defaults to RSA 2048)                         (#1)
        qo_openssl genrsa 2048
        qo_openssl genpkey -algorithm rsa
        qo_openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:2048
        qo_openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:3072                  (#1)
        qo_openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:4096                  (#1)

EC:
        qo_openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:P-224
        qo_openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:P-256
        qo_openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:P-521
        qo_openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:P-384
        qo_openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-384 -pkeyopt ec_param_enc:named_curve
        qo_openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:secp192k1            (#1)
        qo_openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:secp224k1            (#1)
        qo_openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:secp224r1            (#1)
        qo_openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:secp256k1            (#1)
        qo_openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:secp384r1            (#1)
        qo_openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:secp521r1            (#1)
        qo_openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:prime192v1           (#1)
        qo_openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:prime256v1           (#1)
        qo_openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:sect571r1            (#1)
        qo_openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:brainpoolP256r1      (#1)
        qo_openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:brainpoolP384r1      (#1)
        qo_openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:brainpoolP512r1      (#1)
        qo_openssl ecparam -name brainpoolP256r1 -genkey -noout
        qo_openssl ecparam -name secp256k1 -genkey -noout
        qo_openssl ecparam -name secp384r1 -genkey -noout
        qo_openssl ecparam -name secp521r1 -genkey -noout
        qo_openssl ecparam -name prime256v1 -genkey -noout
        qo_openssl genpkey -algorithm X25519
        qo_openssl genpkey -algorithm X448
        qo_openssl genpkey -algorithm ED25519
        qo_openssl genpkey -algorithm ED448

Dilithium:
        qo_openssl genpkey -algorithm dilithium2
        qo_openssl genpkey -algorithm Dilithium2_AES
        qo_openssl genpkey -algorithm Dilithium3
        qo_openssl genpkey -algorithm Dilithium3_AES                                     (#1)
        qo_openssl genpkey -algorithm Dilithium5
        qo_openssl genpkey -algorithm Dilithium5_AES                                     (#1)

Falcon:
        qo_openssl genpkey -algorithm Falcon512
        qo_openssl genpkey -algorithm Falcon1024

Hybrid:
        qo_openssl genpkey -algorithm rsa3072_Falcon512
        qo_openssl genpkey -algorithm p256_Falcon512
        qo_openssl genpkey -algorithm p521_Falcon1024
        qo_openssl genpkey -algorithm rsa3072_Dilithium2                                 (#1)
        qo_openssl genpkey -algorithm rsa3072_Dilithium2_AES                             (#1)
        qo_openssl genpkey -algorithm p256_Dilithium2                                    (#1)
        qo_openssl genpkey -algorithm p256_Dilithium2_AES                                (#1)
        qo_openssl genpkey -algorithm p384_Dilithium3                                    (#1)
        qo_openssl genpkey -algorithm p384_Dilithium3_AES                                (#1)
        qo_openssl genpkey -algorithm p512_Dilithium5                                    (#1)

Notes: #1 - In the interest of brevity, results for these examples are not included here

Example Results

INFO:

# Original un-touched instance of OpenSSL
openssl version
        OpenSSL 1.1.1f  31 Mar 2020

openssl engine
        (rdrand) Intel RDRAND engine
        (dynamic) Dynamic engine loading support

# Quantum-Origin instance of OpenSSL
qo_openssl version
        OpenSSL 1.1.1o  3 May 2022, Open Quantum Safe 2022-05 dev, Quantum Origin QO-Key 08-Jul-2022

qo_openssl engine
        (rdrand) Intel RDRAND engine
        (dynamic) Dynamic engine loading support
        (qokey_engine) Quantum Origin Key Engine v0.48.00 (02-Sep-2022) ( AES RSA ECC PQC )  [Lib 1.33.0]

AES:

# ------------------------------------------------------------------------------
qo_openssl genpkey -algorithm aes128
        [QO-KEY] INFO: "Sending keygen request"
        [QO-KEY] INFO: "[CALLBACK_cq_ecx_pmeth_keygen] Exit. ECX key generated locally (nid=1034)"
        [QO-KEY] INFO: "Received keygen response"
        [QO-KEY] INFO: "Decrypting and verifying payload"
        199FF57D11DAB1147D504E99BFA436F2

# ------------------------------------------------------------------------------
qo_openssl genpkey -algorithm aes192
        [QO-KEY] INFO: "Sending keygen request"
        [QO-KEY] INFO: "[CALLBACK_cq_ecx_pmeth_keygen] Exit. ECX key generated locally (nid=1034)"
        [QO-KEY] INFO: "Received keygen response"
        [QO-KEY] INFO: "Decrypting and verifying payload"
        D1E055AE11DD9661CC0373005F9B4AE11B0BB03EFCA75F1B

# ------------------------------------------------------------------------------
qo_openssl genpkey -algorithm aes256
        [QO-KEY] INFO: "Sending keygen request"
        [QO-KEY] INFO: "[CALLBACK_cq_ecx_pmeth_keygen] Exit. ECX key generated locally (nid=1034)"
        [QO-KEY] INFO: "Received keygen response"
        [QO-KEY] INFO: "Decrypting and verifying payload"
        21B642E9ACA7A108E80F8BF6490539D2F4A1D546B716072FFEF5DD815DADE3E6

# ------------------------------------------------------------------------------

RSA:

# ------------------------------------------------------------------------------
qo_openssl genrsa 2048
        Generating RSA private key, 2048 bit long modulus (2 primes)
        [QO-KEY] INFO: "Sending keygen request"
        [QO-KEY] INFO: "[CALLBACK_cq_ecx_pmeth_keygen] Exit. ECX key generated locally (nid=1034)"
        [QO-KEY] INFO: "Received keygen response"
        [QO-KEY] INFO: "Decrypting and verifying payload"
        e is 65537 (0x010001)
        -----BEGIN RSA PRIVATE KEY-----
        MIIEogIBAAKCAQEAhmqXGcwIJZmPHQggFLC0dxIVvSNHW0Xuta5L+7BlKOyZuQEy
        +mBAavM799IabtMLzwdgH1HrDUcOSA/C0S8h8xlld86xSnZO+ID7Bukh/TtHl4fn
        8Me2WPoibMOIE2KDAbieF/36mMbsq0N6iUbwYQb/BRGiuV16dms3Zuezj5jzei14
        zsRX0oFZDH6w5lg0cTB2NN/j8dghUmzf+uUT4nyBrmEVH6UhcN8lTJ7354rnuMzy
        GD32Oj0eeHwmzDACO12WVOaYU6kPIuJHKG1CVKhyfMqPZPaxkCTIyb5EUTSJVsRf
        rkNkc2Rehh30e2jN3vXyD1PIX1oRTTZEAFmOYQIDAQABAoH/cGa+tCb9KQ2gGPoS
        czrQ4XReEvhm7Nkt8WXIyrXwrqgrlzYWSwjyCH1RFSS8teM5AyBHx4Kl7BR4yaNk
        ZhV9bkWhp1SDk221DyYyxGfV5GZBF8kUsf3pBIuNZFlq3crv6LomE10796wt4yL3
        KC4KFRkLAeu3B3FqVsKRmAI2RUnx3wcCxvLB5PZk6MIDY/M1Dty8zmL1uWfroYDi
        CqTk2ZEVpldStwiQy7RD7DfS68/3evKMZSR2qdhRglsusGluswxRuu+D7zi+19nD
        6RhnCD85aBIhKqQKAcmZ2gXDMJTXmJiOlpCRa+kdF4PRYy0U/ooC/cLIOVBhDytU
        MIHpAoGBALmO8dwjB01s1j0TUOF1gscVIyxl7uLP6IkFZzUC/7NyfnC68vEioItC
        SoUtxS9tCDuAAl+Cis5i5BVc/0yPM4mAoGSrGLkW5kululNiPhIRfSrrQ3LATIn+
        elojK9Q9tMRRxMhpjOxYou0Qzo5qCVFqqyqyxhGFiWZ9GUg6lf75AoGBALlxh4J5
        +wD1cdeTOx360WyDSDf/hgwIHeFh82KBmEMd2u1TL8ACNkRpRdYM/iQIgNVta9uC
        m3AQI99HG0gkTImTzsfMHnoif2biD1ZynLZQNFSRruPqY0tMJ86KUnF/GjRR0MzF
        gksJppWZgpGu9lkust6k56xny9IJ53vWORypAoGBAIozf8lwQWEWHZ5Rg5zYM7Xo
        9VB8/uXo6Y0b/BlMiXtyW9/ELWsRWjc+AVidlU5US5xdI+dUx+MdXjjXEcJIqZ7Q
        sSUpFXnNJ2rSHSs7cXVtlybfIFYYCSmB4ki+B0fFSZwqNoD5tB7XiUk9ikohiZ0c
        8C0WB1VHeuVdaPYVxF+pAoGATB56xib1zgXxzdBEguDSl90nhrzfNA8c3MfNFJEn
        g908YRA1WHZP+jLQFLXOl9HZuEGq9TaeQRiO8PaKD0m/FPXT+hUiKXYBn6SJMS3o
        f7laUaBfDnTGf0DqUhBbGPVYN0OiFnu4KL70XxHdE5miyyatC1DbO9x7QGMKXr2n
        QckCgYEAp1ZBNFeVy85F4sKZ9LlvWB6haDZn021wQ1J4uSYXLOD3Eyof9b5xkPZx
        VgO98WU8L+bcwzUj7Y4ei48mN7dFb+ZfpN6JDseH2CaN0AoM3i3Am7SXcTjUO5qX
        61oc5hCyNJsPClfPZ8rFMhEN2D0xP+za3lGZiLUKOeLZS2mfuYQ=
        -----END RSA PRIVATE KEY-----

# ------------------------------------------------------------------------------
qo_openssl genpkey -algorithm rsa
        [QO-KEY] INFO: "Sending keygen request"
        [QO-KEY] INFO: "[CALLBACK_cq_ecx_pmeth_keygen] Exit. ECX key generated locally (nid=1034)"
        [QO-KEY] INFO: "Received keygen response"
        [QO-KEY] INFO: "Decrypting and verifying payload"
        -----BEGIN PRIVATE KEY-----
        MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC11N5Msvpjozhj
        /++5AOaT8+CgzUk01CCdaR6VWpdz5WlsdaNXrPYJV4nNQ9l764r8Jm5qjrSZZwZi
        Gblmjks0XHtS7Ax+8rAFpUBVPDZZLTUlRz6ieRsWdMqCWu2H3eXELgaKY6dmt+NE
        RdZ+BzeHMMY/euDutbW7ql+2XOtqCNk7k1nhefRFnjexYkzJxY+OVXT8yFDgCTYp
        60mRHDOz48wFvwCF7GeQ2lCrOysPh8LDsS9k54iTqJS3XKSL5niSJPkNwEt4gzVE
        NU8OH1zxAMC0/HpJHQ52E0Ah8VP30HhZD+h+wCUkHgcf0L0/LDS+YdO8aM2mlN9g
        HBo+FbzdAgMBAAECggEADifKPpJYZ9VXGIHeObrWOIJt5FbW8iPpfhem592rmLwt
        XuIxmyu947BK7A3yKnGF2mdrhSQi7yZUGuMByfgd5q+kcioqNt/R0D6zKW+Mk5iv
        YH2RZLik4TSqZ0eI4mDl+EXVAIUNjTOXn8MIFbueGQo1BNAeHrdKtJdo6BuHwDNa
        aMVe+HUNEUm3iR2DieHn8G/xGIZY6GelQE/Jxob2gCz/7UNoDUUW9X421uxpPPVc
        kilMTpPrAEma67YUvI9lo0hyVqxt1i4OevMYfvZbmSP+f53qzTqyECDhgTiAkGsJ
        pKa1sNNOfmVAi8y/k9rEueAjKxlDX8yQBSODYZTygQKBgQDs3pOEVbV6d8Uew5tb
        fMm8t+vD7OSDUlD7hPebc5ZB5HG4V8fk1ut5bsSxnWNtNI/lzIj4Sm65dmEGk9nl
        +eE52GtDxEPj9nrFy2K5bMpjxSgC9a5VuaG483LS0YJYQ/b7lskIXt448zMB9mEp
        oqKqCQAidQdYeAfG/tVJkxbQEQKBgQDEhFlC8GuWSYsuqeLOz0T9XrKr67DAeFEV
        amTfrH0pjKK+Km+qjVQCxs4NlfVwHRIULvW229cpa+z587FJIB0Eya1iPTRTTnT7
        6lfHzb7RQYsWE8gM64fQM0zzrna4nuVTbdzJERSijA0XxlKbG5EKBh9OkevSDiPv
        QBVQqcZsDQKBgQCOROVvj5cv1q4z2yL94Ua+Le3SwP9DjPaNC4E5AkTWkOJo6Xhr
        j1bhmdFUKQcl+XMQgDgogXRduqduLvGqetp3RvCuRDzOuCVnldBXNOue3zU4Cd5L
        KPLkxnxJ+YKDh1baJ+fZOjnZFOGnJReYzVFMNZm6GHZwAbASKs9qoIkMMQKBgQCX
        1FFKoInfAU8hbGwpsIXy49lTbrOO4OZ0j1EEZzYEhf2uwwanVK3Vv1evs25/glZX
        dbit4Mgp3pKmwxr0DnWdH1xwDC2DN5i2kWXknxeQgP0+v2XOZaL2vsvzcZWUKl+v
        x6/PQP0aYO40sitcXz396qEBiUgTcI1e6boOKj19eQKBgEnjP48A5UXUGqrTy9Q6
        SGLjSM6nf9SfaqPZ609rCdP3kZV1BzSm4DCg4FFBlDTVIklUXLYivmsg+fekqrG6
        VKxMPqb8LFTWW6idJV6T2bqwV01QpNb7L1sb9zl1wCx1P4NNNP2iFvCEhrNwEe+T
        TMBN1DN+ZVe3R6auungY7gU5
        -----END PRIVATE KEY-----

# ------------------------------------------------------------------------------
qo_openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:2048
        [QO-KEY] INFO: "Sending keygen request"
        [QO-KEY] INFO: "[CALLBACK_cq_ecx_pmeth_keygen] Exit. ECX key generated locally (nid=1034)"
        [QO-KEY] INFO: "Received keygen response"
        [QO-KEY] INFO: "Decrypting and verifying payload"
        -----BEGIN PRIVATE KEY-----
        MIIEugIBADANBgkqhkiG9w0BAQEFAASCBKQwggSgAgEAAoIBAQDM98sWhaGaANum
        vji4BhpDCOkPgBO5zHtbd4k/R2w8bwqTXwIZQ7+hsarin/W28pBUO/ZD+9bjI8Cp
        T+NMVC93unCrB9SaeyMCtdE/HlnFibJeGyY8dU2WjgGnePZIDgwh0UzciX58+m2u
        Qk7ZCrAzLU7ypynIlfBaYmHoZcbKzfXqSCKojg0GTYHixmQtruiGQ5Ft7aEF7FRH
        3ihHfsypctK1XVw6df7rwPEHFXlO+7osKYoxR1O08va9N34v2461QP+9HSMmuGgH
        goOUIUrR8vmGAM9ikK35J6UTLrUzI45sHPORWo/0sCv/92JnEi3A+/SBSKWCM+L2
        m5ouc35BAgMBAAECgf85C746Rnbzpcl8XvTqQsiMX6594eebjo3Gpz5LnlVBfKY0
        3fx3i6OKHSiyalK42EnTJ90ijrUAArNcbB+W3tdXO0ygTU2esSbNWk0ihA/4Kpq6
        FlRN/1fYzy0mr0PcSgyWXOpHdvz9S7W7CjlnrtHbbIDMiDnY2eJLRZZ6V9k8GBbV
        L1B/z0oK3GFJtuDT3WnRfDYBOYbiFORp6m7X2Z2Oy2PfsqT/VZ/SBqrgVJVlADaw
        U2STqCt4UqeOBtqajbdYoDaMeC2IYkjZdoICoTyqBN2iNJxzevOnNSBn92JRf5oX
        CHRGBESl3Bzv48pEbaCxYKChmk0N9sFSPF+fTb0CgYEA9B3M+gdVsX185Tr94/ol
        J5m57WnMzvWS7yY6rnD4k4i0J4BTa/NC7EWBESLXbImr8DuM5b/zjdruv7l45Cjt
        Qv9h5T0MaGl42Bgm7GFrd9/3YJjfS+jGdFleqPAcvLQtTdPDa+6Y4SmKTYH2UHK8
        f6BaPX22vzzJDNOSZe849tUCgYEA1vIfAj33i6w0mIcbcMfF9/T8gtEoyn2Lmwr5
        XCnxQ1b2jA/lC2waYglqIrZwfvAfyw4czFDPvjWp8WQajPuWBDX9bk7nfoyFYi8k
        aXvfJzjsOEQBMhIpycMkf8VRmg40hItKGdjBiHnYlKroAFLDpLW40Qgh3Lk8z7kT
        SISnt70CgYAOicPOVCd/VYjdogDC1f/mdtpC0F05KhjhEzbFcsbrCmYoQBU3xZoD
        tjP0kE2iEiTiPrmqaR8ZIKO9WU9gzysqJUlwPI2DnlxrCi0vQLIExprV7uTFgYxo
        G3ZuuzYK6vQTwXvO7ru+FRo+eXHw4pRlSWh2Zwk+JGGY2PTMC04qLQKBgH4Er+dp
        mzN5P9DZDV5+0XNBX7X2mLq3Bl1c/rtpH7kCSEPvobKjq4gkyuQVIDlb4Nf0qy+i
        hVmYLs2GigZ0Dgzj9nRwsEpCaoUY7HknlbpyJhQK0sSfX36Z+VErx17RyzqWS1iB
        +11fSnpHBQQDgg6UOAndgbTdqWiDsmmG1KnlAoGADNqINo1GlHPfSI1anTzxr+oo
        Pih1cP6xch1/yGv1ifZlzmFktvtzoa85zAfADTONEmkqkOOMmFxC5eRg290iIu0J
        Q4ux5Cbk2vqbVnTNKqm273IIhhtqlns0gdByr4zmVZRbn2iS/G9HMVuimptVl+7z
        7zGdJG/PGB7cOKYzqqU=
        -----END PRIVATE KEY-----
# ------------------------------------------------------------------------------

EC:

# ------------------------------------------------------------------------------
qo_openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:P-224
        [QO-KEY] INFO: "Sending keygen request"
        [QO-KEY] INFO: "[CALLBACK_cq_ecx_pmeth_keygen] Exit. ECX key generated locally (nid=1034)"
        [QO-KEY] INFO: "Received keygen response"
        [QO-KEY] INFO: "Decrypting and verifying payload"
        -----BEGIN PRIVATE KEY-----
        MHgCAQAwEAYHKoZIzj0CAQYFK4EEACEEYTBfAgEBBBxtVF2SyzjaEdktN+886AOR
        ucKaLOyM9i4lQkL8oTwDOgAE5KCGEbNCqB6F8oACgsX81rgs5uNDZJNtVvZAuRSz
        tUBNK0O7v/VaSFzaDT6pU59MBSK6NlIubes=
        -----END PRIVATE KEY-----
# ------------------------------------------------------------------------------
qo_openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:P-256
        [QO-KEY] INFO: "Sending keygen request"
        [QO-KEY] INFO: "[CALLBACK_cq_ecx_pmeth_keygen] Exit. ECX key generated locally (nid=1034)"
        [QO-KEY] INFO: "Received keygen response"
        [QO-KEY] INFO: "Decrypting and verifying payload"
        -----BEGIN PRIVATE KEY-----
        MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgp/1tT5ZstkGQmVzF
        cdxwRjQZYlkDyjqzN2CJ5HIyxCyhRANCAARXChEmbNneOv+9Ca+jZL7D28Jhj6Y7
        6yZskohILSSKh8AZ7JTMEG+OObEd1yRdIzUIEyyADcOQKF5ud1JJyC/M
        -----END PRIVATE KEY-----
# ------------------------------------------------------------------------------
qo_openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:P-521
        [QO-KEY] INFO: "Sending keygen request"
        [QO-KEY] INFO: "[CALLBACK_cq_ecx_pmeth_keygen] Exit. ECX key generated locally (nid=1034)"
        [QO-KEY] INFO: "Received keygen response"
        [QO-KEY] INFO: "Decrypting and verifying payload"
        -----BEGIN PRIVATE KEY-----
        MIHuAgEAMBAGByqGSM49AgEGBSuBBAAjBIHWMIHTAgEBBEIB2aJGEHMoftmRhHwL
        FcB5pVerfzySeyInCf06hRUBXkX3z4/fdtjuxlu7q98ROzwg2qZ+fkcKv3HY+mZ6
        kTT+wQChgYkDgYYABAGGE3H6sazQ2pw7hrIXbw9AsTPB4Kwfw00gX6ukwvBe2VEl
        +W2/iQE7YPSrR0yUHdvzLKG/nFdp6EZ/4+28Yu6EZQFOwJ8TNfk2GYjYCqK/0vDO
        oi1EFifIJjl582Xs5za6atCS8VpFv8X9P+hhRMrWPdD+Zswve/2euZRjNnZWXCsG
        oA==
        -----END PRIVATE KEY-----
# ------------------------------------------------------------------------------
qo_openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:P-384
        [QO-KEY] INFO: "Sending keygen request"
        [QO-KEY] INFO: "[CALLBACK_cq_ecx_pmeth_keygen] Exit. ECX key generated locally (nid=1034)"
        [QO-KEY] INFO: "Received keygen response"
        [QO-KEY] INFO: "Decrypting and verifying payload"
        -----BEGIN PRIVATE KEY-----
        MIG2AgEAMBAGByqGSM49AgEGBSuBBAAiBIGeMIGbAgEBBDCNxcRrO+wKDYetuQ1o
        17Eks1vtxKgQehjqarReVNWDv0B7JhWuFfRywXpzWkmpO12hZANiAAQkaBmFIdiu
        T8imkSq4HNqU7u+roV4ikUipO++P+oROllW2U/BhSsHSgl1VkDhIPLaY7y4W4dci
        aET+Dv/W7oiHR9jq+fifRMl6YN0zdhtN/NYueFOljqe9x0DPtfQWBn4=
        -----END PRIVATE KEY-----
# ------------------------------------------------------------------------------
qo_openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-384 -pkeyopt ec_param_enc:named_curve
        [QO-KEY] INFO: "Sending keygen request"
        [QO-KEY] INFO: "[CALLBACK_cq_ecx_pmeth_keygen] Exit. ECX key generated locally (nid=1034)"
        [QO-KEY] INFO: "Received keygen response"
        [QO-KEY] INFO: "Decrypting and verifying payload"
        -----BEGIN PRIVATE KEY-----
        MIG2AgEAMBAGByqGSM49AgEGBSuBBAAiBIGeMIGbAgEBBDBgrI7cFjxw4SCT00fI
        lVbLg0U+Tup1AuH4OdQQg1dvwQxGzm3j4d4dtMsVIPaYpA2hZANiAASTtiCYf2su
        /oeRKEh//FxYQ4Y0tpSK3fNJUlwX3pFPuc/aqN+bXn/HW+Pak3W8WmA1ieNBIrPV
        OXjv25/JUqQ0g/WQNGaoLLz4R4Uvh9JhXyb6xj1uP+kM3gfZHHLNCqY=
        -----END PRIVATE KEY-----
# ------------------------------------------------------------------------------
qo_openssl ecparam -name brainpoolP256r1 -genkey -noout
        [QO-KEY] INFO: "Sending keygen request"
        [QO-KEY] INFO: "[CALLBACK_cq_ecx_pmeth_keygen] Exit. ECX key generated locally (nid=1034)"
        [QO-KEY] INFO: "Received keygen response"
        [QO-KEY] INFO: "Decrypting and verifying payload"
        -----BEGIN EC PRIVATE KEY-----
        MHgCAQEEIDNP5VvTPDExwK+PXbK/m/pvNt8jttojswFa4ZqKxl7CoAsGCSskAwMC
        CAEBB6FEA0IABAbqChDA/15bJn8/USxZefJf2mTfYg3tY+x05LJTtGZFFjUI3gOd
        P/apbqZWLKdgWZw/W8ofydxezX1bMGpiITk=
        -----END EC PRIVATE KEY-----
# ------------------------------------------------------------------------------
qo_openssl ecparam -name secp256k1 -genkey -noout
        [QO-KEY] INFO: "Sending keygen request"
        [QO-KEY] INFO: "[CALLBACK_cq_ecx_pmeth_keygen] Exit. ECX key generated locally (nid=1034)"
        [QO-KEY] INFO: "Received keygen response"
        [QO-KEY] INFO: "Decrypting and verifying payload"
        -----BEGIN EC PRIVATE KEY-----
        MHQCAQEEIAvdaNtxkdRI2kKlJpD8uzvdFtrSymFbtb+YJZ0b7x8goAcGBSuBBAAK
        oUQDQgAEp+Yo9r1hNSfo0na4CHmgvPOerCFzBlqMw/naENMpA9GlsJI3SfgNeQQu
        xhUbfl+Y4xcfjXmihMZybCvNa2v1fA==
        -----END EC PRIVATE KEY-----
# ------------------------------------------------------------------------------
qo_openssl ecparam -name secp384r1 -genkey -noout
        [QO-KEY] INFO: "Sending keygen request"
        [QO-KEY] INFO: "[CALLBACK_cq_ecx_pmeth_keygen] Exit. ECX key generated locally (nid=1034)"
        [QO-KEY] INFO: "Received keygen response"
        [QO-KEY] INFO: "Decrypting and verifying payload"
        -----BEGIN EC PRIVATE KEY-----
        MIGkAgEBBDAvLrHV4oiMTtrl4wHPQ3tVCWtIMnNOGfGzHUKSRNoA1J+ZxXRGVD+/
        uECcci4ZnqugBwYFK4EEACKhZANiAAQyYlo8aEUa64l3NsirtOSFiw/bVGFqXlK7
        cnFtYTIEyq4x5jL5PlApv1K704zbW7gY7lAdldHcuyAUxSs7vXogAhb57hU//r5s
        hycZMkkqIOdfA7KDVfmjd2P8N1IoGVQ=
        -----END EC PRIVATE KEY-----
# ------------------------------------------------------------------------------
qo_openssl ecparam -name secp521r1 -genkey -noout
        [QO-KEY] INFO: "Sending keygen request"
        [QO-KEY] INFO: "[CALLBACK_cq_ecx_pmeth_keygen] Exit. ECX key generated locally (nid=1034)"
        [QO-KEY] INFO: "Received keygen response"
        [QO-KEY] INFO: "Decrypting and verifying payload"
        -----BEGIN EC PRIVATE KEY-----
        MIHcAgEBBEIAavzyTxbAF5PsBeTKNwhHgL7qBhMK8S7G9MVn6U/pB1nDY0ki3AY+
        YULa+QoEopYYFT5fdT3Ed5fyrBCdAjNYUQ6gBwYFK4EEACOhgYkDgYYABAHGrIef
        2wkRcPPL0cmVRmSZsQaI5ZUnnMecavZJwpSXQMMf/J5iofmNeKyhiGG0E+/YAGEB
        wQAJtlJU7LyHhW/YQADNBpSfmUPTPy5Lsokz6limTCariAKeXAAoi5aCMHb2/bn+
        eHdFuysINXzmtD2x2njNvZN6O8JK4yu1KraiDg3afg==
        -----END EC PRIVATE KEY-----
# ------------------------------------------------------------------------------
qo_openssl ecparam -name prime256v1 -genkey -noout
        [QO-KEY] INFO: "Sending keygen request"
        [QO-KEY] INFO: "[CALLBACK_cq_ecx_pmeth_keygen] Exit. ECX key generated locally (nid=1034)"
        [QO-KEY] INFO: "Received keygen response"
        [QO-KEY] INFO: "Decrypting and verifying payload"
        -----BEGIN EC PRIVATE KEY-----
        MHcCAQEEIBqDNLwwfdxJclqLFimVhpusfk856nv3Xw+NkoPUKf5goAoGCCqGSM49
        AwEHoUQDQgAEJToqiWScON9tGXex19njZckRJ+rfIkD8l4r9VyGcAbGkkUTXwqt8
        ti8Fs4Hafqk00ixjccaMHLGhgTfI8aMYFw==
        -----END EC PRIVATE KEY-----
# ------------------------------------------------------------------------------
qo_openssl genpkey -algorithm X25519
        [QO-KEY] INFO: "Sending keygen request"
        [QO-KEY] INFO: "[CALLBACK_cq_ecx_pmeth_keygen] Exit. ECX key generated locally (nid=1034)"
        [QO-KEY] INFO: "Received keygen response"
        [QO-KEY] INFO: "Decrypting and verifying payload"
        -----BEGIN PRIVATE KEY-----
        MC4CAQAwBQYDK2VuBCIEIEe2lwAp4f4l46TwUz+Ncexi1wJEtleXBdt9C8vn/ZzA
        -----END PRIVATE KEY-----
# ------------------------------------------------------------------------------
qo_openssl genpkey -algorithm X448
        -----BEGIN PRIVATE KEY-----
        MEYCAQAwBQYDK2VvBDoEOOAMIzDP05Du5Qc66DdfD7g5+OuI1j+ZqyCtEPAfv47E
        MFbUFwvxtdrDLcRHiNhzfUZaoIQ2AKaH
        -----END PRIVATE KEY-----
# ------------------------------------------------------------------------------
qo_openssl genpkey -algorithm ED25519
        -----BEGIN PRIVATE KEY-----
        MC4CAQAwBQYDK2VwBCIEIBU3G84hsiAn/P1UlU34Vpw/xOnXdvxVLp0V9J6Hlaa/
        -----END PRIVATE KEY-----
# ------------------------------------------------------------------------------
qo_openssl genpkey -algorithm ED448
        -----BEGIN PRIVATE KEY-----
        MEcCAQAwBQYDK2VxBDsEOVJck960NG0sekz9JuJqgDTjL9zDoFA5p+yGg6U05Fuc
        j7EemNOtBtDfOh5VOTqebcW5RomaVZvjPw==
        -----END PRIVATE KEY-----
# ------------------------------------------------------------------------------

Dilithium:

# ------------------------------------------------------------------------------
qo_openssl genpkey -algorithm dilithium2
        [QO-KEY] INFO: "Sending keygen request"
        [QO-KEY] INFO: "[CALLBACK_cq_ecx_pmeth_keygen] Exit. ECX key generated locally (nid=1034)"
        [QO-KEY] INFO: "Received keygen response"
        [QO-KEY] INFO: "Decrypting and verifying payload"
        -----BEGIN PRIVATE KEY-----
        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
        -----END PRIVATE KEY-----
# ------------------------------------------------------------------------------
qo_openssl genpkey -algorithm Dilithium2_AES
        [QO-KEY] INFO: "Sending keygen request"
        [QO-KEY] INFO: "[CALLBACK_cq_ecx_pmeth_keygen] Exit. ECX key generated locally (nid=1034)"
        [QO-KEY] INFO: "Received keygen response"
        [QO-KEY] INFO: "Decrypting and verifying payload"
        -----BEGIN PRIVATE KEY-----
        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
        -----END PRIVATE KEY-----
# ------------------------------------------------------------------------------
qo_openssl genpkey -algorithm Dilithium3
        [QO-KEY] INFO: "Sending keygen request"
        [QO-KEY] INFO: "[CALLBACK_cq_ecx_pmeth_keygen] Exit. ECX key generated locally (nid=1034)"
        [QO-KEY] INFO: "Received keygen response"
        [QO-KEY] INFO: "Decrypting and verifying payload"
        -----BEGIN PRIVATE KEY-----
        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
        -----END PRIVATE KEY-----
# ------------------------------------------------------------------------------
qo_openssl genpkey -algorithm Dilithium5
        [QO-KEY] INFO: "Sending keygen request"
        [QO-KEY] INFO: "[CALLBACK_cq_ecx_pmeth_keygen] Exit. ECX key generated locally (nid=1034)"
        [QO-KEY] INFO: "Received keygen response"
        [QO-KEY] INFO: "Decrypting and verifying payload"
        -----BEGIN PRIVATE KEY-----
        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
        -----END PRIVATE KEY-----
# ------------------------------------------------------------------------------

Falcon:

# ------------------------------------------------------------------------------
qo_openssl genpkey -algorithm Falcon512
        [QO-KEY] INFO: "Sending keygen request"
        [QO-KEY] INFO: "[CALLBACK_cq_ecx_pmeth_keygen] Exit. ECX key generated locally (nid=1034)"
        [QO-KEY] INFO: "Received keygen response"
        [QO-KEY] INFO: "Decrypting and verifying payload"
        -----BEGIN PRIVATE KEY-----
        MIIIlgIBADAHBgUrzg8DAQSCCIYEggiCWQRQfxQeghwPfPffvBvA/wewfwhQw+Qw
        QeAgOvvfQAfAeh/PQ/wfgAwPQBAwAABA9vwvBBBPghwAQfQvwhPwfgfegg+/vvR/
        vgxuxPfgQBNvx/PwfBfg+f/hQP/hfOQAhQe/wOxOwgwBO/wQvh/+ASvfARevQQfd
        vfOAPyAR/hAPgOgevQgA/huggOfxQBdAwvgBA//veuxfAOvPAdguPhA/wwgfPRPw
        PRgu/xO/igA/AgxQ/ONB//gfwOxvwBPw/Rfwu+AOxwhO+/ABwBBPR9wA/hBBwgwR
        P/AguufOxewOBROgAQQfAxA+9ARxAi+wfd9hQBQQfwxwQfQOvvQvwROyQBPfevvP
        wegARggvexf+gP+fP/wfvggfPgRPRPvugffgSQPfxhOvywfx/OwwwBPAfQu/ghAB
        BP/wvPggAOx/QgvhNwPvuwhhgwA/BQQgSAACARvf/Ovg/9wPu/xROuRhPxPvg/AB
        f//fxAQgBPf+hPQg/u//u//OPPw/xRAQAuffQv+gQBPQ/hwgfQ+f+PxwwQAPe/Qf
        AgwPxA/QhQeh/v/+AvPQ//vPw//wwBf/fP/wfAgeefxghPwu/iA/BPvwfgf/BvyR
        O+BgufP/ggBvAfvxfRggfuwAePfwyfhAvvAPwe/fuP+eAQvQfxgAPwBBBOvPAg/e
        uAhOfhBQfewhQghA/PwPgQfxCAPu/xO//wwwOwBgPgSgAAufASBewAQA+QewQBev
        fuNgwvQP+BQRfAAeghvxgAu/whhv+QO/uuhgAQe+gAfPRQggQfwRwvhPAPf/vg+/
        gAP/df+xQROQuAfxCOxRf/f/ygQvyTeQ/QBOQhAvxBgvPv/g/hBgQvhQBPgR/xuy
        C/hwxvxvwggCgvQOw/gAfdwAAwxPgPfgPvgfQQAegP/vfvwgOu+ggPg+/gAgSAwA
        AgwCwhe/RPfxefwQQgAQQfweOthgBfQewgvQAwQQwB/QRBfgRAQxPv/wA/9fwvQQ
        uPyP/w/R/v+OBRA/gve/vQAvQ/gvA9h++xg15+zdJxL48g4t/CEqCAv9GtwF3PAI
        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
        -----END PRIVATE KEY-----
# ------------------------------------------------------------------------------
qo_openssl genpkey -algorithm Falcon1024
        [QO-KEY] INFO: "Sending keygen request"
        [QO-KEY] INFO: "[CALLBACK_cq_ecx_pmeth_keygen] Exit. ECX key generated locally (nid=1034)"
        [QO-KEY] INFO: "Received keygen response"
        [QO-KEY] INFO: "Decrypting and verifying payload"
        -----BEGIN PRIVATE KEY-----
        MIIQFgIBADAHBgUrzg8DBASCEAYEghACWhiCAQhfAUG/d2E3/hIEPAe8H/ujED4+
        iCHxRhMXoSe/04AZ6bYug6P4AAD//uDEEniD4b+vA2L5OhJkexAATYB9/8YxF+To
        wAAP2gFB8YAc90Ixe94Ig/B/5OB74PQf8Qnw/CX3ye6MPxBCjQQC6AQ/mETvSBIA
        YQB+DfAeH7o+i/4YAlD3gCDDwIghEUP0ACL/wiEIIAC/3n8d97v+AGD3/FGIou/D
        4IP/SIAQgB/nl8EAAwB98ZAE94Jh9ELvw+4AOweIHwhi/3+xh+Efx+2Egx/J4Ihc
        //n/BAAYSl8P5uC70fwCH8QAgCApOB8D/+fD0Heh8MA/d7zPug/0JQe8EY/jD738
        DF7vBBFwnhB/4IwaEPpBdBr3w/BwH/h+EQzBCHAu/+MIxj+IQgi/wXvAL8n+//0H
        hC74IQe8EgB/78oAeB/wR9F74ef/4Hwg6PvvdF4I0i+Xvx9CUfBb78IQ/EMBBcBs
        vhCH//+92MYufGL3+/ETn/+6EQ/a70IQfCQPPjyEXwkLkg/jELxdf5/vvh1/4PDH
        0PPjx34AgATvRADwXwbHsHxDB4owf9/vQh4T/di58BdiAX4vkIEHxcCUft9BoG98
        98oBf2QXwc8PwAkAP4ggD0fcAH7XwhEMHei7sIC9H4o9e/0YueCMfef//ouhAXgB
        GGEfwfD7oe/F0fOH8AAfB78BBAAEvgeAD4Cg6gnfDAD4Nj6UYS+IEAOjFvZQm+Pf
        xCCEQP+/8PiBF4Afh0AAhdL7/vgD4P/l94IAg6QAgk6jw/8CIIBgD8XCdCng/fF4
        nBC8AnxA78Hxh8H4RACPog9+ABSBJ7whh/z5hA+EINl4EYCcyDliHN4PihB4QghD
        z//gD3g/4934+/1wHAkB7wPgL4QP8Fsve+GL4hj6HgBeF4IAA4HwyfAIQPb+Dfxd
        D3/geCEnvkB4YQdDwoAgB7/Q8EAfQA94BxfCIvxH/7g/kNwINd6AouCz7oREBofe
        h7/4x+AIHwfAIAwD6MAd9+Du+e2Hwgd/8QA5Dz4NeFroxiB7/veF33/BALwB+98H
        wAGAPy8KEPR/+D/Ae+Afv++H2hdGERPD8HvthD8ZweF4PAB7/oR/8bojB+L/wf8D
        wxBBwgu+98ARGAH/vCMEPBA7zoyB/4PhEF3ngi+EYRF+IQxf+QRAEB8AN/AQIBE3
        4Hhe+Xwdl8T3hf4IOgeP/4fF9/n8BD7wyfEAP+g8XnviAAouj+LvBd4IviD6EIPh
        D0AABF0AjE6Lwwg8AgQBB0fvDGQHtB/3+vm6UXBC6H4t/94XSi/oI98EIJCi+MIh
        G8UX+fD8wvAEHxviIP+/eID4O793Jve8MAPf54AQj+UQ/iN8Ovf74f/hCQBQfAIQ
        SiD0nyAAL5AAHvogeAHngf6AIBdCX6Od6H/yhIHhQA+IWwCB0H/cGL/RB134g+H7
        xvi6D4Bd6AQxBEMZf6EUPf/EIYug9vnhlIIYBD3/YyDH/3+e4T4P76T/fg8Xvf+3
        rXSd//hBA74QucADougFzQhd1zwe9CPfvdB7ox+ED3w/GH5ti2EIOeB/xgiBr3xB
        8AHAD58fvd8AY999wAR+4DpAkCIv+jCMZSaCLQQfCTwgDB8COhGUIP/AAPweCQIS
        BBvvxg6MABdCEIO/D7oC/UEQRgBwWviCIQf/2HfwcEPojFCAAQ8CMI/hD7gu96EA
        f/EARgjD/YQZ5QL79/Tb4QD/Gu0FFgINMALlCvb669oZ6+YpAFINAAErzgXyBhMh
        Ch78AA3z+hjvEM711Qn4C/QHI+kA8wDn6OjtAQ71GPX+BOP59ekl1e8/9gjvGf8a
        HibvLPQbBPjgDQDk7Pzn5OoH9w3Q6yLf2tr66wQYBAkQ/AX4CB0aBhEpRPAC/Rwx
        FQAISBUWBhDkH9j87//dL9TUEgue3u8XCA3lBxzI+fb/7f71OOPzEiH3/u/o9Q37
        P/4A+CMn9C377SLs5yb0F9sQIM8QGQ8PJRD7BfQFyNAmKBwU8vPb5SL+D+I94/LW
        EQkS8DILKeUWHv4bBxjf8wgQ1PwV4foaHhwF5gT4+PDEBRr64RffDyL+EwgsIfXb
        0BET0ALyEMf6KA388f/XGefi+fDW+d0AGPca+CvpDgL3DSAC3gEPCwsJCy/9Vfol
        DMzzHe8yB/zr+u0L8fYB1hzrAN8U5ODnB/cLBK8cCO/uIAYe6hAODw8DGAAi5xbx
        0+nrJxoo5vMIBOEb1gngB/nb7v0eAeTZNQU7/QHuDeb22AYwGxUGDvoF8ffzCRD6
        /gQY5xXaC/T43OIW4i3KGf7z7+Qp4gXr9vTtASSzM/QJ/AcbBvoc7TLtwx0aHfoh
        Dg8bFtsWEu3+INgwI9oW4eoR3ggQDhwA8RIS8wXy+gQAAg8VEgMK5gr7BiD19TMA
        CsE65hDq9goLD+8U6/ERJOXr4P0MOyjz6vEP9CnnEhP8+vn0MQ71EwjtGBT4AQfl
        9iH1+fgN6vQECgoL/RXrBwP0LPnz4/ntwPvbC0b46yIbTMrYGPX9BSIa/wQh8TdY
        6hIp5Qn8+fzz7LLh3PPS/g/rAgbyHPvGExn8DRjjKfYMB9wILR4YF/EKHujJ+/nx
        Gv0f40MAA+bsBOn8zPryH8z81R3rDy8TA/YN7QEG7/MH+PLxCzjyBwDNBvMBAO0H
        EecZ/v0v3uIF2f/w+PjrDBLRMy7iGQAS8ur16RnrA/oUJRn5EfrtA+GwDi4CDPYB
        Ee7/GDYLyhntA+X+6v7+KdrmAPoF2BXvJPYGFOcKIMsQHPQJ7jPz9NsEIC8JIgXk
        Bwm/2xINGwb48vPx8vYP9/bl9PH+BQjyFw0u+wwtKhsPFhAbENE37Bbd+BMbHRbg
        /Arc8wE7yOn52ef04w3qFxoE6/bf49wD7dksBQD5Cwka+BIGFwAkE/P+DxsD4cgJ
        /+fi+v8JKDjc8+UxA/PfKbgNsv0dCS79DQgJ/hjy1Obe9yD1DAICPw3A+gcYIP0B
        FRHq6e4L+eIQBc3sJRb65Rbf1fbgFvMO+1fr/Pr9/gMKB/otDNrtHdHuNvX5yR7M
        8fMquwH3HQL60wwpvObvGOkpIf//FQgayAqmpCSQgACrU+n8yo4jhYqcowCyo+Ym
        +mJYB6DZOOirwNNa2JxyF6mzVJqxsu7ZRVbjaw5G+qmvNDXyJudXAaiykmcycNZo
        SwodscwkRrNeuMEXyXMM/lFyWAeZcyGQKd4cqb6Yi2uWy+yEvqPIZhHtLJlJB/Ym
        XGC6HRgCZ9wKinOB095PBPyDa7uB+7P9SVPwCYqjVatRJ2otKjrSwJ5QtEP58PiM
        QXZF6swKi8Z0vBg1WkWmRGnu6HlHlIyjkrQntoqUFEEQmOMU9QmU5rO6mAB1Qhno
        GQDKTipiI3pqKa9E93LlJeEzJPvmw1XTqerC8WlizH8pvmQJTR0lHDdwIopBc9Tu
        EPBj3wUi1SDc1Ku8FEW3UelWdBGFC8aKEDPMH7WoUSli8H1wt8/ARqxOG23mwjyC
        CxK1C8aubTLT6UWFnyA5agLMrbmS+5tNDL5sUbA1BS19EVB9uBbGjSGYw9BOUQeN
        IABnCQt+rfoTGKfG2IZG3oTkqmd/qvYAYiVOLy3VErPTLkdQtdS6SEG2AoXZZsLL
        LsxbBJlXGxMJ9oUeHWGKtFaVZqp6mRWXCZ6sO7giGGHeUrhK/HOpO9UbT1UBgQea
        LLBBFUhtwvSenAU7GuFCdfQYyl6mcyJVq6ex3LhEnu1pUoyeF/IFKOkdUl1ZcRtF
        kWFZVQN6/Q0Ectz095Yg9prBCDZWYTJ9zfJmp+EgsMkWC6bfrUtd5GrULKdGPbgk
        nST2Jq5OO+AOJQDGkKCkE5QhSq8gG+9tU/ZM2QjmGD5NG3jFgkhGmRFh5MXhFhbC
        s5gbn7fAuqKawsK07vhKyMmHoJq95gpeXEG8FihM3x2hFDPV2Fw8N6mxM2HcQRRh
        V3jPaTMC9ifYihH+h9BwKforkaVG8qWzmz8eCdfQ2cWNlLqMV7gAhy34a+snxaBX
        nh3LY0ayP1qiaG2IoYN+8GpnJykc+uShDCTlSYqgK9mjXxoQt/dJofNGoEPlFkNW
        YCQJUytCmjFmu5dbj4YdEd5l7882D4zau82bA7R2YfDzUpJ4wF+0otehTrCTJBNB
        ZXHY/QUPXZusTWczMcuOeexR5R7Q4qvAm5Fd2IMpHcpmhKknrIoTFSzJC7kkQqb8
        SFErvv4KWO38rizt0jGQG6sCwUGcU6xYvQZWBEPhWnUXawcZoX+0PbWXBkt0XIer
        gFxkcWIuN+0m168FdBSxJMaacft0MckYgWzt2IzN5hI+mfPTqZ2SBpdB2C6Gm+Vx
        Yo3EyXaAuagIS96onn1mwlH9mEKdeZrNbLcaREr2iMYeJAn0ksY/aPTWRb7bJmc4
        hgM7yzUCaZ95BNYKHBaforVsOrF85tttyP5K1rnSCEqhHOFXx0UUwH2gKqJf2YuR
        yuSwLhYRrJiNKoWaNzWViJRkEMMyATvRhAURVXbfhngEgpuglhe0auAKlYEmsWC0
        mHVhueqM+rsQgnD7RyCOCnPxFRojqPi4OY/arDmCgtPv0wOXBjWB+4x3Ovylmx8q
        5UlExqVXF5AxTYxwr9YnPKL9mIoHl4OAiOsVhd1GzH4lxVylcRjRiHJIEDWgIRji
        avtifR0je1Patvmt1zYG15XRNDF6qPG0/s0gMs9kNN5boAPBf7JM2lswTOk3fLyY
        v+kkqu3iU45AZRupc6G5QGie8tdTsk7IovXXRvjf2IeAbrdJLU1wWWTmhVk3EWJ/
        5mxE5ZLtJ9XPxdizLrXCfa/qPDrcFmOhKFiQUtVSiV5SYU1F++fGuDy64aYc4lUF
        73LuWSQy7MwmeSmICWIoOHMaom6Ay9d5i1EvFgyn71NIs27bFTYviA8wpvRaBnw4
        6DwL6yJMcg72uk0kdjycP6CdWLefOOIToJsfCAZX5tBD1i7Gsaq3jWynnA+RF8ZM
        JeTX6nOFWQ6Zf5oLHOUioUsYjgEKOqKYQSItJSGQ7eAKWU630icFRizzKZwq2dZE
        6Vq5lzstmL+2VnqmC4N1V/q3MzHs3zh9J/odJsOsyZ0YVxjBCDmT9dWP+rcmQWcf
        L6UFviVwOudlUvoFBI1Enz++c5TE7S8bkWtHO9zMinoKs0BEx5nMXaf3qYd+uimX
        ZNeiiSJaEzslqEzUTjJH3B4+ovOolFgMvF1XOZXT8SqubBvN41AZFDL5oUONtArB
        0tce4IBlnzGUl1quuj5muI9ZTyRPoQ+ryJ52MpOqTeKGuEhxfq3+CArGGafBPAVq
        +5f+XTMfXqU78QetHEyOyw3UZQAkQAcCl3w0AM/AYkccU1pVJP+lDXDUDoC3Ry+z
        YgYGE6gRKrLEpDyqzzy6apoc1HUHlmORLVW0uG2yai0nHY7WVWf2aFayfVZLvZB8
        MW28kqNHfo/p6uINKMsAEUVl/FhHYGHvUDRAMEKYZWV7j8OJabVarRE8
        -----END PRIVATE KEY-----
# ------------------------------------------------------------------------------

Hybrid:

# ------------------------------------------------------------------------------
qo_openssl genpkey -algorithm rsa3072_Falcon512
        [QO-KEY] INFO: "Sending keygen request"
        [QO-KEY] INFO: "[CALLBACK_cq_ecx_pmeth_keygen] Exit. ECX key generated locally (nid=1034)"
        [QO-KEY] INFO: "Received keygen response"
        [QO-KEY] INFO: "Decrypting and verifying payload"
        -----BEGIN PRIVATE KEY-----
        MIIPggIBADAHBgUrzg8DAwSCD3IEgg9uAAAG6DCCBuQCAQACggGBAI5eeF+roJ42
        9GAYSVTLvxgcoQ9hU8LCCtbznPLGdRjTlXJt5dLhZDzj7cAQqqxSt1cx/gEZiT6u
        0LdkkfjJ5yrhKA9ibbAumE1mrzp1wH0dRIA4DQDR27yMQl8rMpqUd0Tgl7/EA/k6
        YsQxdzMQmEtvDkIxGsj1aRzbC0FvD/80y6ujS6ik4JiWyfF6B8lpwzkZmYuHA9OQ
        TwJsKJkKYgmOYA2dytmht5eHK2MhHREanECf4gF8g6HNwNo2Pqr9l4WHxo0kcQOP
        E7GnwYas9O4milOXe32DXUAG9eK5evaFyGGP7rVOcLvd7qFRyDdaqmrAstGuEaUL
        KDI53fzYENZV/W1iyY3DYtG+buNqH5IVMua2NJAwpt1DNccswbkuSTddITuhXBYK
        cc7gS0RwYkjzvAbNmeAS/pAf2cJYOO7xLaMouscsZJBklW3zhKBtB9+Ze72yx6r4
        lB7G8yliHXBqrap6sQtNsasvmyufOCgKApqPL1I/mfY69JSdRDqhMQIDAQABAoIB
        gBZNsHf0cD45B8HCLELPhIlnesfpDHE3avFPyuextYiFJSV/GAEYdFahso5jTgmf
        D7/mQg+0C285fdMtOz0JjGCIU3lNhzeRpSSDELKM3fH70s5veYIGXnFEW+WC4/OZ
        jLHKqZtOPv0da3mm8jCayfEPXeF6xeJzp9rwaev/VTc68ylZdLHf2putC8f7wRqJ
        qh7Y5tgX975+HhKYFSgcm00588xOSwgbMKLZdy+ZcW9Lhu0M3yAyfICttie5Vcn9
        3jIaIU58jUbInn9MovhnWSRtGQKr4jgVYjJbgnVdxsj+LBsMko3s9Ne/Yemfi8wg
        R+15Faq2rxOP9UuaDWhQsHdX4MAYzewbIs/pIvS+nBNjwsbhABpaBgIMhsr4jVoK
        sjpHzAOM8568tdtaiN4oMFq0HcyfqBDZGbz3/3/mgyNsOE97N5aouKOLj0zfaXxt
        BQPm6XNEF79dwTMe7WyVjNUnF+NCWf6geg7h8l0y/u/w7ENZ538NoCah3ZI2wvd5
        PQKBwQDHh5jLRtrE4XuSJZMy7Of84yvEh3o7O+yyj/vL9ZtR+BDgaBCM1fzDje8L
        87/c4lXuIeuYgHmppt7OdF3HZ6btQ/wKJ11lSF+3AkmuBbAdjXn5i0dAG+6Zkwo8
        s41G8XQIo7z/dQroX2j3qdCWKi9WhwiA72R/MHpTy9uCEfkJsCdF4Ht03VcULhAS
        V74tL3klq/ZeZNKb0VRMhWkxAb2tUfGIbppDWvBSs6oxm6+JaaA6qFqLD8qMzUWN
        to5ICjsCgcEAtqlyfFPUvyRZXZdrEOS9e4rlFbwtvhAHXIawqR+T+RtQ5QAh6r7Z
        IrhU7utzAWDEDH2WVRIfEdTrEwz2UCqNqlPBNR1msyNx75/5E/D+hyj+M+lmdadZ
        Y0Q7z4H/pUbf4UC6Mx9yX6cuCn4o4RBaa6sMnpdnKNp5HP4IegWYFvBk5ci7WPvD
        zD86Eg9DADTFCPiiBG44y0twkiWZV4a2aoHOjPWXisXU4phJENHWF4lD34k081eg
        B8K0VgJiHN+DAoHATuF/eVWQpWcTCCsMr4RTDnns0qxQmVxObiVYAUEe31/3pA/g
        Ax2R6OmSyKHbhwJ/wD3uuwKHlpde3DXK4UtMBd7rpEP9u03KcTpZUI/1GSnWP95d
        E643PMWRtX+yaYqJOeUpkcB+yHD3uXmL+eHBhy6pIPgDPfk3Uytzo09hqf/W9twR
        UpkylMrFFctUZt6uwULjilvHm0w9TGctt+8dQojzuOEo4VnxSnC25xfKZMO6UZY+
        /V0H0XRRe/3g8AADAoHBAKQec2MJ32kuO60/008Gdsl97n8s6NyQgky8KBaM7OMx
        i+l1yQOmHmp3vLg+jMJ8MyoV3PDqq0fWSrB/QQCee1LCliInHJNwEXr//UfRjJ/c
        USpLV2f2yPXL5QF5CD10BMva4HH2m0keaNu8pvYxP0zmDxyfZGzsf01xYiRgylox
        /DYJuWsmKrJlTMPVOpoAz9hTrR7V+emPCsIFTlW6EER6BR/ZuiNRxQkjUuLt5rKW
        /ojmOtE5tevDIUz2LzlKCQKBwQC9VTijWBzPEwo4xDoJM2+8aHBP5s2+fQmS7C++
        7QYAbTARATB55eyCP454rIW+wah7u0pPKb5kLAJ3xeCksLeRQTf9CTCXNdnO5680
        1Wsx41C3gD96BhRRGZO9n+Jjp0GfUcqv1L16mY3mbtKPVtitXvGReow3+6C3estv
        Phs8m8vk2Ddgs3gMeCf1iNfIJaIfjLsEzT0TfWdGwaxHsTI9B1R9EY7dPWyf7sZr
        r3/kwEGUuAOG/6VjcwTjQdGxid1Z/CF/D8BB//CA7738/+KDC/+A/67C+//+A7+B
        EBAEA9ADD/8C/+C96+47CFC/DCDF7+A+DGAG/A78/E5/5B9J+DFBGE88ACC57++A
        4/D8DC9G9/59//8D9L57+4G+CB+IFG/9B9B4+E8355/9B+/DB9ABA3A+9/A8ICC9
        GEB7/C4A/8A8FI/DE6B+++A+C/CDB9+5D/8/FFA67FBHFGFA5ECB97L95CF788D9
        969C/9B+J4778DADG89+D99B//7+/C7/3FBFAAA+979F+ABAGC88DCE5/+DBEAAC
        /5AC5/C5C8HBC/J+7/HCIIA7+6A6B//9BCKJCD/7BC/D5DEECBAF7DF+CEB4+99C
        HEDD/98KBI55DD6FECCD/76+5AACBA+9FCCABBA7BF/E/++CB7B/76/ED7DAB/97
        9999CG38CE/HAECEFC7GE9L877DBKD99C66BA8E7CCF5B/7A4A9+EBFC5DD6B9B7
        E6I99/8F+9C+EHEAC/AADE8EKBAAIAD+A9FF76EB8+86EDBCA/CDF/69HACI6BEA
        C+BAF+/988BCD+A7/BDD/A9DE95BI/5ACB9FA397+B7A8/AEDADA++9I8DD/DAAE
        677BI8BABz+B8/9+A8/E+6D8+C8/G9AAHC+9A+/KDCB9/AH/H+G7A8/EFC48B+4E
        BDF9DF8/DABC8B9/7B9+6+ACE5DB5DD996F+DB/7G9H/9H/5A+HAAB/CBGE7/+/D
        6/B9B8+CGC/GB++GID6C8E9B6EBBFA+9CBD+/+D/+55EAC7CHDCEF/CCACEA+6//
        A69DFG/7/CAC++/EECA+A+9CC/8/BC5FC8ACAA6+BC6BJBBBABFEAAAA+ECC97EA
        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
        -----END PRIVATE KEY-----
# ------------------------------------------------------------------------------
qo_openssl genpkey -algorithm p256_Falcon512
        [QO-KEY] INFO: "Sending keygen request"
        [QO-KEY] INFO: "[CALLBACK_cq_ecx_pmeth_keygen] Exit. ECX key generated locally (nid=1034)"
        [QO-KEY] INFO: "Received keygen response"
        [QO-KEY] INFO: "Decrypting and verifying payload"
        -----BEGIN PRIVATE KEY-----
        MIIJEwIBADAHBgUrzg8DAgSCCQMEggj/AAAAeTB3AgEBBCCMUsX2Jc2j1xGkmIY6
        KkCjRHbCLWjXtOc4jxKqy3SrnqAKBggqhkjOPQMBB6FEA0IABKhbo1TtqWYseoqV
        Q5hDHwp6evoD3ZtCgn1nu95i7JKllZtvD3N1AicDNkDMxbX4K/xMo2BM0IhgWP7N
        Vo3YqklZB/+CB9D+D8/+A69/+//+C+7C//FCFBB/6EHCAFG+B/3F8CCD/88G7CEG
        GA69ABFCG/CJ/K/A9ED4E94//BAF96//86C6A428/9C7+DE/DH9I789B/99+/7/7
        6+//8DC+7+BC9AD+BCAAJ/+B59F8ACCADB9A688J/A5GB/7B9CB6GA5+8+6BI/B9
        29A/6D/87F6FA//CH7A9A/C6F+5BBD/AH95++A96EE8D9+B5/+97B8A/A+/BA/8B
        AHOCCD5FB9BA99/+8+C/DG8396CB+8JA7BAABB7BE4/ABD/D/C78868EH6D+8A+B
        +CD//6DCCBN/6C+CFGJID+9865GA/+B///B+AE8+DK7EF/DBAA/6B9D9/+HA+/CB
        E+IFA6AFHD/FA9/FF/E+CCEIB6855CA9/DF8CC/C2BCE9A9+AB+AD5FC+DD4DEE/
        7BC+DGCC8EDAF9/88+H3BH+/6B+DDA3G4H6/CHDFBBFE/CB/EDD/C5/AB8F8A/L8
        77A/BEE+++EDFCG/B/M8+EG+8F5++D9D6H+//+CG/68ECE9FCAC5CG+26FH/+A+F
        FA+HC998AACA+5EC6779/B+AI/HI87FADE5EC97A6+/CE9ACBDE6IG+BDCCMB//E
        BB486BBC9D+J7G0B+/L/G/+4BD/AF/8C79DA/BBC+F/7F/D/7++BAD/89CACA9BA
        /J2+J3GCAJA8A+8D9CE6D8/D8AAC+50IFCCD98E98B9AC/AA+A6BE/K5E9CBCDB+
        4FAC6/CCD/AA+7BH9FE799+9E9C++8C7+EIC+7+CEGBEB6//BB/953B9DDA/GEKA
        HCHADCDFCHF/3E8B9AHAD99C+A4+H299DD9/BG2C6+8++BEAB8G/DD7DCBF98BHC
        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
        CtUqFF9zAJZeA6TNhHkEr0M+9GT6Be4=
        -----END PRIVATE KEY-----
# ------------------------------------------------------------------------------
qo_openssl genpkey -algorithm p521_Falcon1024
        [QO-KEY] INFO: "Sending keygen request"
        [QO-KEY] INFO: "[CALLBACK_cq_ecx_pmeth_keygen] Exit. ECX key generated locally (nid=1034)"
        [QO-KEY] INFO: "Received keygen response"
        [QO-KEY] INFO: "Decrypting and verifying payload"
        -----BEGIN PRIVATE KEY-----
        MIIQ+QIBADAHBgUrzg8DBQSCEOkEghDlAAAA3zCB3AIBAQRCAYUeKyxA505jwYQ2
        mJI/vPpckO7+i0dPNrNcWH+28wkdBVxYH9SSGJTAjOg1XAlIgQC4yk9BU+JrUY10
        1WNzkniIoAcGBSuBBAAjoYGJA4GGAAQB59KwDnLi2mKgGbVz7XKV1hgSFbEMdHg6
        WDOsgyQwT49BfLT9jybA8Y0HyejJi/0v6oWsprjqww6REC73IR/npSMAQcRQl96+
        DI1MgH2SBHHaj4lNY3m0unhVbVBIIEXOQ59nDOf0rJuLnejEyQZkl7HsOySpy9X+
        0zDY48CQrWE0fZ9aIHQRE97/fEB33gC6L/Ri/4Px97//vh6AIyCD4PyDEEIgkBwA
        wh/oQgD8AIhfH4QAc9//d+D8YfeD7gQFB7YPB6IXeD6EIRfAb/BgB8fwe+AICDEM
        Qh8D8QgF2MfABEHvhc+QpBiB//wA+QHvHB8XuiFz4gk7wPwA/8RAAJv5g9F8IgBC
        T4vb8JH7hEIBOBAIAfjJ/ARBCMQiBIEAiBCPvfD+P+fA93/vA/4XxBB8AgcJ4wgA
        B0Xh/KL4uCD8YRD8EngBAHQfgF8Id8/7vihAAOAB9j/weF0XLj8Xn+CD33vhH4Iu
        +0MQvjCMHx/6IHzDCMAxfF//RD4L/RGB4Xg+KMHghEX4Pm9/gReF/PBB2UAhCMMA
        CBAIGPiH0BRB54RBe/7gAB4H4/eEP4OiIPgPAIH4wED8pCeCMINh1wXQ+/0O//AE
        QvBN//hhAXvwEB4QAk2H4ujL/wfiCUIRfFz4R+CYgQh8IHffGH4gBB/oNdIAHycE
        EHifBwIugCP2PE6UiPg+PxRC2AWx+8X3gBz/3BA773vC+AAhBB0Xu8CEQTD6AGgc
        EMHt/+QXgh/7off+D/d990AiH8ARBfCEHyeGT3gADwIR8B8QQg8EJPA+QPgA+Enh
        lKIWydIEpBd9z4wk6MxCCH7fQ790vEfB0XAbB8nRAMfofCALneg9oZBjB/vfCCQX
        QB54PPD2MgTe70YxjAPICBAjwOC8IPw/F3/vC9/4xb77f9dH4Jg/CH4ClCARBW54
        wNg8H4Cg6NACf+MYQfAIQhh8T3+kEAPgEMIYfh70v+/MMPPcAApSA+Lv+g8Mgva8
        EggAAAAC9F8Igf53ov67/5dg/8AgeKIXQbJ4Xh+8AGy9EEHul6MRNc+D3SfCThPe
        FsgwbCEHdjCXhSA+QQQ+L9HfC//eyDB0A/eCQHwA8EIPiFwoDA+H3ADBwXehDruw
        eCBO/fH3vA9D//yaB3v+gEDoRfEDggF//4f5DkXTj/4QRl4IBgiID/v/MHhPDFkf
        yCLzgCCBoP/eJ7fviCMQui38fvj6DpB8F4YhfIIJBe+Dneh+EYABOHwfb7/pRC+E
        YRBJ3gei4MXgiAD//B+AffjGAG+A9/vuj6EHxiCXgSF+A6dCRpABB57w/k74HfAC
        AQ/b6P4Og8AQB8+EPgAGPv/+CD3RgD8IPE5nwAfH3/Qf4Aggc4IIvA90Xgf6MZu/
        3//giAD/wl/0QPcGP/edLv4+ANz/PiEDwP/KUQPfMXwvi8L3PAHsARC0L+ydL0Ax
        D7///g+EOweIPng9AMABE4D5QB/4YPF/wX/C9zv+C54HQALzweaGEQjFB7/NjGEO
        ej9/4gELz3w96ARPbKEIg9B/wPDAAX//0cOgAADvQ8EH/xBCj3f9AIIRj+InSDKP
        YA++MJN/CMX/F7wPQ+CUnOcLvwjb+Lxu/GHveo2H4NC9v4wEF/wQk4PvxE3kXxlC
        AIQ8EIff/Br/w/4EQf/GLoACF4Asg/75g/78ABiD8P9gB8X9/R8QCAAgHxgEMWhF
        KDwRaEMAgE8L/f+D8JAACAHfg6AgueGLvgd/8YwE2P3REJz4fh0AQeC/8XeA8QA/
        64EHRf+IP+DH/4RDN/Xw9374SBR4g/D34Jz+B8I/BEPwenD7gPf6X3yC+QHffHrw
        A/DwIgdL/6PAD7YA/DsQtkwEnuB+Anif+EYv+F8fhEH4If/+APQ8HoISD8P49wv9
        MOT7/fkoKBURCCIPAAn56PH19d4E/eAC/xX83+n1JBDu+w3nzjYP6gH7+hEF+RsK
        9dsC1xMv9QYVzx0NzvIO+eHz+9wo+evusPjz6PAXJQP59/0LA+Lexdzq4eDpC+wl
        5xu55u8i5g8GCusL6gTr6PEf2sgRFxzfBNbmKEIW9A8ADvceB+/VCiz69Q8SJ8j3
        BxT5Bufh7R4L1vO+8uPV7uTXK+8h4ygEBvUQFSDu/DEc3gXywA7pFtcYF0Dj6R00
        3Nvq+vTr9uH13h33EA/kEr8U4QzrBfgl+uPyFBMo3t0F9QcH9skXEPzc6OIj+isS
        3PIL4PnhAfcX3uEI5hUz8tsw/x/vHxn+DuwJ8u7s4fLk6yYTDwbv/ffyF/L/CwoF
        EQgk0PfdF/LTCxnv1QMJ+vjjAv8l7RHr1fIq/hHa/+LY0wwkARnqDtf2GOYC0eIa
        7B4NANkg0/72BeAJ+uwJ797x9O49CggX5uclGOgU9Oof08MBOSApDgUb5eM0AvkA
        HAHb3frW5eH//tIVCwzzFQ8O5CHW1M0YFwH/OOoCCyPmCxbo7AH24ev0NiHu1AkV
        FhJG1ynlHgnk/gckEPkrBEsWD9wD8AcR2PXnI1Ef8dYTCzkg/uId6P4N2A4MBdwa
        BAMF/w3gBRIb8OUOEOkm/icPBwoW9d/29RLkAs4DJOv29gAZFSADywLs3gUX/wAR
        BA0lECMgHBIY8TEXEPj+8/8dIvXcEwsD5RsVDhoR1w/4GR8LDf/kCe0Y1Pfs7wXZ
        yfYXHunb/gHzFAHk1PT68t7o5BX1Gf3I4SMbARsaDQwFAc0CMx8W6wILKfoRDhAo
        UPsC8gAF8fEM9u4SteX86f4gABHy8PkPCP4l+BEMLRP3+xoS4O4E8dnX/tfk6+QD
        9wcCA/Dz9v8h9jfyCtr15y0S9+P5+ir+8P4a3ELi/xT79PscGgziGBIW4u3/7fQX
        6x25GN4W7/kZ9Br+Jfzt9h4FFwQD7/rRBfYiGggF6McR07zXAP0EEB0D2usFBwXX
        /fIf3Qj5AQw8/Bbw4/758iYkIT328f03MAAOHFAtAerlHS0TCSgPAwgEByoHBiQi
        3fwZ8wTb9B36DQL+/QdEBvEQ8RL5+P3m3ALW6hwf/vbt9BD990UUDC8w+BQODhsp
        Df8UHA8ICOnmBBgdCDL2LwL4H/jh7voHC/kTC/brDAXO9Q/U7dooN0ICH83+4BTf
        2Qcg9Q3dCOQKCjcC4v9KGR4YEfc1HRwL7Ob/DfP+Exf5EQoP6wD+3QE49PAI998G
        6/33ugjtGNAg/+EMLQsd+SwSxAQpCxf+5Ane/DILzhomEBjr9yQz/iL3+QjuCvsd
        QP/n/uvz8B/9BAIUCqx1DnJjqY669a5V65y+CMKPBpdYjhp1S8HbxJKEftNlAOPB
        Evz6dYfCvykovVrAkAARqAFx+GscZt7fFPrLsiI9s7Zyl9uo+gtaWhn2Q0Rl4URs
        Lilo0+U63jMMjAS1fu0OKUAx2IPNVBoeYgPjmRY23kJr75CkqTrTM3NtMKmSCpd8
        ymERZiCSVIY7oZ54YwME7S9hA1Evi/sJ0lr60t6lHnR7YXGZ+2D+ArJ2XV1pbpQo
        1KoTmxAHlCSgJ4PmHnJN3G8rtpvVy2lGKHH62/QawUQYyPA5nF+VhcgI6gRNRE7X
        5kFfL1Lc6sOtR8CGZfXmHsIFC8UB53tikCOEOoBqAhZFtWTWFufsstKnhHbHRzzs
        pUnLosN75tKhLxI9O6qi4L9HTX3dl7txw/tcCsT6dmW6tKELAVbc1a4xgtuq5ZWn
        LKfJoKClHZ4d+F0PhK1Sx6gZUniEcdCQv6kJriZmBh2UnpkGxNEeVApz/K1r4NyG
        LP7/KIlRug/EfkGDmvdZ9jP59OkMSEW71+Dd4ilM0EML1SCVYPGx+aZtiJnyK74V
        SqAhWndRnpIW+nO75OqCg7qaM0sgDWWNyfMEb95DcfVH4pN/a4Jzq25npTqKnGPi
        jaJkAeHbTsOHwACS23lFz5AepkLxm686vhXwoQIGdch+cBtDWBIOqoB0r2uQvLuj
        CQ9BPAQ/AvHKtX46d6Nwo6QMADlroia2T7yCcs9pmWPd2pBexNePvnexPkb1EIZM
        AorEZjiqyDcFQfMCqXIxeBTilLZNdwakMQZ2Wme/0dsrLhdLdQojV9myuWfoqbwg
        m5KB4bgxzU3y5hHkIEBVgquuD0HugepU6cYsAGoh0Vi0lFagpuwnvwomHZuUaJK+
        ucJWXkBlXY7RdxtiXQAQogMrrI44OgyJGScuAB7ySwzRM3Te3FQniI5OAifAbI5d
        V0qBEFAcDrCFxED9lBpm6gnguCwrgqj8p2nOemYIwAKCZ0oFjN3ouGb7Q9Lpau0H
        /Ui6y6tMr5k6sJYaGR4FkSobYDPD1XQoMjBoC8e+IhSVFQRday3n1sMIpGrVaHgA
        TXJ0vU4LDFKVpsKb5EzfClqYr8nllY44fgcoyinjjaLjwYHdKycYxMnwk2xtCA0i
        PYB5gaCo4OxDjpVmYpb/F+cUBgkz1ZywK44s+TCq5mFBw9huI6UVgARheWZQi5WJ
        4DDn146IySnA3kSGPWT7x6/OQeJyFwWo31W6VPRAZFo+xNba15/KLO2e82qH72st
        WjiwkvJmhG1nAFbbb5D+wk9try75t3vxJUWt6HTCc0v4amVIojwO0BcgXtkgxxFV
        BjDjU0NtrMSva4ukP2tMf4LravUVmJE41YxKYRYxR5TI5ZlZFqsD4tuMpiXWRulG
        M6mNOCSI8bUQbzfCqI+cxsiEBdupk2qOCzIFkbsBOAcsiZlL3D0bp8OGs9YyMfGE
        UlzVCFET2EiBnLClj64HKMJeYjTmLEZAJPlkBHVVdOrIj4CLJsI3Y32IgRDkaIlv
        Ce9peFdY8hZ5ss0KhWrlIFJojlK2h4InIcDDAAS7Mpw7E7JADTr6SoLvGaBt7vIB
        6RmLecoQJeKPBGKxFxUHnKMgSiVbPRpBPPB8ZHnO8x+Enik4rTN2xmawz6Fsn2Gm
        d46ibbrs4+kj15MSSlVoK5l4oFhC9Xiqc4zYjASFDew1hVCEMN/4uw6xRF8YSCfI
        giW0AnBQOj4zwSWOduEY6IovgY8tl2a+QPgPxG4qrdpMa1kApwTror2UoSH10NCf
        bhb1O0bKh3JwMqoLYLB5lBdOxz+g9TxJESVxjsg2pHxRcyJh0Zdz5st6pLzgTW1B
        FPpWkTrXjHYG1lL8oC+2iSKJs2T2JKrDE6TaGAb4P4db5QxkfRTYdCUiiT7DmWvG
        jRMFSVecm6CejR13VCnAUdX7IFVnEb6tw/AJWnUqJSPH1lLAZeyFIHfW8Vvqe8do
        BjQM/iVjip4NakQbGRDgXFUWCJLLwlODClS4VUb3INpw16TvDxii0rXRYeKa0HmV
        7o8obZlZ8CmO8ALRP6QQqKdQievqS6JFX55HBDTDbq4wImGT7R5/uQjgKWHJGS1C
        dYagvTzuA2nsa5yoUsRhL2PDIzZwVsPLw3z4SAJXqtA0eKsGVNu2GN3gpJIsJpUJ
        NSTLAQIP9GRT4FmjCp33hpZTWKZI8xqnRWYDSdDSAwnhhIjfF3vTSI2qRHOeJ6VU
        SQbxQiFhoWD7wWXhZJvhi6dzYDM9zqBHRcdYJ+V7EYecQFjWqmKfCgBo7sFhFyfD
        vlw9V1oIMxqGxtoaphAyMWlRtF0UYLwCJysFa6tkIoZhRQUf0WxKVY1ulTY4KxzM
        MybC0OqIVw4xtb+6yoQ4n0opsahDcCDd33vTHQ4=
        -----END PRIVATE KEY-----
# ------------------------------------------------------------------------------

Common errors

  1. Invalid or unsupported algorithm

$ qo_openssl genpkey -algorithm some_unknown_algorithm
Algorithm some_unknown_algorithm not found
  1. HTTP Error 404 - Not Found (Server error 22)

    This can typically occur if the Base-URL is invalid e.g. v3 instead of v1.

$ qo_openssl genpkey -algorithm rsa3072_Dilithium2_AES
[QO-KEY] INFO: "Sending keygen request"
[QO-KEY] INFO: "[CALLBACK_cq_ecx_pmeth_keygen] Exit. ECX key generated locally (nid=1034)"
[QO-KEY] WARNING: "Call to Quantum-Origin server failed with error: 22"
[QO-KEY] INFO: "Received keygen response"
[QO-KEY] WARNING: "POST request failed with HTTP response code: 404"
[QO-KEY] WARNING: "Failed to get get RSA key (Maybe an HTTP error 400/401?)"
Error generating key
140603700390784:error:10132040:elliptic curve routines:pkey_oqs_keygen:fatal:crypto/ec/oqs_meth.c:1390:
$
  1. HTTP Error 400 Bad Request (Server error 6)

    This can typically occur if the Base-URL is invalid e.g. invalid URL prefix or domain name “BASEURL”:”https://qo-zw.cambridgequantum.com/test/v1

$ qo_openssl genpkey -algorithm rsa3072_Dilithium2_AES
[QO-KEY] INFO: "Sending keygen request"
[QO-KEY] WARNING: "Call to Quantum-Origin server failed with error: 6"
[QO-KEY] INFO: "Received keygen response"
[QO-KEY] WARNING: "POST request failed with HTTP response code: 0"
[QO-KEY] WARNING: "Failed to get get RSA key (Maybe an HTTP error 400/401?)"
Error generating key
139877210549120:error:10132040:elliptic curve routines:pkey_oqs_keygen:fatal:crypto/ec/oqs_meth.c:1390:
$

FAQs

  1. Q: Does the engine retry failed connections?

    A: No. An error code is returned indicating the type of failure, which is passed back to openssl which will report this issue to the user in a standard OpenSSL way.

  2. Q: Is it possible to turn off the progress messages which are emitted to the console?

    A: Yes. This is configured using the “LOGGING_VERBOSITY” setting in qo_engines.cnf. This is a bitmapped value, so it is possible to control the individual categories of logging. For example, a value of 7 (binary 00000111) i.e. 1+2+4 which turns on bits “STATUS=1 + CONFIG=2 + PROGRESS=4”

    {
      "GeneralSettings":
      {
        "_1_Verbosity_bitmapped_field":"STATUS=1, CONFIG=2, PROGRESS=4, AUTH=8, DATA=16, CURL=32, SPARE6=64, SPARE7=128",
        "LOGGING_VERBOSITY":"7"
      }
    }
    
  3. Q: QO-Key requires a secure connection to the API in order to retrieve randomness, but requires randomness to do this. How does QO-Key manage such a potentially recursive chicken-and-egg situation?

    A: If the engine is busy servicing a request when a new request is received, this is detected automatically and passed on to the original OpenSSL handler. This is configured using the “USE_LOCAL_EPHEMERAL_KEYS” setting in qo_engines.cnf.

    {
      "GeneralSettings":
      {
        "USE_LOCAL_EPHEMERAL_KEYS":"1"
      }
    }
    

    If use of the local entropy source is not acceptable or desired, set “USE_LOCAL_EPHEMERAL_KEYS” to “0”. This will cause any potentially recursive event to be caught, the original request cancelled and an error returned, for example:

    • “Engine busy. New EC request not permitted at this time. Request cancelled.”

  4. Q: Does the engine handle “qo_openssl rand NNN” requests?

    A: No. Any request for randomness is handled normally by OpenSSL i.e. either internally or by any other engine which may be installed to do as such. A request for “qo_openssl rand 256” is serviced “normally” by OpenSSL, while “qo_openssl genpkey -algorithm aes256” is handled by the QO-Key engine and the required randomness is supplied via the Quantum-Origin API.

Licenses and Credits

Please see the link QO-Key Engine - Licenses and Credits section on the legal page.