Files
zeekayandHanzo Dev 11d7620bdd lamport: SHA-3 modes hash with SHA-3; mlkem: the sign-off stops claiming NIST vectors
Two defects that pointed the same way — the code and the documentation each
said something stronger than what ran.

getHasher returned sha256.New() for SHA3_256 and sha512.New() for SHA3_512,
with a comment that a real import would come later. Keys and signatures made
under those modes were SHA-2 while their mode field said SHA-3, so any verifier
using real SHA-3 would reject every one of them, and two implementations
agreeing on the label would disagree on the bytes. crypto/sha3 is in the
standard library at our Go version, so the fix is the import the comment
promised. The new test compares against the stdlib directly rather than a
captured vector, since a captured vector would have frozen the bug, and it also
asserts the digest DIFFERS from the SHA-2 that used to be returned.

The ML-KEM sign-off claimed its KAT check 'passes 100% on the NIST PQ Round-3
mlkem768 KAT files'. There are no NIST KAT files in this repository. kat_test.go
says plainly in its own header that the vectors are generated from circl with
fixed seeds — they pin that our wrapper stays byte-identical to circl across
upgrades, which is worth having and is not what was claimed. FIPS 203
conformance is inherited from circl's ACVP validation; the document now says
so, and says that an earlier revision claimed otherwise.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-28 22:33:59 -07:00
..