Skip to content

Phase 2: PQ in boundary and SHA512 DRBG#9843

Draft
kaleb-himes wants to merge 1 commit intowolfSSL:masterfrom
kaleb-himes:PQ-FS-2026-Part2
Draft

Phase 2: PQ in boundary and SHA512 DRBG#9843
kaleb-himes wants to merge 1 commit intowolfSSL:masterfrom
kaleb-himes:PQ-FS-2026-Part2

Conversation

@kaleb-himes
Copy link
Copy Markdown
Contributor

@kaleb-himes kaleb-himes commented Feb 27, 2026

Description

Phase 2 of the upcoming Post Quantum Full FIPS Submission. ML-KEM, ML-DSA, LMS (Verify), XMSS (Verify) added to module boundary along with a shiny new SHA512-DRBG implementation and NIST vector tests for sanity.

Release 1-liners for this PR:

  1. SHA-512 DRBG - entire new DRBG implementation alongside SHA-256
  2. FIPS wrappers - ML-KEM, ML-DSA, LMS, XMSS, SLH-DSA (dozens of new wrapper functions)
  3. CASTs - 5+ new Conditional Algorithm Self-Tests with embedded KAT vectors
  4. New API surface - mu sign/verify, internal interface wrappers, runtime disable/enable functions
  5. PCT code - pairwise consistency tests in MakeKey paths
  6. SLH-DSA - SHA2 (128, 192, 256) support in addition to SHAKE

Testing

Many in-house FIPS custom scripts, optest app and harness.

Checklist

  • added tests
  • updated/added doxygen
  • updated appropriate READMEs
  • Updated manual and documentation

Copy link
Copy Markdown
Contributor Author

@kaleb-himes kaleb-himes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

** NON-FIPS **

./wolfcrypt/benchmark/benchmark -rng -rng-sha512 -rng-init -rng-sha512-init
------------------------------------------------------------------------------
 wolfSSL version 5.8.4
------------------------------------------------------------------------------
Math: 	Multi-Precision: Wolf(SP) word-size=64 bits=4096 sp_int.c
wolfCrypt Benchmark (block bytes 1048576, min 1.0 sec each)
RNG SHA-256 DRBG           205 MiB took 1.021 seconds,  200.853 MiB/s Cycles per byte =  17.50
RNG SHA-512 DRBG           380 MiB took 1.013 seconds,  375.166 MiB/s Cycles per byte =   9.37
RNG      256 SHA256 Init/Free 146504 ops took 1.000 sec, avg 0.007 ms, 146503.616 ops/sec, 3686366718 cycles    25162.2 Cycles/op
RNG      512 SHA512 Init/Free 204287 ops took 1.000 sec, avg 0.005 ms, 204285.977 ops/sec, 3686374128 cycles    18045.1 Cycles/op
Benchmark complete

** FIPS **

./wolfcrypt/benchmark/benchmark -rng -rng-sha512 -rng-init -rng-sha512-init
------------------------------------------------------------------------------
 wolfSSL version 5.8.4
------------------------------------------------------------------------------
wolfCrypt Benchmark (block bytes 1048576, min 1.0 sec each)
RNG SHA-256 DRBG           205 MiB took 1.021 seconds,  200.763 MiB/s Cycles per byte =  17.51
RNG SHA-512 DRBG           375 MiB took 1.010 seconds,  371.333 MiB/s Cycles per byte =   9.47
RNG      256 SHA256 Init/Free 123726 ops took 1.000 sec, avg 0.008 ms, 123725.735 ops/sec, 3686363516 cycles    29794.6 Cycles/op
RNG      512 SHA512 Init/Free 172608 ops took 1.000 sec, avg 0.006 ms, 172607.506 ops/sec, 3686365894 cycles    21356.9 Cycles/op
Benchmark complete

@kaleb-himes kaleb-himes force-pushed the PQ-FS-2026-Part2 branch 2 times, most recently from 6f2187b to 9e0e11f Compare March 1, 2026 20:03
@kaleb-himes kaleb-himes requested review from SparkiDev and dgarske March 1, 2026 21:44
@kaleb-himes kaleb-himes requested a review from wolfSSL-Bot March 1, 2026 21:45
@kaleb-himes kaleb-himes marked this pull request as draft March 3, 2026 18:09
@kaleb-himes
Copy link
Copy Markdown
Contributor Author

Going to add CAVP support for the perso string and additional Input also. Will keep as a draft for now.

@douzzer douzzer added the Not For This Release Not for release 5.9.1 label Mar 11, 2026
@douzzer douzzer self-requested a review March 11, 2026 03:01
@kaleb-himes kaleb-himes force-pushed the PQ-FS-2026-Part2 branch 4 times, most recently from e88dd14 to 7f4b8fb Compare March 24, 2026 10:21
@kaleb-himes kaleb-himes requested a review from SparkiDev March 24, 2026 10:46
@kaleb-himes kaleb-himes force-pushed the PQ-FS-2026-Part2 branch 5 times, most recently from 8ec890f to b6e3558 Compare March 25, 2026 16:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Not For This Release Not for release 5.9.1

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants