| ... | ... | @@ -13,6 +13,7 @@ |
| 13 | 13 | //! The combiner uses the C2PRI construction to derive the final shared secret |
| 14 | 14 | //! from the component shared secrets, ciphertext, and public key. |
| 15 | 15 | |
| 16 | const builtin = @import("builtin"); |
| 16 | 17 | const std = @import("std"); |
| 17 | 18 | const crypto = std.crypto; |
| 18 | 19 | const fmt = std.fmt; |
| ... | ... | @@ -370,6 +371,8 @@ test "MLKEM768-X25519 basic round trip" { |
| 370 | 371 | } |
| 371 | 372 | |
| 372 | 373 | test "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 | |
| 373 | 376 | var seed: [32]u8 = undefined; |
| 374 | 377 | var expected_ek: [1216]u8 = undefined; |
| 375 | 378 | var randomness: [64]u8 = undefined; |
| ... | ... | @@ -394,6 +397,8 @@ test "MLKEM768-X25519 test vector 0" { |
| 394 | 397 | } |
| 395 | 398 | |
| 396 | 399 | test "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 | |
| 397 | 402 | var seed: [32]u8 = undefined; |
| 398 | 403 | var expected_ek: [1216]u8 = undefined; |
| 399 | 404 | var randomness: [64]u8 = undefined; |
| ... | ... | @@ -418,6 +423,8 @@ test "MLKEM768-X25519 test vector 1" { |
| 418 | 423 | } |
| 419 | 424 | |
| 420 | 425 | test "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 | |
| 421 | 428 | var seed: [32]u8 = undefined; |
| 422 | 429 | var expected_ek: [1216]u8 = undefined; |
| 423 | 430 | var randomness: [64]u8 = undefined; |
| ... | ... | @@ -442,6 +449,8 @@ test "MLKEM768-X25519 test vector 2" { |
| 442 | 449 | } |
| 443 | 450 | |
| 444 | 451 | test "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 | |
| 445 | 454 | var seed: [32]u8 = undefined; |
| 446 | 455 | var expected_ek: [1216]u8 = undefined; |
| 447 | 456 | var randomness: [64]u8 = undefined; |
| ... | ... | @@ -466,6 +475,8 @@ test "MLKEM768-X25519 test vector 3" { |
| 466 | 475 | } |
| 467 | 476 | |
| 468 | 477 | test "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 | |
| 469 | 480 | var seed: [32]u8 = undefined; |
| 470 | 481 | var expected_ek: [1216]u8 = undefined; |
| 471 | 482 | var randomness: [64]u8 = undefined; |
| ... | ... | @@ -490,6 +501,8 @@ test "MLKEM768-X25519 test vector 4" { |
| 490 | 501 | } |
| 491 | 502 | |
| 492 | 503 | test "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 | |
| 493 | 506 | var seed: [32]u8 = undefined; |
| 494 | 507 | var expected_ek: [1216]u8 = undefined; |
| 495 | 508 | var randomness: [64]u8 = undefined; |
| ... | ... | @@ -514,6 +527,8 @@ test "MLKEM768-X25519 test vector 5" { |
| 514 | 527 | } |
| 515 | 528 | |
| 516 | 529 | test "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 | |
| 517 | 532 | var seed: [32]u8 = undefined; |
| 518 | 533 | var expected_ek: [1216]u8 = undefined; |
| 519 | 534 | var randomness: [64]u8 = undefined; |
| ... | ... | @@ -538,6 +553,8 @@ test "MLKEM768-X25519 test vector 6" { |
| 538 | 553 | } |
| 539 | 554 | |
| 540 | 555 | test "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 | |
| 541 | 558 | var seed: [32]u8 = undefined; |
| 542 | 559 | var expected_ek: [1216]u8 = undefined; |
| 543 | 560 | var randomness: [64]u8 = undefined; |
| ... | ... | @@ -562,6 +579,8 @@ test "MLKEM768-X25519 test vector 7" { |
| 562 | 579 | } |
| 563 | 580 | |
| 564 | 581 | test "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 | |
| 565 | 584 | var seed: [32]u8 = undefined; |
| 566 | 585 | var expected_ek: [1216]u8 = undefined; |
| 567 | 586 | var randomness: [64]u8 = undefined; |
| ... | ... | @@ -586,6 +605,8 @@ test "MLKEM768-X25519 test vector 8" { |
| 586 | 605 | } |
| 587 | 606 | |
| 588 | 607 | test "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 | |
| 589 | 610 | var seed: [32]u8 = undefined; |
| 590 | 611 | var expected_ek: [1216]u8 = undefined; |
| 591 | 612 | var randomness: [64]u8 = undefined; |
| ... | ... | @@ -610,6 +631,8 @@ test "MLKEM768-X25519 test vector 9" { |
| 610 | 631 | } |
| 611 | 632 | |
| 612 | 633 | test "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 | |
| 613 | 636 | var seed: [32]u8 = undefined; |
| 614 | 637 | var expected_ek: [1249]u8 = undefined; |
| 615 | 638 | var randomness: [160]u8 = undefined; |
| ... | ... | @@ -634,6 +657,8 @@ test "MLKEM768-P256 test vector 0" { |
| 634 | 657 | } |
| 635 | 658 | |
| 636 | 659 | test "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 | |
| 637 | 662 | var seed: [32]u8 = undefined; |
| 638 | 663 | var expected_ek: [1249]u8 = undefined; |
| 639 | 664 | var randomness: [160]u8 = undefined; |
| ... | ... | @@ -658,6 +683,8 @@ test "MLKEM768-P256 test vector 1" { |
| 658 | 683 | } |
| 659 | 684 | |
| 660 | 685 | test "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 | |
| 661 | 688 | var seed: [32]u8 = undefined; |
| 662 | 689 | var expected_ek: [1249]u8 = undefined; |
| 663 | 690 | var randomness: [160]u8 = undefined; |
| ... | ... | @@ -682,6 +709,8 @@ test "MLKEM768-P256 test vector 2" { |
| 682 | 709 | } |
| 683 | 710 | |
| 684 | 711 | test "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 | |
| 685 | 714 | var seed: [32]u8 = undefined; |
| 686 | 715 | var expected_ek: [1249]u8 = undefined; |
| 687 | 716 | var randomness: [160]u8 = undefined; |
| ... | ... | @@ -706,6 +735,8 @@ test "MLKEM768-P256 test vector 3" { |
| 706 | 735 | } |
| 707 | 736 | |
| 708 | 737 | test "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 | |
| 709 | 740 | var seed: [32]u8 = undefined; |
| 710 | 741 | var expected_ek: [1249]u8 = undefined; |
| 711 | 742 | var randomness: [160]u8 = undefined; |
| ... | ... | @@ -730,6 +761,8 @@ test "MLKEM768-P256 test vector 4" { |
| 730 | 761 | } |
| 731 | 762 | |
| 732 | 763 | test "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 | |
| 733 | 766 | var seed: [32]u8 = undefined; |
| 734 | 767 | var expected_ek: [1249]u8 = undefined; |
| 735 | 768 | var randomness: [160]u8 = undefined; |
| ... | ... | @@ -754,6 +787,8 @@ test "MLKEM768-P256 test vector 5" { |
| 754 | 787 | } |
| 755 | 788 | |
| 756 | 789 | test "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 | |
| 757 | 792 | var seed: [32]u8 = undefined; |
| 758 | 793 | var expected_ek: [1249]u8 = undefined; |
| 759 | 794 | var randomness: [160]u8 = undefined; |
| ... | ... | @@ -778,6 +813,8 @@ test "MLKEM768-P256 test vector 6" { |
| 778 | 813 | } |
| 779 | 814 | |
| 780 | 815 | test "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 | |
| 781 | 818 | var seed: [32]u8 = undefined; |
| 782 | 819 | var expected_ek: [1249]u8 = undefined; |
| 783 | 820 | var randomness: [160]u8 = undefined; |
| ... | ... | @@ -802,6 +839,8 @@ test "MLKEM768-P256 test vector 7" { |
| 802 | 839 | } |
| 803 | 840 | |
| 804 | 841 | test "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 | |
| 805 | 844 | var seed: [32]u8 = undefined; |
| 806 | 845 | var expected_ek: [1249]u8 = undefined; |
| 807 | 846 | var randomness: [160]u8 = undefined; |
| ... | ... | @@ -826,6 +865,8 @@ test "MLKEM768-P256 test vector 8" { |
| 826 | 865 | } |
| 827 | 866 | |
| 828 | 867 | test "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 | |
| 829 | 870 | var seed: [32]u8 = undefined; |
| 830 | 871 | var expected_ek: [1249]u8 = undefined; |
| 831 | 872 | var randomness: [160]u8 = undefined; |
| ... | ... | @@ -850,6 +891,8 @@ test "MLKEM768-P256 test vector 9" { |
| 850 | 891 | } |
| 851 | 892 | |
| 852 | 893 | test "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 | |
| 853 | 896 | var seed: [32]u8 = undefined; |
| 854 | 897 | var expected_ek: [1665]u8 = undefined; |
| 855 | 898 | var randomness: [80]u8 = undefined; |
| ... | ... | @@ -874,6 +917,8 @@ test "MLKEM1024-P384 test vector 0" { |
| 874 | 917 | } |
| 875 | 918 | |
| 876 | 919 | test "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 | |
| 877 | 922 | var seed: [32]u8 = undefined; |
| 878 | 923 | var expected_ek: [1665]u8 = undefined; |
| 879 | 924 | var randomness: [80]u8 = undefined; |
| ... | ... | @@ -898,6 +943,8 @@ test "MLKEM1024-P384 test vector 1" { |
| 898 | 943 | } |
| 899 | 944 | |
| 900 | 945 | test "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 | |
| 901 | 948 | var seed: [32]u8 = undefined; |
| 902 | 949 | var expected_ek: [1665]u8 = undefined; |
| 903 | 950 | var randomness: [80]u8 = undefined; |
| ... | ... | @@ -922,6 +969,8 @@ test "MLKEM1024-P384 test vector 2" { |
| 922 | 969 | } |
| 923 | 970 | |
| 924 | 971 | test "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 | |
| 925 | 974 | var seed: [32]u8 = undefined; |
| 926 | 975 | var expected_ek: [1665]u8 = undefined; |
| 927 | 976 | var randomness: [80]u8 = undefined; |
| ... | ... | @@ -946,6 +995,8 @@ test "MLKEM1024-P384 test vector 3" { |
| 946 | 995 | } |
| 947 | 996 | |
| 948 | 997 | test "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 | |
| 949 | 1000 | var seed: [32]u8 = undefined; |
| 950 | 1001 | var expected_ek: [1665]u8 = undefined; |
| 951 | 1002 | var randomness: [80]u8 = undefined; |
| ... | ... | @@ -970,6 +1021,8 @@ test "MLKEM1024-P384 test vector 4" { |
| 970 | 1021 | } |
| 971 | 1022 | |
| 972 | 1023 | test "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 | |
| 973 | 1026 | var seed: [32]u8 = undefined; |
| 974 | 1027 | var expected_ek: [1665]u8 = undefined; |
| 975 | 1028 | var randomness: [80]u8 = undefined; |
| ... | ... | @@ -994,6 +1047,8 @@ test "MLKEM1024-P384 test vector 5" { |
| 994 | 1047 | } |
| 995 | 1048 | |
| 996 | 1049 | test "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 | |
| 997 | 1052 | var seed: [32]u8 = undefined; |
| 998 | 1053 | var expected_ek: [1665]u8 = undefined; |
| 999 | 1054 | var randomness: [80]u8 = undefined; |
| ... | ... | @@ -1018,6 +1073,8 @@ test "MLKEM1024-P384 test vector 6" { |
| 1018 | 1073 | } |
| 1019 | 1074 | |
| 1020 | 1075 | test "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 | |
| 1021 | 1078 | var seed: [32]u8 = undefined; |
| 1022 | 1079 | var expected_ek: [1665]u8 = undefined; |
| 1023 | 1080 | var randomness: [80]u8 = undefined; |
| ... | ... | @@ -1042,6 +1099,8 @@ test "MLKEM1024-P384 test vector 7" { |
| 1042 | 1099 | } |
| 1043 | 1100 | |
| 1044 | 1101 | test "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 | |
| 1045 | 1104 | var seed: [32]u8 = undefined; |
| 1046 | 1105 | var expected_ek: [1665]u8 = undefined; |
| 1047 | 1106 | var randomness: [80]u8 = undefined; |
| ... | ... | @@ -1066,6 +1125,8 @@ test "MLKEM1024-P384 test vector 8" { |
| 1066 | 1125 | } |
| 1067 | 1126 | |
| 1068 | 1127 | test "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 | |
| 1069 | 1130 | var seed: [32]u8 = undefined; |
| 1070 | 1131 | var expected_ek: [1665]u8 = undefined; |
| 1071 | 1132 | var randomness: [80]u8 = undefined; |