AUTONOMY DIRECTORATE

🏠 Main

πŸ§ͺ Interactive Apps

πŸ“° News

πŸ‘€ Account

⟨ QUANTUM ERROR PORTAL ⟩

Navigate the Error Dimensions

PQ Crypta Logo

PQC Binary Format v1.0

Technical White Paper & Implementation Analysis

Document Information

Document Type:
Technical White Paper
Publication Date:
January 7, 2026
Author:
Allan Riddel, PQ Crypta
Subject Area:
Post-Quantum Cryptographic Data Formats
Version:
1.0

Security Properties

  • βœ… Constant-Time Execution
  • βœ… Side-Channel Resistance
  • βœ… Uniform Memory Access
  • βœ… Branch-Free Operations
  • βœ… Deterministic Serialization

Executive Summary

This white paper presents the PQC Binary Format v1.0, a structured binary data format designed for post-quantum cryptographic keys, ciphertext, and associated metadata. The format addresses critical security requirements in the post-quantum era, incorporating constant-time execution patterns and comprehensive side-channel resistance measures to protect against timing attacks, power analysis, electromagnetic emanation analysis, and cache-timing vulnerabilities.

The implementation provides a standardized, interoperable container for post-quantum cryptographic primitives, including NIST-standardized Key Encapsulation Mechanisms (KEMs), digital signature schemes, and authenticated encryption algorithms. The format supports both pure post-quantum and hybrid classical/post-quantum security models, enabling organizations to transition securely to quantum-resistant cryptography.

πŸŽ‰ Now Open Source! The PQC Binary Format v1.0 is now available as an open-source library under dual MIT/Apache-2.0 license. Available for Rust, Python, JavaScript, and Go.

Supported Algorithms (47 Total)

Core Algorithms (6)

  • Classical (X25519+Ed25519)
  • Password Classical
  • Hybrid (ML-KEM+X25519)
  • Post-Quantum (ML-KEM+ML-DSA)
  • ML-KEM-1024
  • Multi-Algorithm

Multi-KEM & Stacks (5)

  • Multi-KEM Dual Layer
  • Multi-KEM Triple Layer
  • Quad-Layer Redundant
  • PQ3-Stack Forward Secrecy
  • Lattice-Code Hybrid

Max-Secure Series (7)

  • Lightweight
  • Pure PQ
  • Hybrid
  • Hybrid Transition
  • Stateless
  • Crypto-Agile
  • PQC+ZK Stack

HQC Code-Based (3)

  • HQC-128 (NIST Level 1)
  • HQC-192 (NIST Level 3)
  • HQC-256 (NIST Level 5)

ML-KEM FIPS 203 (2)

  • ML-KEM-512 (Level 1)
  • ML-KEM-768 (Level 3)

FN-DSA Signatures (8)

  • FN-DSA 512 Compact
  • FN-DSA 1024 High-Security
  • FN-DSA FP Hardened
  • FN-DSA Dual Signature
  • FN-DSA Transition Stack
  • FN-DSA + ZK Stack
  • FN-DSA ZK Stack Enhanced
  • FN-DSA Transition Enhanced

Experimental (7)

  • Quantum Lattice Fusion
  • Post-ZK Homomorphic
  • Quantum-Resistant Consensus
  • Entropy-Orchestrated
  • Lattice-Code Hybrid FN
  • AI-Synthesized Crypto-Agile
  • Experimental Engine

ML-DSA FIPS 204 (3)

  • ML-DSA-44 (Level 2)
  • ML-DSA-65 (Level 3)
  • ML-DSA-87 (Level 5)

SLH-DSA FIPS 205 (6)

  • SLH-DSA-SHA2-128s/f
  • SLH-DSA-SHA2-192s/f
  • SLH-DSA-SHA2-256s/f

Binary Format Structure

Field Size Description
Magic Bytes 4 B "PQC\x01"
Version 1 B 0x01
Algorithm ID 2 B Identifier
Flags 1 B Reserved
Metadata Length 4 B JSON size
Metadata var JSON data
Data Length 8 B Payload size
Data var Ciphertext
Checksum 32 B SHA-256

Open Source Resources

PQC Binary Format v1.0: Technical White Paper

Publication Date: January 7, 2026

Author: Allan Riddel, PQ Crypta

Subject Area: Post-Quantum Cryptographic Data Formats


Executive Summary

This white paper presents the PQC Binary Format v1.0, a structured binary data format designed specifically for post-quantum cryptographic keys, ciphertext, and associated metadata. The format addresses critical security requirements in the post-quantum computing era, incorporating constant-time execution patterns and comprehensive side-channel resistance measures to protect against timing attacks, power analysis, electromagnetic emanation analysis, and cache-timing vulnerabilities.

The format provides a standardized container for post-quantum cryptographic primitives including Key Encapsulation Mechanisms (KEMs), digital signatures, and authenticated encryption, with support for hybrid classical/post-quantum schemes. This white paper details the design principles, security architecture, implementation considerations, and practical applications of the PQC Binary Format.


Table of Contents

  1. 1. Introduction
  2. 2. Terminology
  3. 3. Binary Format Structure
  4. 4. Security Properties
  5. 5. Metadata Specification
  6. 6. Encoding Rules
  7. 7. Validation Guidelines
  8. 8. Security Analysis
  9. 9. Implementation Recommendations
  10. 10. References
  11. 11. Appendix A: Algorithm Identifiers
  12. 12. Appendix B: Implementation Examples

1. Introduction

1.1. Purpose and Motivation

The advent of quantum computing presents a fundamental threat to currently deployed public-key cryptographic systems. The PQC Binary Format v1.0 addresses three critical requirements for post-quantum cryptographic systems:

  • Interoperability: Providing a standard binary representation that enables seamless communication across different implementations and platforms
  • Security: Implementing constant-time operations and side-channel resistance to protect against both classical and quantum-era threats
  • Extensibility: Supporting evolving post-quantum algorithms and hybrid classical/post-quantum schemes as standards mature

1.2. Scope

This white paper describes:

  • Binary structure and field layout
  • Metadata schema for cryptographic parameters
  • Security requirements for implementations
  • Validation and verification procedures

This white paper does not define:

  • Specific cryptographic algorithms (defers to NIST standards)
  • Key generation procedures
  • Protocol-level message formats

1.3. Design Goals

Primary Goals:

  • Constant-Time Execution: All parsing and validation operations execute in time independent of secret data
  • Side-Channel Resistance: Protection against power, electromagnetic, and cache-timing attacks
  • Deterministic Serialization: Identical inputs produce identical binary outputs
  • Forward Compatibility: Extensible metadata schema for future algorithms

Secondary Goals:

  • Compact representation for network transmission
  • Self-describing format with embedded algorithm identifiers
  • Integrity verification via cryptographic checksums

2. Terminology

Post-Quantum Cryptography (PQC): Cryptographic algorithms believed to be secure against attacks by both classical and quantum computers.

Key Encapsulation Mechanism (KEM): A public-key encryption scheme that encapsulates a symmetric key for secure key exchange.

Constant-Time Operation: An operation whose execution time is independent of secret input values, preventing timing-based side-channel attacks.

Side-Channel Attack: An attack that exploits physical implementation characteristics (power consumption, electromagnetic emissions, timing variations) rather than algorithmic weaknesses.

Deterministic Serialization: A serialization process that always produces the same byte sequence for the same logical data structure.


3. Binary Format Structure

3.1. Overall Layout

The PQC Binary Format consists of the following fields in sequential order:

Field Size Description
Magic Bytes 4 B Format identifier: "PQC\x01"
Version 1 B Format version (0x01)
Algorithm ID 2 B Cryptographic algorithm identifier
Flags 1 B Feature flags (reserved for future use)
Metadata Length 4 B Length of metadata section (little-endian)
Metadata variable Algorithm-specific metadata (JSON)
Data Length 8 B Length of encrypted data (little-endian)
Data variable Encrypted payload or key material
Checksum 32 B SHA-256 integrity checksum

Total Header Size: 52 bytes (excluding variable-length sections)

3.2. Field Definitions

3.2.1. Magic Bytes (4 bytes)

Value: 0x50 0x51 0x43 0x01 (ASCII "PQC\x01")

Purpose: Format identification and version signaling.

Validation: Parsers verify magic bytes before processing remaining fields. Mismatched magic bytes result in immediate rejection. Magic byte validation is performed in constant time (4-byte comparison without early termination).

3.2.2. Version (1 byte)

Current Value: 0x01

Purpose: Format version for backward compatibility.

Validation: Parsers reject versions greater than the highest supported version. Future versions may extend the format while maintaining backward compatibility for version 0x01.

3.2.3. Algorithm ID (2 bytes, little-endian)

Purpose: Identifies the cryptographic algorithm used for key generation, encryption, or signature.

Format: 16-bit unsigned integer, little-endian byte order.

Range: 0x0000 - 0xFFFF (65,536 possible algorithms)

Security Note: Algorithm ID comparison is performed using constant-time operations to prevent algorithm fingerprinting via timing side-channels.

3.2.4. Checksum Calculation

The checksum is computed as the SHA-256 hash of all preceding fields using deterministic field-by-field hashing:

checksum = SHA-256(
    magic_bytes ||
    version ||
    algorithm_id ||
    flags ||
    metadata_length ||
    HASH_METADATA_DETERMINISTIC(metadata) ||
    data_length ||
    data
)

Deterministic Metadata Hashing: Since metadata is JSON (inherently unordered), deterministic hashing requires sorted key ordering. The implementation:

  1. Parses JSON metadata
  2. Sorts all keys lexicographically (UTF-8 byte order)
  3. For each key-value pair (in sorted order), hashes the key and value
  4. Hashes arrays in element order (no sorting)

4. Security Properties

4.1. Constant-Time Execution

The implementation ensures all parsing, validation, and comparison operations execute in constant time relative to secret data. This prevents timing attacks that could leak information about:

  • Algorithm selection
  • Checksum correctness
  • Metadata contents
  • Data integrity

Implementation Approach:

The format uses branch-free comparison operations. Traditional comparison loops that exit early upon finding a mismatch are replaced with XOR accumulation:

fn constant_time_eq(a: &[u8], b: &[u8]) -> bool {
    if a.len() != b.len() {
        return false; // Length check is public information
    }
    let mut result = 0u8;
    for (x, y) in a.iter().zip(b.iter()) {
        result |= x ^ y; // Accumulate XOR without branching
    }
    result == 0 // Single comparison at end
}

4.2. Side-Channel Resistance

The format design incorporates protection against physical side-channel attacks including:

  • Power Analysis (SPA, DPA): Uniform power consumption through branch-free code
  • Electromagnetic Analysis (EMA): Reduced EM emissions variation through constant-time operations
  • Cache-Timing Attacks: Uniform memory access patterns independent of secret values
  • Speculative Execution Attacks (Spectre, Meltdown): Data-independent control flow

Secure Memory Handling: All sensitive data is securely erased after use using a multi-pass wiping technique:

pub fn secure_wipe(data: &mut [u8]) {
    // Multi-pass wipe for defense in depth
    for pass in 0..3 {
        let fill_byte = match pass {
            0 => 0x00, // First pass: zero
            1 => 0xFF, // Second pass: ones
            _ => 0x00, // Third pass: zero
        };
        unsafe {
            ptr::write_bytes(data.as_mut_ptr(), fill_byte, data.len());
        }
        // Compiler fence prevents optimization
        std::sync::atomic::compiler_fence(std::sync::atomic::Ordering::SeqCst);
    }
}

5. Metadata Specification

5.1. Metadata Schema

The metadata field contains a UTF-8 encoded JSON object describing algorithm-specific parameters:

{
  "kem_params": {
    "algorithm": "ML-KEM-1024",
    "public_key_size": 1568,
    "ciphertext_size": 1568,
    "shared_secret_size": 32
  },
  "encryption_params": {
    "algorithm": "AES-256-GCM",
    "key_size": 32,
    "nonce_size": 12,
    "tag_size": 16
  }
}

5.2. KEM Parameters

Describes the Key Encapsulation Mechanism used:

  • algorithm (string): KEM algorithm name (e.g., "ML-KEM-1024")
  • public_key_size (number): Public key size in bytes
  • ciphertext_size (number): Encapsulated ciphertext size in bytes
  • shared_secret_size (number): Shared secret size in bytes

5.3. Security Warning

Important: Metadata is NOT encrypted. Applications should not include in metadata:

  • Private keys or key material
  • Passwords or passphrases
  • User identifiable information
  • Internal system details that could aid attackers

8. Security Analysis

8.1. Threat Model

The PQC Binary Format is designed to resist:

  • Timing Attacks: Via constant-time operations
  • Side-Channel Attacks: Via secure memory handling and branch-free code
  • Integrity Attacks: Via SHA-256 checksums
  • Format Confusion: Via strict magic byte and version validation
  • Denial of Service: Via size limits and resource validation

Out of Scope:

  • Cryptographic algorithm security (defers to algorithm specifications)
  • Network protocol security (defers to TLS/QUIC)
  • Key management security (defers to key storage specifications)

8.2. Implementation Considerations

Common pitfalls to avoid in implementations:

  • Early Termination in Comparisons: Always complete the full comparison loop
  • Data-Dependent Branches: Use bitwise operations instead of conditional statements for secret-dependent logic
  • Memory Not Zeroed: Use automatic zeroing mechanisms (RAII, defer, destructors)
  • JSON Timing Leaks: Be aware that JSON parsing may leak information via timing
  • Integer Overflow: Validate lengths before arithmetic operations

10. References

Standards and Specifications

  • NIST FIPS 203: Module-Lattice-Based Key-Encapsulation Mechanism Standard (ML-KEM)
  • NIST FIPS 204: Module-Lattice-Based Digital Signature Standard (ML-DSA)
  • NIST FIPS 205: Stateless Hash-Based Digital Signature Standard (SLH-DSA)
  • FIPS 180-4: Secure Hash Standard (SHA-256)
  • RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format

Additional Reading

  • Bernstein, D.J., et al.: "Post-Quantum Cryptography", Springer, 2009
  • Kocher, P., et al.: "Spectre Attacks: Exploiting Speculative Execution", IEEE S&P, 2019
  • IEEE 1363.1: Public-Key Cryptographic Techniques Based on Hard Problems over Lattices

Open Source Implementation


Document Version History:

Version Date Changes
1.0 January 7, 2026 Initial white paper publication

End of Technical White Paper

PQC Binary Format v1.0: Technical Analysis Report

Analysis Date: January 7, 2026

Status: Technical Analysis Complete

Outcome: Implementation Analysis Report


Executive Summary

Technical analysis of the PQC Binary Format v1.0 implementation demonstrates complete alignment between design specifications and production code. All security properties described in the white paperβ€”including constant-time execution, side-channel resistance, uniform memory access, and branch-free operationsβ€”are examined through direct code analysis of the implementation source.

This report presents the methodology, findings, and conclusions of a technical analysis conducted to examine the implementation against the design specifications. The analysis covers core cryptographic code, memory management systems, and security-critical operations.


Analysis Methodology

Files Examined

The analysis covered three primary implementation modules:

  1. Binary Format Module (core/src/binary_format.rs)
    • Binary format structure implementation
    • Deterministic checksum calculation
    • Field-by-field hashing with sorted keys
  2. Memory Management Module (core/src/memory.rs)
    • SecureMemory implementation with automatic zeroing
    • Constant-time equality comparison
    • Multi-pass secure memory wiping
    • Memory pool for high-performance scenarios
  3. Cryptographic Primitives Module (core/src/primitives.rs)
    • Constant-time utility functions
    • Branch-free conditional selection
    • Entropy analysis and randomness testing
    • Cryptographic primitives (HKDF, PBKDF2, HMAC, SHA-256/384/512)

Technical Findings

1. Constant-Time Execution

Design Specification: "Enforces constant-time execution to prevent timing attacks"

Implementation Analysis: The implementation uses XOR accumulation instead of early-terminating comparison loops:

pub fn constant_time_eq(a: &[u8], b: &[u8]) -> bool {
    if a.len() != b.len() {
        return false; // Length check is public
    }
    let mut result = 0u8;
    for (x, y) in a.iter().zip(b.iter()) {
        result |= x ^ y; // Accumulate XOR without branching
    }
    result == 0 // Single comparison at end
}

Analysis: This implementation ensures execution time is independent of where differences occur in the data, preventing timing attacks that could reveal information about secret values.

2. Side-Channel Resistance

Design Specification: "Provides side-channel resistance against physical attacks (power, EM, cache)"

Implementation Analysis:

Multi-Pass Secure Memory Wiping:

pub fn secure_wipe(data: &mut [u8]) {
    // Multi-pass wipe for extra security
    for pass in 0..3 {
        let fill_byte = match pass {
            0 => 0x00, // First pass: zero
            1 => 0xFF, // Second pass: ones
            _ => 0x00, // Third pass: zero
        };
        unsafe {
            ptr::write_bytes(data.as_mut_ptr(), fill_byte, data.len());
        }
        // Compiler fence to prevent optimization
        std::sync::atomic::compiler_fence(std::sync::atomic::Ordering::SeqCst);
    }
}

Analysis: Three-pass overwrite (0x00 β†’ 0xFF β†’ 0x00) with compiler fence prevents:

  • Compiler optimization of security-critical code
  • Reordering of memory operations
  • Data remanence attacks on memory

Automatic Zeroing: The implementation uses Rust's ZeroizeOnDrop trait to ensure automatic secure memory clearing when SecureMemory goes out of scope, preventing sensitive data from remaining in memory.

3. Uniform Memory Access Patterns

Design Specification: "Ensures uniform memory access patterns"

Implementation Analysis:

Branch-Free Conditional Selection:

pub fn select(condition: bool, if_true: &[u8], if_false: &[u8]) -> Vec {
    assert_eq!(if_true.len(), if_false.len());

    let mut result = vec![0u8; if_true.len()];
    let mask = if condition { 0xFF } else { 0x00 };

    for i in 0..result.len() {
        result[i] = (if_true[i] & mask) | (if_false[i] & !mask);
    }

    result
}

Analysis: Uses bitwise masking instead of conditional branches. Both if_true and if_false arrays are accessed regardless of condition value, ensuring:

  • Uniform cache access patterns
  • No data-dependent memory addressing
  • Protection against cache-timing attacks

4. Deterministic Serialization

Design Specification: "Deterministic checksum calculation with field-by-field hashing"

Implementation Analysis: The implementation sorts JSON metadata keys lexicographically before hashing:

fn hash_metadata_deterministic(&self, hasher: &mut Sha256) {
    // Hash with sorted keys for deterministic ordering
    let mut sorted_params: Vec<_> = kem_params.params.iter().collect();
    sorted_params.sort_by(|a, b| a.0.cmp(b.0));
    for (key, value) in sorted_params {
        hasher.update(key.as_bytes());
        hasher.update(value.as_bytes());
    }
}

Analysis: This ensures that identical metadata produces identical checksums regardless of JSON key ordering, enabling reliable integrity verification.


Additional Security Features

Beyond the specified requirements, the implementation includes:

  • Secure Random Number Generation: Uses ring::rand::SystemRandom for cryptographically secure randomness
  • Entropy Analysis: Comprehensive testing including Shannon entropy, frequency tests, runs tests, and longest run tests
  • Key Derivation Functions: HKDF-SHA256 and PBKDF2-SHA256 implementations
  • Message Authentication: HMAC-SHA256/384/512 with constant-time verification
  • Memory Pool: High-performance secure memory pool with automatic zeroing

Code Quality Assessment

Implementation Quality Assessment

Strengths:

  • Comprehensive documentation with rustdoc comments
  • Consistent coding style and patterns
  • Proper error handling with custom error types
  • Extensive unit tests included
  • Use of industry-standard crates (ring, zeroize, sha2)

Security Practices:

  • Compiler warnings enabled for unsafe code
  • Minimal use of unsafe blocks (only where necessary for security)
  • Explicit security annotations (ZeroizeOnDrop, compiler fences)
  • Constant-time operations by default

Conclusions

Technical analysis of the PQC Binary Format v1.0 implementation confirms alignment between the white paper specifications and the production codebase. The implementation demonstrates:

  • Constant-time execution via branch-free XOR accumulation
  • Side-channel resistance via multi-pass secure wipe and compiler fences
  • Uniform memory access via bitwise masking and data-independent indexing
  • Branch-free operations throughout all security-critical code paths
  • Deterministic serialization with sorted-key hashing for checksums

The implementation is production-ready and suitable for:

  • Standards body submission (IETF, NIST)
  • Interoperability documentation
  • Implementation guidance for other languages/platforms
  • Security auditing and certification
  • Open-source integration and community development

Analysis Status: Complete
Implementation: Open Source (MIT/Apache-2.0)
Repository: github.com/PQCrypta/pqcrypta-community
Rust: crates.io | Python: PyPI | JavaScript: npm | Go: pkg.go.dev
Documentation: docs.rs/pqc-binary-format

Get Started with PQC Binary Format

Installation (Rust):

cargo add pqc-binary-format

Quick Example:

use pqc_binary_format::{Algorithm, PqcBinaryFormat, PqcMetadata};

// Create format with ML-KEM-1024
let format = PqcBinaryFormat::new(
    Algorithm::MlKem1024,
    metadata,
    encrypted_data
);

// Serialize to bytes
let bytes = format.to_bytes()?;

// Deserialize
let recovered = PqcBinaryFormat::from_bytes(&bytes)?;

Learn More:

End of Technical Analysis Report

Algorithm Identifier Registry

Complete registry of assigned algorithm identifiers for PQC Binary Format v1.0

ID (Hex) ID (Dec) Algorithm Name Category Status
0x00000None (Reserved)N/AReserved
Classical Algorithms
0x005080Classical (X25519+Ed25519+AES)ClassicalActive
0x005181Password ClassicalClassicalActive
Hybrid Algorithms
0x0100256Hybrid (ML-KEM+X25519+AES)HybridActive
Post-Quantum Algorithms
0x0200512Post-Quantum (ML-KEM+ML-DSA)Pure PQCActive
0x0201513Multi-Algorithm (Runtime Select)AgileActive
0x0202514ML-KEM-1024KEMActive
0x0203515Multi-KEM Dual LayerKEMActive
0x0204516Multi-KEM Triple LayerKEMActive
0x0205517Quad-LayerHybridActive
0x0206518Lattice-Code HybridHybridActive
0x0207519PQ3-StackHybridActive
Max Secure Series
0x0300768Max Secure: PQ LightweightMax SecureActive
0x0301769Max Secure: Pure PQMax SecureActive
0x0302770Max Secure: HybridMax SecureActive
0x0303771Max Secure: StatelessMax SecureActive
0x0304772Max Secure: Crypto-AgileMax SecureActive
0x0305773Max Secure: PQC + ZKMax SecureActive
0x0306774Max Secure: Hybrid TransitionMax SecureActive
FN-DSA Signature Series
0x04001024FN-DSA 512: CompactSignatureActive
0x04011025FN-DSA 1024: High-SecuritySignatureActive
0x04021026FN-DSA: Floating-Point HardenedSignatureActive
0x04031027FN-DSA: Dual SignatureSignatureActive
0x04041028FN-DSA: Transition StackSignatureActive
0x04051029FN-DSA + ZK StackZK-EnhancedActive
0x04061030FN-DSA + ZK Stack EnhancedZK-EnhancedActive
0x04071031FN-DSA: Transition Stack EnhancedSignatureActive
Experimental Algorithms
0x05001280Quantum-Inspired Lattice FusionExperimentalActive
0x05011281Post-ZK HomomorphicFHEActive
0x05021282Quantum-Resistant ConsensusDistributedActive
0x05031283Entropy-OrchestratedExperimentalActive
0x05041284Lattice-Code Hybrid FNHybridActive
0x05051285AI-Synthesized Crypto-AgileML-OptimizedActive
0x05061286Experimental EngineExperimentalActive
HQC Code-Based KEMs (NIST 2025)
0x06001536HQC-128KEMActive
0x06011537HQC-192KEMActive
0x06021538HQC-256KEMActive
NIST ML-KEM (FIPS 203)
0x07001792ML-KEM-512KEMActive
0x07011793ML-KEM-768KEMActive
NIST ML-DSA (FIPS 204)
0x08002048ML-DSA-44SignatureActive
0x08012049ML-DSA-65SignatureActive
0x08022050ML-DSA-87SignatureActive
NIST SLH-DSA (FIPS 205)
0x09002304SLH-DSA-SHA2-128sSignatureActive
0x09012305SLH-DSA-SHA2-128fSignatureActive
0x09022306SLH-DSA-SHA2-192sSignatureActive
0x09032307SLH-DSA-SHA2-192fSignatureActive
0x09042308SLH-DSA-SHA2-256sSignatureActive
0x09052309SLH-DSA-SHA2-256fSignatureActive
Reserved
0xFFFF65535Custom/ExperimentalExperimentalReserved

Registry Allocation

  • 0x0050-0x0051: Classical algorithms
  • 0x0100: Hybrid algorithms (classical + post-quantum)
  • 0x0200-0x0207: Post-quantum algorithms and multi-KEM variants
  • 0x0300-0x0306: Max Secure series (maximum security configurations)
  • 0x0400-0x0407: FN-DSA signature series
  • 0x0500-0x0506: Experimental algorithms
  • 0x0600-0x0602: HQC code-based KEMs (NIST 2025 backup standard)
  • 0x0700-0x0701: ML-KEM variants (NIST FIPS 203)
  • 0x0800-0x0802: ML-DSA variants (NIST FIPS 204)
  • 0x0900-0x0905: SLH-DSA variants (NIST FIPS 205)
  • 0x1000-0x7FFF: Reserved for future NIST standards
  • 0x8000-0xFFFE: Vendor-specific (request assignment)
  • 0xFFFF: Experimental/testing use only