authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-10-07 14:02:32+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-10-08 13:53:08+02:00
log8eae4840be4972e92d94111b0ed4b908bd876504
tree09575188fccaed90dbb55b9ae407afc0cbccb556
parentf587d753d15c6847873c29ca04617dc4ccec726a
signature Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

std.crypto: disable ML-KEM tests affected by llvm riscv64 miscompilations

https://codeberg.org/ziglang/zig/issues/37128

2 files changed, 69 insertions(+), 0 deletions(-)

lib/std/crypto/hybrid_kem.zig+61
......@@ -13,6 +13,7 @@
1313//! The combiner uses the C2PRI construction to derive the final shared secret
1414//! from the component shared secrets, ciphertext, and public key.
1515
16const builtin = @import("builtin");
1617const std = @import("std");
1718const crypto = std.crypto;
1819const fmt = std.fmt;
......@@ -370,6 +371,8 @@ test "MLKEM768-X25519 basic round trip" {
370371}
371372
372373test "MLKEM768-X25519 test vector 0" {
374 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
375
373376 var seed: [32]u8 = undefined;
374377 var expected_ek: [1216]u8 = undefined;
375378 var randomness: [64]u8 = undefined;
......@@ -394,6 +397,8 @@ test "MLKEM768-X25519 test vector 0" {
394397}
395398
396399test "MLKEM768-X25519 test vector 1" {
400 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
401
397402 var seed: [32]u8 = undefined;
398403 var expected_ek: [1216]u8 = undefined;
399404 var randomness: [64]u8 = undefined;
......@@ -418,6 +423,8 @@ test "MLKEM768-X25519 test vector 1" {
418423}
419424
420425test "MLKEM768-X25519 test vector 2" {
426 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
427
421428 var seed: [32]u8 = undefined;
422429 var expected_ek: [1216]u8 = undefined;
423430 var randomness: [64]u8 = undefined;
......@@ -442,6 +449,8 @@ test "MLKEM768-X25519 test vector 2" {
442449}
443450
444451test "MLKEM768-X25519 test vector 3" {
452 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
453
445454 var seed: [32]u8 = undefined;
446455 var expected_ek: [1216]u8 = undefined;
447456 var randomness: [64]u8 = undefined;
......@@ -466,6 +475,8 @@ test "MLKEM768-X25519 test vector 3" {
466475}
467476
468477test "MLKEM768-X25519 test vector 4" {
478 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
479
469480 var seed: [32]u8 = undefined;
470481 var expected_ek: [1216]u8 = undefined;
471482 var randomness: [64]u8 = undefined;
......@@ -490,6 +501,8 @@ test "MLKEM768-X25519 test vector 4" {
490501}
491502
492503test "MLKEM768-X25519 test vector 5" {
504 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
505
493506 var seed: [32]u8 = undefined;
494507 var expected_ek: [1216]u8 = undefined;
495508 var randomness: [64]u8 = undefined;
......@@ -514,6 +527,8 @@ test "MLKEM768-X25519 test vector 5" {
514527}
515528
516529test "MLKEM768-X25519 test vector 6" {
530 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
531
517532 var seed: [32]u8 = undefined;
518533 var expected_ek: [1216]u8 = undefined;
519534 var randomness: [64]u8 = undefined;
......@@ -538,6 +553,8 @@ test "MLKEM768-X25519 test vector 6" {
538553}
539554
540555test "MLKEM768-X25519 test vector 7" {
556 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
557
541558 var seed: [32]u8 = undefined;
542559 var expected_ek: [1216]u8 = undefined;
543560 var randomness: [64]u8 = undefined;
......@@ -562,6 +579,8 @@ test "MLKEM768-X25519 test vector 7" {
562579}
563580
564581test "MLKEM768-X25519 test vector 8" {
582 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
583
565584 var seed: [32]u8 = undefined;
566585 var expected_ek: [1216]u8 = undefined;
567586 var randomness: [64]u8 = undefined;
......@@ -586,6 +605,8 @@ test "MLKEM768-X25519 test vector 8" {
586605}
587606
588607test "MLKEM768-X25519 test vector 9" {
608 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
609
589610 var seed: [32]u8 = undefined;
590611 var expected_ek: [1216]u8 = undefined;
591612 var randomness: [64]u8 = undefined;
......@@ -610,6 +631,8 @@ test "MLKEM768-X25519 test vector 9" {
610631}
611632
612633test "MLKEM768-P256 test vector 0" {
634 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
635
613636 var seed: [32]u8 = undefined;
614637 var expected_ek: [1249]u8 = undefined;
615638 var randomness: [160]u8 = undefined;
......@@ -634,6 +657,8 @@ test "MLKEM768-P256 test vector 0" {
634657}
635658
636659test "MLKEM768-P256 test vector 1" {
660 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
661
637662 var seed: [32]u8 = undefined;
638663 var expected_ek: [1249]u8 = undefined;
639664 var randomness: [160]u8 = undefined;
......@@ -658,6 +683,8 @@ test "MLKEM768-P256 test vector 1" {
658683}
659684
660685test "MLKEM768-P256 test vector 2" {
686 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
687
661688 var seed: [32]u8 = undefined;
662689 var expected_ek: [1249]u8 = undefined;
663690 var randomness: [160]u8 = undefined;
......@@ -682,6 +709,8 @@ test "MLKEM768-P256 test vector 2" {
682709}
683710
684711test "MLKEM768-P256 test vector 3" {
712 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
713
685714 var seed: [32]u8 = undefined;
686715 var expected_ek: [1249]u8 = undefined;
687716 var randomness: [160]u8 = undefined;
......@@ -706,6 +735,8 @@ test "MLKEM768-P256 test vector 3" {
706735}
707736
708737test "MLKEM768-P256 test vector 4" {
738 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
739
709740 var seed: [32]u8 = undefined;
710741 var expected_ek: [1249]u8 = undefined;
711742 var randomness: [160]u8 = undefined;
......@@ -730,6 +761,8 @@ test "MLKEM768-P256 test vector 4" {
730761}
731762
732763test "MLKEM768-P256 test vector 5" {
764 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
765
733766 var seed: [32]u8 = undefined;
734767 var expected_ek: [1249]u8 = undefined;
735768 var randomness: [160]u8 = undefined;
......@@ -754,6 +787,8 @@ test "MLKEM768-P256 test vector 5" {
754787}
755788
756789test "MLKEM768-P256 test vector 6" {
790 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
791
757792 var seed: [32]u8 = undefined;
758793 var expected_ek: [1249]u8 = undefined;
759794 var randomness: [160]u8 = undefined;
......@@ -778,6 +813,8 @@ test "MLKEM768-P256 test vector 6" {
778813}
779814
780815test "MLKEM768-P256 test vector 7" {
816 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
817
781818 var seed: [32]u8 = undefined;
782819 var expected_ek: [1249]u8 = undefined;
783820 var randomness: [160]u8 = undefined;
......@@ -802,6 +839,8 @@ test "MLKEM768-P256 test vector 7" {
802839}
803840
804841test "MLKEM768-P256 test vector 8" {
842 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
843
805844 var seed: [32]u8 = undefined;
806845 var expected_ek: [1249]u8 = undefined;
807846 var randomness: [160]u8 = undefined;
......@@ -826,6 +865,8 @@ test "MLKEM768-P256 test vector 8" {
826865}
827866
828867test "MLKEM768-P256 test vector 9" {
868 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
869
829870 var seed: [32]u8 = undefined;
830871 var expected_ek: [1249]u8 = undefined;
831872 var randomness: [160]u8 = undefined;
......@@ -850,6 +891,8 @@ test "MLKEM768-P256 test vector 9" {
850891}
851892
852893test "MLKEM1024-P384 test vector 0" {
894 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
895
853896 var seed: [32]u8 = undefined;
854897 var expected_ek: [1665]u8 = undefined;
855898 var randomness: [80]u8 = undefined;
......@@ -874,6 +917,8 @@ test "MLKEM1024-P384 test vector 0" {
874917}
875918
876919test "MLKEM1024-P384 test vector 1" {
920 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
921
877922 var seed: [32]u8 = undefined;
878923 var expected_ek: [1665]u8 = undefined;
879924 var randomness: [80]u8 = undefined;
......@@ -898,6 +943,8 @@ test "MLKEM1024-P384 test vector 1" {
898943}
899944
900945test "MLKEM1024-P384 test vector 2" {
946 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
947
901948 var seed: [32]u8 = undefined;
902949 var expected_ek: [1665]u8 = undefined;
903950 var randomness: [80]u8 = undefined;
......@@ -922,6 +969,8 @@ test "MLKEM1024-P384 test vector 2" {
922969}
923970
924971test "MLKEM1024-P384 test vector 3" {
972 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
973
925974 var seed: [32]u8 = undefined;
926975 var expected_ek: [1665]u8 = undefined;
927976 var randomness: [80]u8 = undefined;
......@@ -946,6 +995,8 @@ test "MLKEM1024-P384 test vector 3" {
946995}
947996
948997test "MLKEM1024-P384 test vector 4" {
998 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
999
9491000 var seed: [32]u8 = undefined;
9501001 var expected_ek: [1665]u8 = undefined;
9511002 var randomness: [80]u8 = undefined;
......@@ -970,6 +1021,8 @@ test "MLKEM1024-P384 test vector 4" {
9701021}
9711022
9721023test "MLKEM1024-P384 test vector 5" {
1024 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
1025
9731026 var seed: [32]u8 = undefined;
9741027 var expected_ek: [1665]u8 = undefined;
9751028 var randomness: [80]u8 = undefined;
......@@ -994,6 +1047,8 @@ test "MLKEM1024-P384 test vector 5" {
9941047}
9951048
9961049test "MLKEM1024-P384 test vector 6" {
1050 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
1051
9971052 var seed: [32]u8 = undefined;
9981053 var expected_ek: [1665]u8 = undefined;
9991054 var randomness: [80]u8 = undefined;
......@@ -1018,6 +1073,8 @@ test "MLKEM1024-P384 test vector 6" {
10181073}
10191074
10201075test "MLKEM1024-P384 test vector 7" {
1076 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
1077
10211078 var seed: [32]u8 = undefined;
10221079 var expected_ek: [1665]u8 = undefined;
10231080 var randomness: [80]u8 = undefined;
......@@ -1042,6 +1099,8 @@ test "MLKEM1024-P384 test vector 7" {
10421099}
10431100
10441101test "MLKEM1024-P384 test vector 8" {
1102 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
1103
10451104 var seed: [32]u8 = undefined;
10461105 var expected_ek: [1665]u8 = undefined;
10471106 var randomness: [80]u8 = undefined;
......@@ -1066,6 +1125,8 @@ test "MLKEM1024-P384 test vector 8" {
10661125}
10671126
10681127test "MLKEM1024-P384 test vector 9" {
1128 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
1129
10691130 var seed: [32]u8 = undefined;
10701131 var expected_ek: [1665]u8 = undefined;
10711132 var randomness: [80]u8 = undefined;
lib/std/crypto/ml_kem.zig+8
......@@ -1522,6 +1522,8 @@ test "Compression" {
15221522}
15231523
15241524test "noise" {
1525 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
1526
15251527 var seed: [32]u8 = undefined;
15261528 for (&seed, 0..) |*s, i| {
15271529 s.* = @as(u8, @intCast(i));
......@@ -1655,14 +1657,20 @@ test "Test happy flow" {
16551657// Code to test NIST Known Answer Tests (KAT), see PQCgenKAT.c.
16561658
16571659test "NIST KAT test d00.Kyber512" {
1660 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
1661
16581662 try testNistKat(d00.Kyber512, "e9c2bd37133fcb40772f81559f14b1f58dccd1c816701be9ba6214d43baf4547");
16591663}
16601664
16611665test "NIST KAT test d00.Kyber1024" {
1666 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
1667
16621668 try testNistKat(d00.Kyber1024, "89248f2f33f7f4f7051729111f3049c409a933ec904aedadf035f30fa5646cd5");
16631669}
16641670
16651671test "NIST KAT test d00.Kyber768" {
1672 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
1673
16661674 try testNistKat(d00.Kyber768, "a1e122cad3c24bc51622e4c242d8b8acbcd3f618fee4220400605ca8f9ea02c2");
16671675}
16681676