Skip to content

v0.4.7 — SP 800-208 Full LMS/XMSS + NIST ACVP Validation

Choose a tag to compare

@pqctoday-personal pqctoday-personal released this 05 Apr 07:00
· 1800 commits to main since this release

SP 800-208 Full Parameter Coverage + NIST ACVP Validation

Added

  • All SP 800-208 parameter sets: 20 LMS + 16 LMOTS combinations (SHA-256 N32/N24, SHAKE-256 N32/N24) across C++ and Rust engines
  • C++ StatefulVerifyInit / StatefulVerify: HSS/LMS/XMSS/XMSS^MT signature verification via PKCS#11 C_VerifyInit/C_Verify
  • SHAKE-256 hash type: Added to hash-sigs C library using OpenSSL EVP_shake256()
  • XMSS/XMSS^MT in C_GetMechanismInfo: Registered with CKF_SIGN | CKF_VERIFY
  • Rust N24/SHAKE dispatch: Sha256_192, Shake256_256, Shake256_192 via hbs-lms 0.1.1
  • NIST ACVP LMS sigVer: 320/320 official demo vectors validated — all 80 parameter combinations

Fixed

  • XMSS keygen buffer overflow: pk/sk buffers now account for 4-byte OID prefix (XMSS_OID_LEN)
  • XMSS C_Sign PKCS#11 v3.2 compliance: Returns signature-only (was returning sig||msg)
  • XMSS^MT keygen: Uses xmssmt_parse_oid instead of xmss_parse_oid
  • CKP_ constants: Corrected to IANA registry type IDs per RFC 8554 + SP 800-208
  • Gap analysis G10: Updated from "out of scope" to RESOLVED

Validation

Test Suite Result
NIST ACVP LMS sigVer 320/320 match
Stateful sign/verify (HSS + XMSS) 26/26 PASS
KAT determinism (XMSS + HSS) PASS
Existing ACVP (ML-KEM, ML-DSA, SLH-DSA, classical) 62/62 PASS

🤖 Generated with Claude Code