Files
mlkem-sync/test_framework/modules/mlkem_keygen/golden/c003_dkpke.hex
FallenSigh 106b2925a8 feat(sha3): multi-block SHA3-256 absorb for H(ek); KeyGen golden vectors
Stage 0+1 of mlkem_top KeyGen integration:
- sha3_top: add multi-block SHA3-256 absorb FSM (mb_en/mb_block_i/mb_valid_i/
  mb_last_i/mb_ready_o). Caller pre-pads final block; module does pure absorb
  loop (state^=block; Keccak-p). Single-block G/H/J paths bit-identical when
  mb_en=0. Sticky digest register holds output until consumer acks.
- tb_sha3_mb_xsim: self-checking TB streams 800B ek (6 blocks) -> H(ek),
  verified == hashlib.sha3_256. Proper valid/ready handshake (no force).
- Existing G/H/J TBs (xsim + Verilator) tie off mb_* ports; both frameworks
  regress clean (Verilator 25/25, XSIM G/H/J + keccak + 7-vec + multiblock).
- test_framework/modules/mlkem_keygen/golden: full 256-coeff per-stage
  intermediates (rho/sigma, A_hat, s/e, s_hat/e_hat, t_hat, ek, dk_pke) for
  KAT count=0..4, dumped by ml-kem-r and self-verified against NIST KAT.
2026-06-27 23:37:23 +08:00

2 lines
1.5 KiB
Plaintext

7eb1be50334821e67d04da9ae18c8f03c8c0a0c5b0098c82b404c70e12c56ad7943d9a6af1477f37a2b144c9c598965cc3da21a1118353f9132da664e668810d50cb31b76f64c76af3647ebe34b5b4d7bc4cf29b615352aab69bdd9004f6aaa21107938804243958486075a8f012707f42cac2567c2ac6a12f8a7e8260ccbaf0cfc8608b826a87ab3c086ebb3760c0bf8fe53b9f70ba066b1a4145ad7c3095dec14f65b533347cbaf62c5d4b830377c6a641e83b54f49ab1f44ffd92c098bb1d1eda4fe74a72477661b6628e3af405a0f6a11e8b2a5cc55c8136797a3370c3505760120beae02f892ccffdf293db7c03a4c65c3c0c9fc87997a5f6c003271ae68909ae012e506abfb7880e13429b5f516ee2592992e942f1664cf43ba274e1453782a454e4bf8c83654cfb8afa90b11caa73e94053bb31a0662894873c76c3640a8c6267b7fa8dce24719d0666f4b09a1c091d2df3bba3c64b39a22d14f8103a094cbc836119b33bd780a2872617be355d67585407967d00651405734d6fc7004705aee2436c1a375e4748a9d700a68d567e9a977eb00850ef35bcbda045b9b45ba6e41f1f6b2fa27b2c173014344a6fc703340d1aca3a184eb5649baf8148e0c041e28c352ce32b9e2750657728ffea6f54e458bdb34b96a2b0168a61e1a0cfae75b9e86cca8f08b1f311a0ecf3896c0142005340c2b5130b4aa6aca316dc9c77bdd11bc1a41b49f93600806b57f2a90a966c89949a2e1cc8ece51386c922ea909a5a36a0ba412ecdc379af1c176304b7d5687c74f2800ffa4f27a488dc5543ef33920896ad01262e00545df1a992d402361c1288b4753a1d641ed70b418d61bd2c48638881604ffb530c33a301172bbd3823f6b01b3ed24cfd392a0da769564c02c6b021f757323a750837d596d6da1845548649a4957a9752e0faa75b15b7a4f7564d1a1eb86484a3a78eeaa3843c853eaef1c6b78263fe27273d623111755f4f68bcdb0630026ac6cbf2b332a349e3fc0d8a090eb78516fa0147c4a1ba9f211e4006571351c0087330ed3c66bd077983251fcdf79d3cf10235d34554dcaa