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.
This commit is contained in:
2026-06-27 23:37:23 +08:00
parent 4997657d7e
commit 106b2925a8
97 changed files with 18186 additions and 24 deletions

View File

@@ -0,0 +1 @@
3631008f7183b49b55f5c4b6431936a5cc871749cd95e8c65f023af1ab06135c702cf2c15112c129f74893337010424a82c17928538e93904245294be1665dcdf7a468579d03d0cc509b5096f7a043e45c670362dc18bc5245b0c694cf6f492117d1577428c8bce8871b78669c951b07a8577511b08b8657360bcb7a59060a236bb3772887d9b6ff4821bff754fbe840f2274e8195139c472dbbf96a72371a30059e55ea84313c5ffbc961279243697c0d6123cca83654c51c25e34bc5ed6367798905cd934e210174fb175ed03387da1c314d3734cb281db0611feba38590584b419012a2347829519a00fcaa33671e42a53ae0807c11749bddfa90b505b862456ab3cbab9b4243e3015c051836bdb233bb814ef9102900a5cdcca2ab57f6bdafba4b6023095000b19acc110e336aa012ba6b9111a9d6c30a06a2db36842525297e447389a7904d93360d640d48780dfb645922d0a05b8833857834e889a2419c2b97453e3fabccf0642006c6a7adc7a9868759ae11cde6a68adaca3f6ea47ec573a64b89c7ad2633ed571591711d9d5310e9d83c6997b6ae317f3fc7011aa0b9fc171156779b85ea4708276ddcf96bb80017324008e82355e78184fb9879d3f42c87d9562df34c55146d424a150f1112364953304808b6d5ba66d2832aa532d0d4212df7b385477eb57aaef2f385a54660aedcb4edd96ebdfb050bd81deb3a09aafca5115282ce74c4392624c974a94a601295330209d59f0a0033379790aebb5b43d518066a5a4174933688a64141c1dca32e21a6793310b31be19e721b5ae5a83b45d424ed0267ec363a8a956ae64b1c140470656027095b148590260f909908dc82c474abd4e3954e54288e7605ee3381c0c1b453baa22b506c3c3a3e3adc3851a536ebb7483d52a34c3c1d100976b36a21f7b92182fa38ce10b690f57e33861c349727a6d79df45670f3e88344b43d0b790e4bba92bd60b4fd6a5e1c9b60b4eb10b71100d99558c9d126df7984a37c60a84975b1eabaa02629f42b35e5bc907e093e968b56d7d91ea2a6260c866e5b83ccee54303345138ae97c55f578a6ec3b4058b7d1e14ac92e370cf770042ad3f7152359226c2c2abc6bcb87462f