Files
mlkem-sync/test_framework/modules/mlkem_keygen/golden/c004_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

5df6621f39afd4f69a8f688c01f6331a1780249c02e1857a274357adf43dbcb28831f2cedf46401de1afa655436ba43e4293b70c092b94544c4f522f4831913b9b249383963f6bcc78da5f5bd54419e2cecdf589912859fc47b1340a5a2a095dd9b5657662c03c84200e319873a18f5c035dbdb56444e787f0903abd7a629af87de831b39c5988d0d1b4cdb50d32480c0b9525354406aa91834c34bded4372ec0942bce9141b573e60a25434c82463bc9d6b63af5d7552757524d7934c34e583c3a4cac611cc303074dc274aac8b00a8c452e7a409c5b7bee4371e9a50099444c867bb39ce4a03931054757515902978e09c3aa5820674823f923330a207be545083583131855a0226f409a011266cb590b97bc1fbf9a0f1d0b1be2b81988330ad72a538aa1151795614bc01f6296f4290cef617b2c9919199e480fee589e91c78ab427c9c8563bbab54d28a6c77c06dc95671286403608b6c4b77739bfc5d7b197c9cf66229106f202b941f944614b93a16772eada98ffce9c9e7dc7a237560540323e4ac4c7c6c06733c3ee0ac55b574b7bac089b6a31ddce15ed9716922dc3f122b7e88b62fd514b2634ccdcaf965174158c3387929bcc000e312c4bc153408821af7a9eb8458a90388d32b17724721140675b8777ec4a14cf38138d9990e53115cc2a2c9120316c64a516e769d54738017547e8dec639a488183f69c95e52505678891068d9c81129561b025f21f0bbc41d6544305cbcb0bf5a57453212da638759b220d3c5ea7714eb9f61797c508bee11e11f49bc2286a9462939459456d346ce0f4182c915adfa25a0cf2879c82160c1a887fc243e50693a11a2e8d92ce6ff0c86d7ca816324c3b368a70600ba928749bb815c2fa99d317a9e78427ab5785cb51382b362b42bc52717314301969aac619234ab8aeba7bf7d28db7d270a18a1aa089cf1c9103dac5a11f075f5ab1a6e0301ebc510e45368aa308b2ce5174c2a26359cc9cddca8bbcfc71dc53bd7b86119eda2259942e2994cc506c87f3854a83c823ade1cf0adc460bfc34e534481fdb55e7bc71311904d2a60fd7821f