Files
mlkem-sync/sync_rtl/top/TB/vectors/kg_c000_AsE.hex
FallenSigh 2f206a6bc5 feat(mlkem_top): KeyGen stages 2a-2c (G, SampleNTT A_hat, CBD s/e)
Fresh valid/ready KeyGen FSM for ML-KEM-512 (K=2, eta1=3). Independent
keccak per consumer (no arbiter). Verified stage-by-stage vs ml-kem-r golden:
- 2a G(d||K): rho/sigma exact (d byte0-low, K at byte32, no reversal).
- 2b SampleNTT: A_hat[i][j] from seed rho||j||i, 1024/1024 coeffs exact.
- 2c CBD: s[i]=CBD3(PRF(sigma,i)), e[i]=CBD3(PRF(sigma,K+i)); signed->mod-q
  (+Q when negative); 2048/2048 (A+s+e) coeffs exact.

polymem register array (10 slots x 256), debug readback tap (dbg_slot/idx ->
coeff, rho/sigma taps) for stage TBs. a_busy/c_busy guards (defensive after
sample_ntt fix). FSM: IDLE->G->A->C->DONE (datapath extended in later stages).

Plan + progress doc in .claude/plans/keygen_plan.md.
2026-06-28 01:41:44 +08:00

2049 lines
8.0 KiB
Plaintext

8d8
a49
3b7
05e
179
1bb
945
5d2
868
700
133
61f
214
142
3ad
cb4
354
8cc
507
c94
c2b
9b7
32e
25b
1c5
4bb
01c
2bf
819
4fd
cd9
c29
13e
cf0
46c
6e1
9fa
3cf
9f8
1d9
b0b
5be
7e0
195
1c8
b3e
bfd
0ff
cb7
195
c74
509
42d
191
9a0
088
8f6
810
528
487
684
099
66f
0fa
367
579
524
a5c
4fb
121
194
7d4
3ad
c78
209
411
684
8bd
721
aa1
c03
226
82c
21d
1a0
428
bbe
3d8
53e
087
cc9
9b8
ca7
5fa
367
0ba
06c
b71
5c3
28c
11f
710
189
928
aa4
6ac
366
8e5
519
197
36d
7d4
261
03c
a50
038
089
156
71f
48d
80a
7b0
be5
6c3
8a8
1a2
b18
213
197
726
03f
4a6
b0e
41f
412
85b
341
6b9
059
7a2
4d7
5c3
ad3
5f5
7b3
4eb
b7e
5df
886
923
138
0a2
979
6cb
651
1cb
984
7be
b1b
281
0db
50c
01e
2bf
071
631
44a
3fa
2d7
120
66f
36d
aec
200
b41
93d
b4d
819
504
b22
9da
760
c49
0f6
70b
95e
68b
1db
913
af4
20b
3e8
c38
26d
225
34d
aa1
be2
553
1fe
609
1d7
331
be0
959
7ec
621
355
0ff
55a
3ba
2a8
7d4
43d
1c5
54d
2a9
5e7
950
7ab
643
68e
689
510
212
b24
5e9
2eb
a92
036
5aa
771
a8a
318
550
8e6
030
269
199
15f
3f7
036
193
0bc
67e
648
289
c87
b89
3a3
312
97d
03c
4a4
aaf
b2d
58e
c5e
6e0
299
5d2
98f
925
54c
1ab
afb
6be
452
a87
5e1
598
68e
7e8
170
3da
a5c
552
c0f
443
343
c2c
792
c03
24e
3c3
461
5aa
c47
64e
743
85e
7f5
b63
315
730
b06
8e2
ae0
4bb
9f8
b20
2a4
1b9
876
abf
33e
80c
898
a87
143
86e
5d6
39d
358
649
810
64f
169
5bc
046
0d4
4f0
cef
8da
c5e
49c
c49
8e0
c4b
596
259
3a5
a92
234
153
cf1
36a
138
8c2
89d
2fb
00a
823
007
3d7
acc
667
cd4
a75
cd4
aa9
97c
42e
649
8b0
122
4dd
61d
813
41a
4d9
0ac
72a
b8f
9ea
41d
01f
787
518
2b2
aac
c31
2a9
4c4
a50
53f
a6c
5f5
8c8
13c
697
0eb
1f7
637
a44
b3e
1d3
b69
8f0
816
7b1
af8
8cf
238
a2b
129
0cf
454
2c1
684
ad9
9c8
289
39c
921
655
c00
a64
26f
c67
367
07e
7ea
316
304
b95
11c
9a7
83d
644
9d2
65d
cb6
3c2
2a2
a81
120
9c8
0ff
7ad
286
5f2
0b3
b6b
6a0
14a
b10
72f
bfc
39e
5b8
5dd
029
4e7
6e9
c55
7ae
be1
b11
60c
3b7
036
aa7
26f
2ab
cf8
125
601
50c
8d9
8e8
63a
b8e
bb8
891
466
513
2e2
ae5
4cc
2c9
7cd
3c5
4f6
590
98c
cd0
456
9c8
2c2
3ae
10b
cf8
582
4fd
40f
82a
a5a
762
43e
203
2aa
c3f
645
051
290
811
6b4
09c
c81
51b
789
2ed
aec
215
b3a
240
1b4
2cc
7ec
9fc
72d
3e9
88b
8a2
2a9
92c
5b8
6ab
0ae
961
a7b
970
33a
aa6
7f8
c83
030
26d
594
a50
469
619
c75
b92
7ee
907
1c3
97c
c58
8b8
b2f
7b2
4f7
394
021
b94
a37
6f7
397
a07
8c4
cc1
a41
a21
97f
8c9
955
571
8ef
545
185
706
80a
9fd
329
5c6
7b5
357
cdd
a62
c25
5d0
375
663
93c
111
ab5
0d4
42e
54b
462
8fb
4eb
c21
6ca
cb0
b79
80e
092
399
a56
55f
390
130
54f
174
c4b
4f1
32b
032
18a
8e6
1bd
1f3
165
2a4
571
3b8
408
2a2
9b0
336
465
4c7
833
a09
10b
14c
730
03f
2bf
123
c4b
064
187
c4b
9f3
21d
3f5
29c
6d6
b10
63d
3a2
1cf
0df
bb0
392
2e3
bbd
b3c
19d
8bd
88d
688
0dc
613
46b
3c4
523
bc6
9e2
480
8b5
7c0
0ae
8e0
177
186
5ff
539
932
bb9
9cd
2df
7b3
237
5d3
9ff
a88
a62
60f
c24
a3d
457
c16
ce6
ad0
62a
089
747
c7f
8ea
2c3
042
6fa
cad
5ae
7fa
858
93b
7d5
b34
17c
804
9e0
229
847
794
000
47d
684
54a
a75
a38
261
c8e
a8e
898
3fd
1cc
ad3
142
3d6
115
4d8
58f
864
2f5
922
049
799
b7a
95a
419
1d1
0f3
74d
86f
898
654
834
91d
405
310
6d2
a2c
8b7
36b
4f6
132
cc3
c1a
61b
b79
75d
406
3ad
2d8
a0b
c79
510
a06
060
9e2
4b3
466
c7d
9c9
094
964
566
1e2
825
380
687
cf3
b6b
cd0
c24
19b
ae4
759
c5e
055
c64
922
2a8
1ec
73b
8c4
9e9
734
c65
216
7f4
6e0
baa
6b3
9f0
2f4
161
9bb
1e4
163
b81
060
b5d
598
073
4d5
6dd
4f4
611
69d
740
b3d
79f
1e2
519
055
7a0
42c
02f
96a
b5c
3cf
068
772
267
8da
926
8cf
170
1ba
852
90a
0b8
31f
033
6f3
329
3fe
71d
00c
2a1
b0e
410
099
4e9
0b4
356
27e
2b9
5b1
60f
cb2
089
44c
b47
930
653
5d1
312
1c2
340
b5b
af3
ba7
626
83d
a16
898
bdd
bd0
91f
b3d
784
38f
8ec
32c
c85
7ed
916
00d
4ed
4ca
33d
7f5
4c5
5ab
a43
ae8
ad9
76c
ba9
8a2
05b
809
924
77d
4c7
bfd
299
29a
02a
71e
12f
b83
4f6
bfe
82e
c82
1fc
130
454
8e9
846
290
c7d
ab7
7c7
458
41a
a36
bfe
5db
caa
784
867
70f
62b
176
48e
4c5
27e
5a9
586
a90
627
b76
2f5
011
4b2
919
925
646
215
52f
7d1
ce4
c8a
bd0
38d
0bc
70c
988
6b5
939
a7b
482
176
b20
94b
046
990
cd6
787
374
302
4a1
872
907
55e
5d7
c86
63d
006
37a
97b
12e
218
159
b3c
808
072
a72
8c7
801
27b
a9e
3b7
7a6
9f8
35d
356
457
2cb
294
601
900
a5f
2a5
4a2
134
0da
7a3
7cc
b4b
3b1
7cc
685
7ea
7ce
0ed
28c
a3b
745
a05
32c
2ae
b06
4d1
cf7
203
93e
24a
bd4
55b
0f6
826
ac1
4db
001
000
d00
000
000
001
d00
001
000
003
cfe
000
000
d00
000
000
001
d00
d00
001
d00
cff
001
000
d00
003
d00
002
d00
cff
000
000
000
001
001
002
000
002
cfe
000
d00
003
d00
d00
000
001
000
000
d00
000
001
cff
d00
001
001
001
000
001
000
000
000
001
000
000
001
d00
000
cfe
001
000
cff
000
001
001
d00
001
002
d00
cff
000
001
000
000
d00
001
002
001
002
d00
001
cff
000
d00
cff
d00
000
cff
002
000
001
d00
cff
001
001
000
d00
000
001
d00
d00
d00
002
003
cff
d00
002
d00
001
d00
cff
001
000
001
d00
000
000
000
001
001
000
001
cfe
d00
001
000
001
000
d00
000
d00
002
000
001
cff
d00
d00
001
000
001
000
002
002
cff
d00
000
000
d00
d00
000
002
001
001
000
d00
cff
000
001
001
000
002
d00
d00
000
002
000
000
cff
cfe
000
cff
002
001
002
d00
d00
001
001
001
cff
001
001
001
d00
001
000
d00
002
cff
d00
001
000
000
002
002
000
cfe
001
001
d00
001
d00
cff
000
d00
000
001
000
d00
000
d00
001
d00
cff
001
001
000
001
000
000
000
cff
000
002
001
000
d00
d00
cfe
d00
000
003
002
001
003
d00
000
d00
001
d00
000
d00
d00
000
002
cff
d00
000
001
000
000
002
003
000
003
d00
000
d00
d00
d00
000
001
d00
001
000
000
000
002
d00
001
001
000
d00
000
000
cff
cff
d00
001
000
001
001
d00
000
000
002
d00
d00
d00
001
000
d00
d00
000
d00
001
d00
003
d00
000
002
cff
d00
002
001
002
000
001
001
000
002
cff
000
d00
000
cff
000
001
000
d00
cff
002
d00
d00
cff
d00
000
000
cff
cff
001
002
d00
000
002
001
001
000
d00
000
000
d00
001
000
002
001
000
002
002
001
cff
001
000
cff
001
002
000
cff
cff
000
002
000
000
000
002
000
d00
000
cff
001
000
000
d00
001
001
d00
d00
002
d00
001
cfe
000
d00
002
d00
000
cff
000
000
cff
001
d00
000
000
000
d00
003
d00
000
001
002
001
000
000
001
000
cff
000
001
d00
002
000
cff
000
002
001
001
000
000
000
001
001
002
000
001
001
d00
cff
000
d00
000
001
000
d00
000
001
d00
000
d00
000
d00
000
002
000
001
000
001
d00
001
cff
d00
001
d00
002
001
001
001
000
000
000
001
002
d00
000
cff
d00
001
000
002
000
000
001
d00
d00
d00
000
000
000
001
cfe
d00
000
001
001
002
003
001
000
d00
000
000
000
001
d00
cff
001
003
001
002
000
000
002
001
001
000
cfe
d00
001
002
cff
000
cff
d00
000
000
001
000
000
cfe
d00
000
000
001
d00
000
000
cff
001
001
d00
000
002
001
002
cff
001
002
000
d00
d00
002
002
000
000
000
cff
002
d00
000
d00
000
000
001
000
000
000
000
d00
001
d00
d00
000
002
002
cff
001
000
cff
000
000
002
002
cff
000
000
001
d00
000
000
001
000
cff
d00
d00
000
000
cff
000
000
d00
cff
000
cfe
cff
000
000
000
001
d00
002
000
000
001
cff
d00
001
000
d00
001
d00
001
002
001
d00
d00
d00
002
001
001
000
000
d00
000
000
000
d00
001
001
002
d00
001
002
000
001
d00
000
001
cfe
002
d00
cfe
cff
000
001
cff
001
002
d00
001
000
d00
d00
001
000
000
001
d00
d00
000
000
000
d00
002
001
000
d00
000
d00
000
d00
002
d00
001
cff
001
000
d00
000
000
d00
000
003
d00
002
000
d00
000
000
d00
000
d00
d00
000
001
001
d00
001
002
000
000
cff
000
000
000
d00
000
d00
000
001
000
d00
000
000
d00
000
cff
000
001
001
d00
000
001
002
d00
001
003
cff
d00
001
cff
cff
cff
d00
001
d00
d00
cff
000
001
002
002
001
000
001
d00
cff
002
002
d00
002
001
002
000
000
d00
001
000
003
000
002
d00
d00
000
000
d00
003
d00
d00
cff
001
d00
002
cff
000
000
000
000
d00
002
d00
000
000
d00
000
d00
000
d00
000
001
002
001
001
001
001
d00
001
001
d00
d00
001
000
003
001
002
002
d00
000
000
002
000
000
d00
cff
002
000
001
cff
d00
d00
000
000
000
d00
001
d00
001
002
000
d00
001
001
cfe
000
d00
002
001
cff
000
000
001
d00
d00
000
000
001
001
cff
000
000
000
001
001
000
d00
000
000
d00
d00
d00
002
d00
000
cfe
000
001
000
cff
001
001
001
001
001
cfe
000
001
002
d00
001
000
000
001
000
001
001
d00
001
000
003
000
d00
001
002
000
002
000
001
cff
002
001
d00
cff
d00
000
002
000
000
000
cff
001
002
d00
003
000
000
cff
000
001
d00
000
d00
000
000
d00
d00
001
000
cff
000
001
000
000
cff
000
000
001
d00
000
001
000
000
001
d00
001
001
001
d00
cff
000
d00
d00
000
000
d00
001
d00
002
000
000
000
002
cff
000
001
000
d00
d00
002
d00
000
002
000
001
d00
002
000
cff
001
cff
d00
000
d00
002
000
000
002
001
000
001
000
000
cfe
000
001
cff
001
000
d00
cff
002
d00
000
d00
d00
000
d00
cff
000
d00
000
000
001
cff
d00
d00
001