Split ambiguous MLK_ERR_FAIL into specific error codes - #1852
Conversation
CBMC Results (ML-KEM-768)
Full Results (191 proofs)
|
CBMC Results (ML-KEM-512)
Full Results (191 proofs)
|
CBMC Results (ML-KEM-1024)
Full Results (191 proofs)
|
68b3b47 to
e0f568d
Compare
mkannwischer
left a comment
There was a problem hiding this comment.
Thanks @hanno-becker! LGTM!
48f23b5 to
b15cd0f
Compare
b15cd0f to
32faffa
Compare
Previously, MLK_ERR_FAIL was returned for several externally distinct
failure conditions: a public key rejected by the FIPS 203 'modulus
check', a secret key rejected by the FIPS 203 'hash check', and a
failed pairwise consistency test (PCT). An integrator translating
mlkem-native return codes into their own error space could not tell
these apart without extra work.
This commit adds three dedicated error codes:
MLK_ERR_INVALID_PK (-4) check_pk / encaps rejected the public key
MLK_ERR_INVALID_SK (-5) check_sk / decaps rejected the secret key
MLK_ERR_PCT_FAIL (-6) keygen PCT self-test failed
The existing codes (-1..-3) are unchanged. In particular, MLK_ERR_FAIL
remains, but is no longer returned by any function.
Since the key pair tested by the PCT was just generated by this library,
a key check rejecting it hints at a faulty implementation rather than at
bad input; mlk_check_pct therefore maps MLK_ERR_INVALID_{PK,SK} to
MLK_ERR_PCT_FAIL and passes platform failures through unmodified.
The commit also makes the CBMC ensures contracts specific instead of
admitting MLK_ERR_FAIL everywhere, and drops it from the indcpa
contracts, which only ever return 0 or MLK_ERR_OUT_OF_MEMORY.
Resolves: #1846
Signed-off-by: Hanno Becker <beckphan@amazon.co.uk>
The tests asserted return codes with CHECK(call == RC), which reports only a file and line on failure. Diagnosing a mismatch meant looking up the line and mapping numeric codes by hand. It also hid gaps: the PCT breakage CI job asserted no more than "keygen returned non-zero", so swapping MLK_ERR_PCT_FAIL for another code kept CI green. This commit adds CHECK_ERR(call, expected), which prints both codes numerically and by name: ERROR (test/src/test_mlkem.c,83): Expected -4 (MLK_ERR_INVALID_PK) for crypto_kem_enc(ct, key_b, pk), but got 0 (Success) CHECK_ERR is used only where the value really is an MLK_ERR_XXX code, i.e. the crypto_kem_xxx API. It deliberately does not cover randombytes(), which is consumer-provided and returns an unspecified non-zero value on failure, nor values aggregating several return codes. Those keep using CHECK, as do conditions that are not return codes at all, such as memcmp() comparisons. Both macros, together with the code-to-name mapping, now live in the new test/src/test_common.h, replacing seven near-identical copies of CHECK. The 'return 1' and 'exit(1)' variants that motivated two of those copies are unified behind MLK_TEST_CHECK_EXIT, which the ACVP and Wycheproof drivers set because their test-case handlers return void. The fault injection loops in test_alloc.c and test_rng_fail.c keep their own reporting, but now name the codes they print. With the code visible in the output, the PCT breakage job can assert on it, closing the gap noted above. Signed-off-by: Hanno Becker <beckphan@amazon.co.uk>
32faffa to
326de4f
Compare
oqs-bot
left a comment
There was a problem hiding this comment.
Mac Mini (M1, 2020) benchmarks
Details
| Benchmark suite | Current: 326de4f | Previous: 23f0c0f | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
12321 cycles |
12323 cycles |
1.00 |
ML-KEM-512 encaps |
14756 cycles |
14759 cycles |
1.00 |
ML-KEM-512 decaps |
19312 cycles |
19315 cycles |
1.00 |
ML-KEM-768 keypair |
21180 cycles |
21176 cycles |
1.00 |
ML-KEM-768 encaps |
23515 cycles |
23511 cycles |
1.00 |
ML-KEM-768 decaps |
30058 cycles |
30053 cycles |
1.00 |
ML-KEM-1024 keypair |
30330 cycles |
30330 cycles |
1 |
ML-KEM-1024 encaps |
34110 cycles |
34110 cycles |
1 |
ML-KEM-1024 decaps |
43666 cycles |
43682 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Intel Xeon 4th gen (c7i)
Details
| Benchmark suite | Current: 326de4f | Previous: 23f0c0f | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
11927 cycles |
11795 cycles |
1.01 |
ML-KEM-512 encaps |
13192 cycles |
13069 cycles |
1.01 |
ML-KEM-512 decaps |
17194 cycles |
17187 cycles |
1.00 |
ML-KEM-768 keypair |
19459 cycles |
19376 cycles |
1.00 |
ML-KEM-768 encaps |
20762 cycles |
20670 cycles |
1.00 |
ML-KEM-768 decaps |
26377 cycles |
26400 cycles |
1.00 |
ML-KEM-1024 keypair |
28196 cycles |
28186 cycles |
1.00 |
ML-KEM-1024 encaps |
30192 cycles |
30158 cycles |
1.00 |
ML-KEM-1024 decaps |
37495 cycles |
37657 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
AMD EPYC 3rd gen (c6a)
Details
| Benchmark suite | Current: 326de4f | Previous: 0457037 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
14450 cycles |
14425 cycles |
1.00 |
ML-KEM-512 encaps |
15962 cycles |
15949 cycles |
1.00 |
ML-KEM-512 decaps |
21357 cycles |
21332 cycles |
1.00 |
ML-KEM-768 keypair |
23626 cycles |
23630 cycles |
1.00 |
ML-KEM-768 encaps |
25052 cycles |
25017 cycles |
1.00 |
ML-KEM-768 decaps |
32873 cycles |
32859 cycles |
1.00 |
ML-KEM-1024 keypair |
33585 cycles |
33510 cycles |
1.00 |
ML-KEM-1024 encaps |
35899 cycles |
35857 cycles |
1.00 |
ML-KEM-1024 decaps |
46319 cycles |
46281 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Intel Xeon 4th gen (c7i) (no-opt)
Details
| Benchmark suite | Current: 326de4f | Previous: 23f0c0f | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
27597 cycles |
27600 cycles |
1.00 |
ML-KEM-512 encaps |
34385 cycles |
34781 cycles |
0.99 |
ML-KEM-512 decaps |
43969 cycles |
44408 cycles |
0.99 |
ML-KEM-768 keypair |
44242 cycles |
44301 cycles |
1.00 |
ML-KEM-768 encaps |
54932 cycles |
54825 cycles |
1.00 |
ML-KEM-768 decaps |
68252 cycles |
68175 cycles |
1.00 |
ML-KEM-1024 keypair |
67537 cycles |
67472 cycles |
1.00 |
ML-KEM-1024 encaps |
78752 cycles |
78795 cycles |
1.00 |
ML-KEM-1024 decaps |
96068 cycles |
96056 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
ppc64le (POWER10) benchmarks
Details
| Benchmark suite | Current: 326de4f | Previous: 0457037 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
38760 cycles |
38629 cycles |
1.00 |
ML-KEM-512 encaps |
43594 cycles |
43485 cycles |
1.00 |
ML-KEM-512 decaps |
54034 cycles |
54190 cycles |
1.00 |
ML-KEM-768 keypair |
69292 cycles |
67305 cycles |
1.03 |
ML-KEM-768 encaps |
78002 cycles |
76272 cycles |
1.02 |
ML-KEM-768 decaps |
92700 cycles |
90605 cycles |
1.02 |
ML-KEM-1024 keypair |
113988 cycles |
113226 cycles |
1.01 |
ML-KEM-1024 encaps |
124748 cycles |
123745 cycles |
1.01 |
ML-KEM-1024 decaps |
143185 cycles |
142646 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Graviton5
Details
| Benchmark suite | Current: 326de4f | Previous: 23f0c0f | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
13436 cycles |
13462 cycles |
1.00 |
ML-KEM-512 encaps |
15780 cycles |
15781 cycles |
1.00 |
ML-KEM-512 decaps |
21301 cycles |
21329 cycles |
1.00 |
ML-KEM-768 keypair |
22875 cycles |
22836 cycles |
1.00 |
ML-KEM-768 encaps |
25297 cycles |
25301 cycles |
1.00 |
ML-KEM-768 decaps |
33174 cycles |
33118 cycles |
1.00 |
ML-KEM-1024 keypair |
33289 cycles |
33222 cycles |
1.00 |
ML-KEM-1024 encaps |
36931 cycles |
37029 cycles |
1.00 |
ML-KEM-1024 decaps |
47155 cycles |
47148 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Arm Cortex-A76 (Raspberry Pi 5) benchmarks
Details
| Benchmark suite | Current: 326de4f | Previous: 23f0c0f | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
28246 cycles |
28247 cycles |
1.00 |
ML-KEM-512 encaps |
34127 cycles |
34125 cycles |
1.00 |
ML-KEM-512 decaps |
44532 cycles |
44477 cycles |
1.00 |
ML-KEM-768 keypair |
47565 cycles |
47615 cycles |
1.00 |
ML-KEM-768 encaps |
53876 cycles |
53862 cycles |
1.00 |
ML-KEM-768 decaps |
68528 cycles |
68526 cycles |
1.00 |
ML-KEM-1024 keypair |
70253 cycles |
70186 cycles |
1.00 |
ML-KEM-1024 encaps |
78655 cycles |
78595 cycles |
1.00 |
ML-KEM-1024 decaps |
98306 cycles |
98348 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Intel Xeon 3rd gen (c6i)
Details
| Benchmark suite | Current: 326de4f | Previous: 0457037 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
17993 cycles |
17951 cycles |
1.00 |
ML-KEM-512 encaps |
20179 cycles |
20124 cycles |
1.00 |
ML-KEM-512 decaps |
26774 cycles |
26771 cycles |
1.00 |
ML-KEM-768 keypair |
30113 cycles |
30060 cycles |
1.00 |
ML-KEM-768 encaps |
31955 cycles |
31879 cycles |
1.00 |
ML-KEM-768 decaps |
41525 cycles |
41517 cycles |
1.00 |
ML-KEM-1024 keypair |
42121 cycles |
42145 cycles |
1.00 |
ML-KEM-1024 encaps |
46226 cycles |
46574 cycles |
0.99 |
ML-KEM-1024 decaps |
58104 cycles |
58442 cycles |
0.99 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
AMD EPYC 4th gen (c7a)
Details
| Benchmark suite | Current: 326de4f | Previous: 23f0c0f | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
12799 cycles |
12818 cycles |
1.00 |
ML-KEM-512 encaps |
14208 cycles |
14216 cycles |
1.00 |
ML-KEM-512 decaps |
18966 cycles |
18995 cycles |
1.00 |
ML-KEM-768 keypair |
21606 cycles |
21624 cycles |
1.00 |
ML-KEM-768 encaps |
22736 cycles |
22688 cycles |
1.00 |
ML-KEM-768 decaps |
29654 cycles |
29727 cycles |
1.00 |
ML-KEM-1024 keypair |
30489 cycles |
30459 cycles |
1.00 |
ML-KEM-1024 encaps |
32651 cycles |
32651 cycles |
1 |
ML-KEM-1024 decaps |
42055 cycles |
42044 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Graviton4
Details
| Benchmark suite | Current: 326de4f | Previous: 23f0c0f | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
17662 cycles |
17687 cycles |
1.00 |
ML-KEM-512 encaps |
20547 cycles |
20543 cycles |
1.00 |
ML-KEM-512 decaps |
27006 cycles |
27037 cycles |
1.00 |
ML-KEM-768 keypair |
29862 cycles |
29832 cycles |
1.00 |
ML-KEM-768 encaps |
32698 cycles |
32716 cycles |
1.00 |
ML-KEM-768 decaps |
41918 cycles |
41858 cycles |
1.00 |
ML-KEM-1024 keypair |
43720 cycles |
43689 cycles |
1.00 |
ML-KEM-1024 encaps |
48623 cycles |
48703 cycles |
1.00 |
ML-KEM-1024 decaps |
61397 cycles |
61374 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Graviton5 (no-opt)
Details
| Benchmark suite | Current: 326de4f | Previous: 23f0c0f | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
27346 cycles |
27363 cycles |
1.00 |
ML-KEM-512 encaps |
31708 cycles |
31621 cycles |
1.00 |
ML-KEM-512 decaps |
40432 cycles |
40544 cycles |
1.00 |
ML-KEM-768 keypair |
44008 cycles |
44104 cycles |
1.00 |
ML-KEM-768 encaps |
50703 cycles |
50582 cycles |
1.00 |
ML-KEM-768 decaps |
62158 cycles |
62279 cycles |
1.00 |
ML-KEM-1024 keypair |
68294 cycles |
68253 cycles |
1.00 |
ML-KEM-1024 encaps |
75985 cycles |
76085 cycles |
1.00 |
ML-KEM-1024 decaps |
90675 cycles |
90631 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
AMD EPYC 3rd gen (c6a) (no-opt)
Details
| Benchmark suite | Current: 326de4f | Previous: 0457037 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
39915 cycles |
39854 cycles |
1.00 |
ML-KEM-512 encaps |
48290 cycles |
48218 cycles |
1.00 |
ML-KEM-512 decaps |
61734 cycles |
61732 cycles |
1.00 |
ML-KEM-768 keypair |
62643 cycles |
62570 cycles |
1.00 |
ML-KEM-768 encaps |
74853 cycles |
74777 cycles |
1.00 |
ML-KEM-768 decaps |
92382 cycles |
92384 cycles |
1.00 |
ML-KEM-1024 keypair |
95219 cycles |
95198 cycles |
1.00 |
ML-KEM-1024 encaps |
110160 cycles |
110050 cycles |
1.00 |
ML-KEM-1024 decaps |
132802 cycles |
132620 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Intel Xeon 3rd gen (c6i) (no-opt)
Details
| Benchmark suite | Current: 326de4f | Previous: 23f0c0f | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
47017 cycles |
46915 cycles |
1.00 |
ML-KEM-512 encaps |
55767 cycles |
55723 cycles |
1.00 |
ML-KEM-512 decaps |
71436 cycles |
71460 cycles |
1.00 |
ML-KEM-768 keypair |
74462 cycles |
74407 cycles |
1.00 |
ML-KEM-768 encaps |
85962 cycles |
85960 cycles |
1.00 |
ML-KEM-768 decaps |
106946 cycles |
106977 cycles |
1.00 |
ML-KEM-1024 keypair |
111440 cycles |
111323 cycles |
1.00 |
ML-KEM-1024 encaps |
126156 cycles |
126051 cycles |
1.00 |
ML-KEM-1024 decaps |
152195 cycles |
152138 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Graviton4 (no-opt)
Details
| Benchmark suite | Current: 326de4f | Previous: 23f0c0f | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
35217 cycles |
35184 cycles |
1.00 |
ML-KEM-512 encaps |
40057 cycles |
39970 cycles |
1.00 |
ML-KEM-512 decaps |
50570 cycles |
50607 cycles |
1.00 |
ML-KEM-768 keypair |
56693 cycles |
56651 cycles |
1.00 |
ML-KEM-768 encaps |
64088 cycles |
63988 cycles |
1.00 |
ML-KEM-768 decaps |
78447 cycles |
78490 cycles |
1.00 |
ML-KEM-1024 keypair |
87377 cycles |
87500 cycles |
1.00 |
ML-KEM-1024 encaps |
96557 cycles |
96560 cycles |
1.00 |
ML-KEM-1024 decaps |
114869 cycles |
114637 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
AMD EPYC 4th gen (c7a) (no-opt)
Details
| Benchmark suite | Current: 326de4f | Previous: 23f0c0f | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
36721 cycles |
36727 cycles |
1.00 |
ML-KEM-512 encaps |
42812 cycles |
42797 cycles |
1.00 |
ML-KEM-512 decaps |
55529 cycles |
55543 cycles |
1.00 |
ML-KEM-768 keypair |
58370 cycles |
58468 cycles |
1.00 |
ML-KEM-768 encaps |
67042 cycles |
67072 cycles |
1.00 |
ML-KEM-768 decaps |
83944 cycles |
83919 cycles |
1.00 |
ML-KEM-1024 keypair |
88513 cycles |
88496 cycles |
1.00 |
ML-KEM-1024 encaps |
99079 cycles |
99109 cycles |
1.00 |
ML-KEM-1024 decaps |
120677 cycles |
120500 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Graviton3
Details
| Benchmark suite | Current: 326de4f | Previous: 23f0c0f | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
18637 cycles |
18653 cycles |
1.00 |
ML-KEM-512 encaps |
21829 cycles |
21833 cycles |
1.00 |
ML-KEM-512 decaps |
28837 cycles |
28874 cycles |
1.00 |
ML-KEM-768 keypair |
31537 cycles |
31502 cycles |
1.00 |
ML-KEM-768 encaps |
34746 cycles |
34750 cycles |
1.00 |
ML-KEM-768 decaps |
44819 cycles |
44731 cycles |
1.00 |
ML-KEM-1024 keypair |
46146 cycles |
46083 cycles |
1.00 |
ML-KEM-1024 encaps |
51439 cycles |
51511 cycles |
1.00 |
ML-KEM-1024 decaps |
64931 cycles |
64942 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Graviton3 (no-opt)
Details
| Benchmark suite | Current: 326de4f | Previous: 23f0c0f | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
38784 cycles |
38774 cycles |
1.00 |
ML-KEM-512 encaps |
44461 cycles |
44429 cycles |
1.00 |
ML-KEM-512 decaps |
56109 cycles |
56152 cycles |
1.00 |
ML-KEM-768 keypair |
62350 cycles |
62275 cycles |
1.00 |
ML-KEM-768 encaps |
70582 cycles |
70525 cycles |
1.00 |
ML-KEM-768 decaps |
86241 cycles |
86297 cycles |
1.00 |
ML-KEM-1024 keypair |
95600 cycles |
96017 cycles |
1.00 |
ML-KEM-1024 encaps |
105885 cycles |
105890 cycles |
1.00 |
ML-KEM-1024 decaps |
126025 cycles |
125734 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Graviton2
Details
| Benchmark suite | Current: 326de4f | Previous: 23f0c0f | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
28224 cycles |
28264 cycles |
1.00 |
ML-KEM-512 encaps |
34093 cycles |
34089 cycles |
1.00 |
ML-KEM-512 decaps |
44512 cycles |
44538 cycles |
1.00 |
ML-KEM-768 keypair |
47622 cycles |
47615 cycles |
1.00 |
ML-KEM-768 encaps |
53868 cycles |
53885 cycles |
1.00 |
ML-KEM-768 decaps |
68573 cycles |
68528 cycles |
1.00 |
ML-KEM-1024 keypair |
70176 cycles |
70167 cycles |
1.00 |
ML-KEM-1024 encaps |
78620 cycles |
78569 cycles |
1.00 |
ML-KEM-1024 decaps |
98228 cycles |
98312 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Graviton2 (no-opt)
Details
| Benchmark suite | Current: 326de4f | Previous: 23f0c0f | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
58716 cycles |
58695 cycles |
1.00 |
ML-KEM-512 encaps |
68575 cycles |
68507 cycles |
1.00 |
ML-KEM-512 decaps |
87424 cycles |
87279 cycles |
1.00 |
ML-KEM-768 keypair |
94935 cycles |
94625 cycles |
1.00 |
ML-KEM-768 encaps |
109275 cycles |
108873 cycles |
1.00 |
ML-KEM-768 decaps |
134289 cycles |
133845 cycles |
1.00 |
ML-KEM-1024 keypair |
151702 cycles |
151125 cycles |
1.00 |
ML-KEM-1024 encaps |
166256 cycles |
165399 cycles |
1.01 |
ML-KEM-1024 decaps |
199385 cycles |
199218 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
SpacemiT K1 8 (Banana Pi F3) benchmarks
Details
| Benchmark suite | Current: 326de4f | Previous: 23f0c0f | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
143660 cycles |
143655 cycles |
1.00 |
ML-KEM-512 encaps |
152006 cycles |
151977 cycles |
1.00 |
ML-KEM-512 decaps |
190489 cycles |
190459 cycles |
1.00 |
ML-KEM-768 keypair |
233989 cycles |
233932 cycles |
1.00 |
ML-KEM-768 encaps |
251179 cycles |
251116 cycles |
1.00 |
ML-KEM-768 decaps |
306561 cycles |
305962 cycles |
1.00 |
ML-KEM-1024 keypair |
365554 cycles |
367148 cycles |
1.00 |
ML-KEM-1024 encaps |
387857 cycles |
390444 cycles |
0.99 |
ML-KEM-1024 decaps |
458387 cycles |
460969 cycles |
0.99 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Arm Cortex-M55 (NUCLEO-N657X0-Q) benchmarks
Details
| Benchmark suite | Current: 326de4f | Previous: 23f0c0f | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
647367 cycles |
647367 cycles |
1 |
ML-KEM-512 encaps |
728024 cycles |
728024 cycles |
1 |
ML-KEM-512 decaps |
928692 cycles |
928690 cycles |
1.00 |
ML-KEM-768 keypair |
1032214 cycles |
1032214 cycles |
1 |
ML-KEM-768 encaps |
1162339 cycles |
1162339 cycles |
1 |
ML-KEM-768 decaps |
1433590 cycles |
1433588 cycles |
1.00 |
ML-KEM-1024 keypair |
1594936 cycles |
1594936 cycles |
1 |
ML-KEM-1024 encaps |
1747347 cycles |
1747347 cycles |
1 |
ML-KEM-1024 decaps |
2094866 cycles |
2094864 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
Previously, MLK_ERR_FAIL was returned for several externally distinct failure conditions: a public key rejected by the FIPS 203 'modulus check', a secret key rejected by the FIPS 203 'hash check', and a failed pairwise consistency test (PCT). An integrator translating mlkem-native return codes into their own error space could not tell these apart without extra work.
This commit adds three dedicated error codes:
MLK_ERR_INVALID_PK (-4) check_pk / encaps rejected the public key
MLK_ERR_INVALID_SK (-5) check_sk / decaps rejected the secret key
MLK_ERR_PCT_FAIL (-6) keygen PCT self-test failed
The existing codes (-1..-3) are unchanged. In particular, MLK_ERR_FAIL remains, but is no longer returned by any function.
Since the key pair tested by the PCT was just generated by this library, a key check rejecting it hints at a faulty implementation rather than at bad input; mlk_check_pct therefore maps MLK_ERR_INVALID_{PK,SK} to MLK_ERR_PCT_FAIL and passes platform failures through unmodified.
The commit also makes the CBMC ensures contracts specific instead of admitting MLK_ERR_FAIL everywhere, and drops it from the indcpa contracts, which only ever return 0 or MLK_ERR_OUT_OF_MEMORY.