mirror of
https://github.com/luxfi/crypto.git
synced 2026-10-30 16:59:13 +00:00
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]>