Complete Guide to Qudo PQC
Everything you need to build, deploy, and integrate post-quantum cryptography into your applications.
Production-Ready Post-Quantum Cryptography
Qudo PQC implements NIST FIPS 203 (ML-KEM), FIPS 204 (ML-DSA), and FIPS 205 (SLH-DSA) with OpenSSL 3.x provider integration and a native C API.
Four Main Components
- ✓qudo-mlkem — ML-KEM key encapsulation (FIPS 203)
- ✓qudo-mldsa — ML-DSA digital signatures (FIPS 204)
- ✓qudo-slhdsa — SLH-DSA hash-based signatures (FIPS 205)
- ✓qudo-provider — OpenSSL 3.x provider integration
Dual API Pattern
All libraries expose two interfaces:
- ✓Object API — Heap-allocated, user-friendly, automatic resource management
- ✓Direct API — Zero-allocation, caller-provided buffers, for embedded systems
Runtime CPU Dispatch
Automatic performance optimization:
- ✓Reference implementation (portable C99)
- ✓AVX2 optimizations (Intel/AMD)
- ✓NEON optimizations (ARM)
- ✓Automatic selection at runtime
How Qudo PQC Works
The provider routes OpenSSL EVP API calls to the appropriate Qudo library, enabling seamless integration with any OpenSSL-based application.
Get Running in 10 Minutes
From zero to quantum-safe TLS in six steps.
Check Prerequisites
Required: OpenSSL 3.4+, CMake 3.15+, C99 compiler (GCC 9+, Clang 12+, or MSVC 2019+).
Download or Build
Choose pre-built binaries for your platform or build from source.
Configure OpenSSL
Add the provider configuration block to your openssl.cnf.
Verify Installation
Confirm the provider loads correctly and all algorithms are available.
Enable Quantum-Safe TLS
Add PQC hybrid key exchange to your web server configuration — no application code changes.
Test Quantum-Safe Connection
Verify your server is negotiating post-quantum key exchange with clients.
CMake Build Configuration
Configure the build system with CMake flags to enable or disable specific features for your target environment.
BUILD_SHARED_LIBS=ONMLKEM_DIST_BUILD=ONBUILD_TESTS=ONBUILD_EXAMPLES=ONQUDO_PROV_BUILD_TESTS=ONQUDO_PROV_BUILD_EXAMPLES=ONQUDO_PROV_ENABLE_DEBUG=OFFSupported PQC Algorithms
NIST-standardized algorithms covering key encapsulation, digital signatures, and hash-based signatures.
Stateless hash-based signatures for long-term document integrity (20+ years).
- ✓DER/PEM serialization for all key types
- ✓X.509 certificate support
- ✓PKCS#11 v3.0 compatible interface
- ✓OpenSSL EVP API drop-in
- ✓TLS 1.3 hybrid groups
- ✓Chrome 131+ / Firefox 128+ / Safari 18+
API Quick Reference
Key functions across all three libraries. All functions return status codes (0 = success).
When using the provider, all standard OpenSSL EVP functions work transparently with PQC algorithms.
Integration Examples
Production-ready code examples for all three libraries and the OpenSSL EVP provider interface.
Use the OpenSSL CLI to generate PQC keys, create certificates, and run a quantum-safe TLS server end-to-end.
Testing Your Integration
A complete test pyramid from unit tests through interoperability and memory safety validation.
Unit Tests
Run per-library unit tests and Known Answer Tests (KATs) to verify correctness.
Provider Tests
Run the CTest suite against the OpenSSL provider to confirm all algorithms register correctly.
Interoperability Tests
Verify cross-implementation compatibility with NIST reference vectors.
Memory Safety & Performance
Run Valgrind for memory safety and OpenSSL speed benchmarks.
Benchmark Results
Measured on Intel Xeon (AVX2) with Qudo PQC v1.0. Median of 10,000 iterations.
mlkem512~20µs~28µs~32µsmlkem768~30µs~40µs~45µsmlkem1024~48µs~55µs~60µs2–5x faster than RSA-2048 key exchange. TLS handshakes: 15,000+/sec (X25519MLKEM768 hybrid)
ML-DSA-44~50µs~140µs~60µsML-DSA-65~80µs~200µs~90µsML-DSA-87~120µs~300µs~140µsCompetitive with ECDSA P-256. Signature sizes: 2,420 / 3,293 / 4,595 bytes
SHA2-128f2ms50ms3ms17,088BSHA2-128s2ms800ms3ms7,856BConservative, hash-based security. Best for: long-lived documents, root certificates
1,184 B2,400 B1,088 B32 B1,952 B4,032 B3,293 BUse the built-in benchmark suite or OpenSSL speed to measure performance on your own hardware.
Deployment Strategies
Three deployment modes to match your migration timeline and risk tolerance.
Copy the provider and library files, update openssl.cnf, and restart your services.
- ✓Copy qudoprovider.so to OpenSSL modules directory
- ✓Copy libqudo-pqc.so to OpenSSL lib directory
- ✓Add provider block to openssl.cnf
- ✓Restart services — PQC algorithms immediately available
Run PQC alongside classical algorithms. Existing clients stay connected while new ones get quantum protection.
- ✓X25519MLKEM768 hybrid key exchange for TLS
- ✓SecP256r1MLKEM768 for EC-based infrastructure
- ✓Existing systems stay connected during migration
- ✓Gradual rollout with zero downtime
Migrate to pure PQC algorithms for maximum future-proofing.
- ✓mlkem512/768/1024 for key encapsulation
- ✓ML-DSA-44/65/87 for digital signatures
- ✓SLH-DSA variants for long-lived documents
- ✓Long-term security against quantum adversaries
Security Best Practices
Follow these guidelines to maximize the security of your Qudo PQC integration.
- ✓X25519MLKEM768 for TLS key exchange
- ✓Recommended by NIST, NSA, NCSC, and BSI
- ✓Dual signatures for critical operations
- ✓Fallback to classical on incompatible clients
- ✓Zero sensitive data with OPENSSL_cleanse()
- ✓Use Object API for automatic cleanup
- ✓Store private keys encrypted at rest
- ✓Rotate keys on a regular schedule
- ✓TLS/key exchange: mlkem768 or X25519MLKEM768
- ✓Auth/code signing: ML-DSA-65
- ✓High-security: mlkem1024 + ML-DSA-87
- ✓Long-lived documents: SLH-DSA-SHA2-128s
- ✓Frequent signing (low latency): ML-DSA-44
- ✓Inventory all cryptographic assets
- ✓Test in staging environment with hybrid mode
- ✓Verify browser and client compatibility
- ✓Monitor TLS negotiation logs
- ✓Run full interoperability test suite
- ✓Plan certificate reissuance schedule
Common Issues & Solutions
Diagnostic commands and solutions for the most frequent integration problems.
Provider Not Loading
The provider module cannot be found. Check file paths and permissions.
Build Failures
CMake cannot locate OpenSSL headers or the wrong version is found.
Algorithm Not Found
PQC algorithms are not listed after provider configuration.
TLS Handshake Failing
Connections fail or fall back to classical key exchange unexpectedly.
OpenSSL Version Mismatch
The provider was built against a different OpenSSL version than installed.
Shared Library Not Found
Runtime linker cannot locate libqudo-pqc.so after installation.
Enable Debug Output
Get verbose logging to diagnose provider initialization and algorithm dispatch.
Additional Resources
Source code, pre-built binaries, and official NIST standards.
- ●qudo-mlkem — ML-KEM library
- ●qudo-mldsa — ML-DSA library
- ●qudo-slhdsa — SLH-DSA library
- ●qudo-provider — OpenSSL provider
- ●Linux x86_64, ARM64, ARM32
- ●macOS Apple Silicon & Intel
- ●Windows MSVC & MinGW
- ●Provider + individual libraries
- ●FIPS 203 — ML-KEM standard
- ●FIPS 204 — ML-DSA standard
- ●FIPS 205 — SLH-DSA standard
- ●NSA CNSA 2.0 guidance
Frequently Asked Questions
Answers to the most common questions about deploying Qudo PQC.
Get Support
Our engineering team is here to help you integrate Qudo PQC successfully.