mldsa_gh 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +88 -0
  4. data/ext/mldsa_gh_native/extconf.rb +14 -0
  5. data/ext/mldsa_gh_native/mldsa_gh_native.c +222 -0
  6. data/ext/mldsa_gh_native/mldsa_gh_native_all.c +24 -0
  7. data/ext/mldsa_gh_native/mldsa_gh_native_all.h +26 -0
  8. data/ext/mldsa_gh_native/vendor/mldsa-native/BUILDING.md +108 -0
  9. data/ext/mldsa_gh_native/vendor/mldsa-native/LICENSE +305 -0
  10. data/ext/mldsa_gh_native/vendor/mldsa-native/README.md +247 -0
  11. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/README.md +23 -0
  12. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/mldsa_native.c +803 -0
  13. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/mldsa_native.h +956 -0
  14. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/mldsa_native_asm.S +830 -0
  15. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/mldsa_native_config.h +855 -0
  16. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/cbmc.h +233 -0
  17. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/common.h +301 -0
  18. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/context.h +152 -0
  19. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/ct.c +21 -0
  20. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/ct.h +373 -0
  21. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/debug.c +75 -0
  22. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/debug.h +125 -0
  23. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/fips202.c +270 -0
  24. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/fips202.h +224 -0
  25. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/fips202x4.c +187 -0
  26. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/fips202x4.h +125 -0
  27. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/keccakf1600.c +510 -0
  28. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/keccakf1600.h +110 -0
  29. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/auto.h +85 -0
  30. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/fips202_native_aarch64.h +69 -0
  31. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_aarch64_asm.S +378 -0
  32. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_aarch64_asm.S +207 -0
  33. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_aarch64_asm.S +262 -0
  34. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm.S +1080 -0
  35. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm.S +990 -0
  36. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccakf1600_round_constants.c +47 -0
  37. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x1_scalar.h +27 -0
  38. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x1_v84a.h +36 -0
  39. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x2_v84a.h +40 -0
  40. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x4_v8a_scalar.h +32 -0
  41. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x4_v8a_v84a_scalar.h +37 -0
  42. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/api.h +129 -0
  43. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/README.md +10 -0
  44. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/mve.h +67 -0
  45. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/fips202_native_armv81m.h +37 -0
  46. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S +717 -0
  47. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.c +42 -0
  48. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_state_extract_bytes_mve.S +334 -0
  49. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_state_xor_bytes_mve.S +355 -0
  50. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccakf1600_round_constants.c +53 -0
  51. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/auto.h +35 -0
  52. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/keccak_f1600_x4_avx2.h +34 -0
  53. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/fips202_native_x86_64.h +45 -0
  54. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/keccak_f1600_x4_avx2_asm.S +488 -0
  55. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/keccakf1600_constants.c +52 -0
  56. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/meta.h +314 -0
  57. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/aarch64_zetas.c +248 -0
  58. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/arith_native_aarch64.h +367 -0
  59. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_intt_aarch64_asm.S +786 -0
  60. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_ntt_aarch64_asm.S +686 -0
  61. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_pointwise_montgomery_aarch64_asm.S +106 -0
  62. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_poly_caddq_aarch64_asm.S +69 -0
  63. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_poly_chknorm_aarch64_asm.S +76 -0
  64. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_poly_decompose_32_aarch64_asm.S +108 -0
  65. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_poly_decompose_88_aarch64_asm.S +108 -0
  66. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_poly_use_hint_32_aarch64_asm.S +125 -0
  67. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_poly_use_hint_88_aarch64_asm.S +133 -0
  68. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_polyvecl_pointwise_acc_montgomery_l4_aarch64_asm.S +157 -0
  69. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_polyvecl_pointwise_acc_montgomery_l5_aarch64_asm.S +173 -0
  70. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_polyvecl_pointwise_acc_montgomery_l7_aarch64_asm.S +205 -0
  71. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_polyz_unpack_17_aarch64_asm.S +103 -0
  72. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_polyz_unpack_19_aarch64_asm.S +100 -0
  73. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_rej_uniform_aarch64_asm.S +222 -0
  74. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_rej_uniform_eta2_aarch64_asm.S +170 -0
  75. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_rej_uniform_eta4_aarch64_asm.S +163 -0
  76. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_table.c +52 -0
  77. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta_table.c +547 -0
  78. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_table.c +63 -0
  79. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/api.h +617 -0
  80. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/meta.h +24 -0
  81. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/meta.h +323 -0
  82. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/arith_native_x86_64.h +330 -0
  83. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/consts.c +157 -0
  84. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/consts.h +27 -0
  85. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_intt_avx2_asm.S +2333 -0
  86. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_ntt_avx2_asm.S +2405 -0
  87. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_nttunpack_avx2_asm.S +254 -0
  88. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_pointwise_acc_l4_avx2_asm.S +173 -0
  89. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_pointwise_acc_l5_avx2_asm.S +189 -0
  90. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_pointwise_acc_l7_avx2_asm.S +221 -0
  91. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_pointwise_avx2_asm.S +158 -0
  92. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_poly_caddq_avx2_asm.S +199 -0
  93. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_poly_chknorm_avx2_asm.S +176 -0
  94. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_poly_decompose_32_avx2_asm.S +490 -0
  95. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_poly_decompose_88_avx2_asm.S +489 -0
  96. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_poly_use_hint_32_avx2_asm.S +123 -0
  97. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_poly_use_hint_88_avx2_asm.S +125 -0
  98. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_polyz_unpack_17_avx2_asm.S +355 -0
  99. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_polyz_unpack_19_avx2_asm.S +355 -0
  100. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_rej_uniform_avx2_asm.S +132 -0
  101. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_rej_uniform_eta2_avx2_asm.S +205 -0
  102. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_rej_uniform_eta4_avx2_asm.S +176 -0
  103. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_table.c +161 -0
  104. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/packing.c +213 -0
  105. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/packing.h +277 -0
  106. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/params.h +153 -0
  107. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/poly.c +1066 -0
  108. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/poly.h +464 -0
  109. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/poly_kl.c +910 -0
  110. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/poly_kl.h +367 -0
  111. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/polyvec.c +509 -0
  112. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/polyvec.h +435 -0
  113. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/polyvec_lazy.c +311 -0
  114. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/polyvec_lazy.h +652 -0
  115. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/randombytes.h +26 -0
  116. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/reduce.h +144 -0
  117. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/rounding.h +265 -0
  118. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/sign.c +1720 -0
  119. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/sign.h +850 -0
  120. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/symmetric.h +68 -0
  121. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/sys.h +327 -0
  122. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/zetas.inc +55 -0
  123. data/lib/mldsa/parameter_set.rb +82 -0
  124. data/lib/mldsa/signing_key.rb +147 -0
  125. data/lib/mldsa/verify_key.rb +72 -0
  126. data/lib/mldsa/version.rb +7 -0
  127. data/lib/mldsa_gh.rb +93 -0
  128. metadata +225 -0
@@ -0,0 +1,830 @@
1
+ /*
2
+ * Copyright (c) The mldsa-native project authors
3
+ * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT
4
+ */
5
+
6
+ /*
7
+ * WARNING: This file is auto-generated from scripts/autogen
8
+ * in the mldsa-native repository.
9
+ * Do not modify it directly.
10
+ */
11
+
12
+ /******************************************************************************
13
+ *
14
+ * Single assembly unit for fixed-level build of mldsa-native
15
+ *
16
+ * This assembly unit bundles together all assembly files for a build
17
+ * of mldsa-native for a fixed security level (MLDSA-44/65/87).
18
+ *
19
+ * # Multi-level build
20
+ *
21
+ * If you want an SCU build of mldsa-native with support for multiple security
22
+ * levels, you should include this file once with
23
+ * MLD_CONFIG_MULTILEVEL_WITH_SHARED set.
24
+ *
25
+ * (You could also follow the same pattern as for mldsa_native.c
26
+ * and include it for every level, setting MLD_CONFIG_MULTILEVEL_NO_SHARED
27
+ * for all but one. For builds with MLD_CONFIG_MULTILEVEL_NO_SHARED, this
28
+ * file will then be ignored.)
29
+ *
30
+ * # Configuration
31
+ *
32
+ * The following options from the mldsa-native configuration are relevant:
33
+ *
34
+ * - MLD_CONFIG_FIPS202_CUSTOM_HEADER
35
+ * Set this option if you use a custom FIPS202 implementation.
36
+ *
37
+ * - MLD_CONFIG_USE_NATIVE_BACKEND_ARITH
38
+ * Set this option if you want to include the native arithmetic backends
39
+ * in your build.
40
+ *
41
+ * - MLD_CONFIG_USE_NATIVE_BACKEND_FIPS202
42
+ * Set this option if you want to include the native FIPS202 backends
43
+ * in your build.
44
+ *
45
+ * - MLD_CONFIG_MONOBUILD_KEEP_SHARED_HEADERS
46
+ * Set this option if you want to keep the directives defined in
47
+ * level-independent headers. This is needed for a multi-level build.
48
+ */
49
+
50
+ /* If parts of the mldsa-native source tree are not used,
51
+ * consider reducing this header via `unifdef`.
52
+ *
53
+ * Example:
54
+ * ```bash
55
+ * unifdef -UMLD_CONFIG_USE_NATIVE_BACKEND_ARITH mldsa_native_asm.S
56
+ * ```
57
+ */
58
+
59
+ #include "src/common.h"
60
+
61
+ #if defined(MLD_CONFIG_USE_NATIVE_BACKEND_ARITH)
62
+ #if defined(MLD_SYS_AARCH64)
63
+ #include "src/native/aarch64/src/mldsa_intt_aarch64_asm.S"
64
+ #include "src/native/aarch64/src/mldsa_ntt_aarch64_asm.S"
65
+ #include "src/native/aarch64/src/mldsa_pointwise_montgomery_aarch64_asm.S"
66
+ #include "src/native/aarch64/src/mldsa_poly_caddq_aarch64_asm.S"
67
+ #include "src/native/aarch64/src/mldsa_poly_chknorm_aarch64_asm.S"
68
+ #include "src/native/aarch64/src/mldsa_poly_decompose_32_aarch64_asm.S"
69
+ #include "src/native/aarch64/src/mldsa_poly_decompose_88_aarch64_asm.S"
70
+ #include "src/native/aarch64/src/mldsa_poly_use_hint_32_aarch64_asm.S"
71
+ #include "src/native/aarch64/src/mldsa_poly_use_hint_88_aarch64_asm.S"
72
+ #include "src/native/aarch64/src/mldsa_polyvecl_pointwise_acc_montgomery_l4_aarch64_asm.S"
73
+ #include "src/native/aarch64/src/mldsa_polyvecl_pointwise_acc_montgomery_l5_aarch64_asm.S"
74
+ #include "src/native/aarch64/src/mldsa_polyvecl_pointwise_acc_montgomery_l7_aarch64_asm.S"
75
+ #include "src/native/aarch64/src/mldsa_polyz_unpack_17_aarch64_asm.S"
76
+ #include "src/native/aarch64/src/mldsa_polyz_unpack_19_aarch64_asm.S"
77
+ #include "src/native/aarch64/src/mldsa_rej_uniform_aarch64_asm.S"
78
+ #include "src/native/aarch64/src/mldsa_rej_uniform_eta2_aarch64_asm.S"
79
+ #include "src/native/aarch64/src/mldsa_rej_uniform_eta4_aarch64_asm.S"
80
+ #endif /* MLD_SYS_AARCH64 */
81
+ #if defined(MLD_SYS_X86_64)
82
+ #include "src/native/x86_64/src/mldsa_intt_avx2_asm.S"
83
+ #include "src/native/x86_64/src/mldsa_ntt_avx2_asm.S"
84
+ #include "src/native/x86_64/src/mldsa_nttunpack_avx2_asm.S"
85
+ #include "src/native/x86_64/src/mldsa_pointwise_acc_l4_avx2_asm.S"
86
+ #include "src/native/x86_64/src/mldsa_pointwise_acc_l5_avx2_asm.S"
87
+ #include "src/native/x86_64/src/mldsa_pointwise_acc_l7_avx2_asm.S"
88
+ #include "src/native/x86_64/src/mldsa_pointwise_avx2_asm.S"
89
+ #include "src/native/x86_64/src/mldsa_poly_caddq_avx2_asm.S"
90
+ #include "src/native/x86_64/src/mldsa_poly_chknorm_avx2_asm.S"
91
+ #include "src/native/x86_64/src/mldsa_poly_decompose_32_avx2_asm.S"
92
+ #include "src/native/x86_64/src/mldsa_poly_decompose_88_avx2_asm.S"
93
+ #include "src/native/x86_64/src/mldsa_poly_use_hint_32_avx2_asm.S"
94
+ #include "src/native/x86_64/src/mldsa_poly_use_hint_88_avx2_asm.S"
95
+ #include "src/native/x86_64/src/mldsa_polyz_unpack_17_avx2_asm.S"
96
+ #include "src/native/x86_64/src/mldsa_polyz_unpack_19_avx2_asm.S"
97
+ #include "src/native/x86_64/src/mldsa_rej_uniform_avx2_asm.S"
98
+ #include "src/native/x86_64/src/mldsa_rej_uniform_eta2_avx2_asm.S"
99
+ #include "src/native/x86_64/src/mldsa_rej_uniform_eta4_avx2_asm.S"
100
+ #endif /* MLD_SYS_X86_64 */
101
+ #endif /* MLD_CONFIG_USE_NATIVE_BACKEND_ARITH */
102
+
103
+ #if defined(MLD_CONFIG_USE_NATIVE_BACKEND_FIPS202)
104
+ #if defined(MLD_SYS_AARCH64)
105
+ #include "src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_aarch64_asm.S"
106
+ #include "src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_aarch64_asm.S"
107
+ #include "src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_aarch64_asm.S"
108
+ #include "src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm.S"
109
+ #include "src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm.S"
110
+ #endif /* MLD_SYS_AARCH64 */
111
+ #if defined(MLD_SYS_X86_64)
112
+ #include "src/fips202/native/x86_64/src/keccak_f1600_x4_avx2_asm.S"
113
+ #endif
114
+ #if defined(MLD_SYS_ARMV81M_MVE)
115
+ #include "src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S"
116
+ #include "src/fips202/native/armv81m/src/keccak_f1600_x4_state_extract_bytes_mve.S"
117
+ #include "src/fips202/native/armv81m/src/keccak_f1600_x4_state_xor_bytes_mve.S"
118
+ #endif
119
+ #endif /* MLD_CONFIG_USE_NATIVE_BACKEND_FIPS202 */
120
+
121
+
122
+ /* Macro #undef's
123
+ *
124
+ * The following undefines macros from headers
125
+ * included by the source files imported above.
126
+ *
127
+ * This is to allow building and linking multiple builds
128
+ * of mldsa-native for varying parameter sets through concatenation
129
+ * of this file, as if the files had been compiled separately.
130
+ * If this is not relevant to you, you may remove the following.
131
+ *
132
+ * NOTE: This is not needed for the assembly SCU since, at present,
133
+ * there is no need to include it multiple times.
134
+ * We keep it for uniformity with mldsa_native.c only.
135
+ *
136
+ * NOTE: To avoid having to distinguish between which headers are included
137
+ * from the assembly files, we #undef the same set of directives
138
+ * as in mldsa_native.c
139
+ */
140
+
141
+ /*
142
+ * Undefine macros from MLD_CONFIG_PARAMETER_SET-specific files
143
+ */
144
+ /* mldsa/mldsa_native.h */
145
+ #undef MLDSA44_BYTES
146
+ #undef MLDSA44_CRHBYTES
147
+ #undef MLDSA44_PUBLICKEYBYTES
148
+ #undef MLDSA44_RNDBYTES
149
+ #undef MLDSA44_SECRETKEYBYTES
150
+ #undef MLDSA44_SEEDBYTES
151
+ #undef MLDSA44_TRBYTES
152
+ #undef MLDSA65_BYTES
153
+ #undef MLDSA65_CRHBYTES
154
+ #undef MLDSA65_PUBLICKEYBYTES
155
+ #undef MLDSA65_RNDBYTES
156
+ #undef MLDSA65_SECRETKEYBYTES
157
+ #undef MLDSA65_SEEDBYTES
158
+ #undef MLDSA65_TRBYTES
159
+ #undef MLDSA87_BYTES
160
+ #undef MLDSA87_CRHBYTES
161
+ #undef MLDSA87_PUBLICKEYBYTES
162
+ #undef MLDSA87_RNDBYTES
163
+ #undef MLDSA87_SECRETKEYBYTES
164
+ #undef MLDSA87_SEEDBYTES
165
+ #undef MLDSA87_TRBYTES
166
+ #undef MLDSA_BYTES
167
+ #undef MLDSA_BYTES_
168
+ #undef MLDSA_CRHBYTES
169
+ #undef MLDSA_PUBLICKEYBYTES
170
+ #undef MLDSA_PUBLICKEYBYTES_
171
+ #undef MLDSA_RNDBYTES
172
+ #undef MLDSA_SECRETKEYBYTES
173
+ #undef MLDSA_SECRETKEYBYTES_
174
+ #undef MLDSA_SEEDBYTES
175
+ #undef MLDSA_TRBYTES
176
+ #undef MLD_API_CONCAT
177
+ #undef MLD_API_CONCAT_
178
+ #undef MLD_API_CONCAT_UNDERSCORE
179
+ #undef MLD_API_MUST_CHECK_RETURN_VALUE
180
+ #undef MLD_API_NAMESPACE
181
+ #undef MLD_API_NAMESPACE_PREFIX
182
+ #undef MLD_API_QUALIFIER
183
+ #undef MLD_DOMAIN_SEPARATION_MAX_BYTES
184
+ #undef MLD_ERR_FAIL
185
+ #undef MLD_ERR_INVALID_ARG
186
+ #undef MLD_ERR_INVALID_KEY
187
+ #undef MLD_ERR_INVALID_SIGNATURE
188
+ #undef MLD_ERR_OUT_OF_MEMORY
189
+ #undef MLD_ERR_PCT_FAIL
190
+ #undef MLD_ERR_RNG_FAIL
191
+ #undef MLD_ERR_SIGNING_PAUSED
192
+ #undef MLD_ERR_SIGN_ATTEMPTS_EXHAUSTED
193
+ #undef MLD_H
194
+ #undef MLD_MAX3_
195
+ #undef MLD_MAX4_
196
+ #undef MLD_PREHASH_NONE
197
+ #undef MLD_PREHASH_SHA2_224
198
+ #undef MLD_PREHASH_SHA2_256
199
+ #undef MLD_PREHASH_SHA2_384
200
+ #undef MLD_PREHASH_SHA2_512
201
+ #undef MLD_PREHASH_SHA2_512_224
202
+ #undef MLD_PREHASH_SHA2_512_256
203
+ #undef MLD_PREHASH_SHA3_224
204
+ #undef MLD_PREHASH_SHA3_256
205
+ #undef MLD_PREHASH_SHA3_384
206
+ #undef MLD_PREHASH_SHA3_512
207
+ #undef MLD_PREHASH_SHAKE_128
208
+ #undef MLD_PREHASH_SHAKE_256
209
+ #undef MLD_TOTAL_ALLOC_44
210
+ #undef MLD_TOTAL_ALLOC_44_KEYPAIR
211
+ #undef MLD_TOTAL_ALLOC_44_KEYPAIR_NO_PCT
212
+ #undef MLD_TOTAL_ALLOC_44_KEYPAIR_PCT
213
+ #undef MLD_TOTAL_ALLOC_44_PK_FROM_SK
214
+ #undef MLD_TOTAL_ALLOC_44_SIGN
215
+ #undef MLD_TOTAL_ALLOC_44_VERIFY
216
+ #undef MLD_TOTAL_ALLOC_65
217
+ #undef MLD_TOTAL_ALLOC_65_KEYPAIR
218
+ #undef MLD_TOTAL_ALLOC_65_KEYPAIR_NO_PCT
219
+ #undef MLD_TOTAL_ALLOC_65_KEYPAIR_PCT
220
+ #undef MLD_TOTAL_ALLOC_65_PK_FROM_SK
221
+ #undef MLD_TOTAL_ALLOC_65_SIGN
222
+ #undef MLD_TOTAL_ALLOC_65_VERIFY
223
+ #undef MLD_TOTAL_ALLOC_87
224
+ #undef MLD_TOTAL_ALLOC_87_KEYPAIR
225
+ #undef MLD_TOTAL_ALLOC_87_KEYPAIR_NO_PCT
226
+ #undef MLD_TOTAL_ALLOC_87_KEYPAIR_PCT
227
+ #undef MLD_TOTAL_ALLOC_87_PK_FROM_SK
228
+ #undef MLD_TOTAL_ALLOC_87_SIGN
229
+ #undef MLD_TOTAL_ALLOC_87_VERIFY
230
+ /* mldsa/src/common.h */
231
+ #undef MLD_ADD_PARAM_SET
232
+ #undef MLD_ALLOC
233
+ #undef MLD_APPLY
234
+ #undef MLD_ASM_FN_SIZE
235
+ #undef MLD_ASM_FN_SYMBOL
236
+ #undef MLD_ASM_NAMESPACE
237
+ #undef MLD_BUILD_INTERNAL
238
+ #undef MLD_COMMON_H
239
+ #undef MLD_CONCAT
240
+ #undef MLD_CONCAT_
241
+ #undef MLD_EMPTY_CU
242
+ #undef MLD_ERR_FAIL
243
+ #undef MLD_ERR_INVALID_ARG
244
+ #undef MLD_ERR_INVALID_KEY
245
+ #undef MLD_ERR_INVALID_SIGNATURE
246
+ #undef MLD_ERR_OUT_OF_MEMORY
247
+ #undef MLD_ERR_PCT_FAIL
248
+ #undef MLD_ERR_RNG_FAIL
249
+ #undef MLD_ERR_SIGNING_PAUSED
250
+ #undef MLD_ERR_SIGN_ATTEMPTS_EXHAUSTED
251
+ #undef MLD_EXTERNAL_API
252
+ #undef MLD_FIPS202X4_HEADER_FILE
253
+ #undef MLD_FIPS202_HEADER_FILE
254
+ #undef MLD_FREE
255
+ #undef MLD_INTERNAL_API
256
+ #undef MLD_INTERNAL_DATA_DECLARATION
257
+ #undef MLD_INTERNAL_DATA_DEFINITION
258
+ #undef MLD_MULTILEVEL_BUILD
259
+ #undef MLD_NAMESPACE
260
+ #undef MLD_NAMESPACE_KL
261
+ #undef MLD_NAMESPACE_PREFIX
262
+ #undef MLD_NAMESPACE_PREFIX_KL
263
+ #undef mld_memcpy
264
+ #undef mld_memset
265
+ /* mldsa/src/packing.h */
266
+ #undef MLD_PACKING_H
267
+ #undef mld_pack_sig_c
268
+ #undef mld_pack_sig_h
269
+ #undef mld_pack_sig_z
270
+ #undef mld_pack_sk_rho_key_tr_s2
271
+ #undef mld_pack_sk_s1
272
+ #undef mld_sig_unpack_hints
273
+ #undef mld_unpack_pk_t1
274
+ #undef mld_unpack_sk
275
+ /* mldsa/src/params.h */
276
+ #undef MLDSA_BETA
277
+ #undef MLDSA_CRHBYTES
278
+ #undef MLDSA_CRYPTO_BYTES
279
+ #undef MLDSA_CRYPTO_PUBLICKEYBYTES
280
+ #undef MLDSA_CRYPTO_SECRETKEYBYTES
281
+ #undef MLDSA_CTILDEBYTES
282
+ #undef MLDSA_D
283
+ #undef MLDSA_ETA
284
+ #undef MLDSA_GAMMA1
285
+ #undef MLDSA_GAMMA2
286
+ #undef MLDSA_GAMMA2_32
287
+ #undef MLDSA_GAMMA2_88
288
+ #undef MLDSA_K
289
+ #undef MLDSA_L
290
+ #undef MLDSA_N
291
+ #undef MLDSA_OMEGA
292
+ #undef MLDSA_PK_END
293
+ #undef MLDSA_PK_RHO_BYTES
294
+ #undef MLDSA_PK_RHO_OFFSET
295
+ #undef MLDSA_PK_T1_BYTES
296
+ #undef MLDSA_PK_T1_OFFSET
297
+ #undef MLDSA_POLYETA_PACKEDBYTES
298
+ #undef MLDSA_POLYT0_PACKEDBYTES
299
+ #undef MLDSA_POLYT1_PACKEDBYTES
300
+ #undef MLDSA_POLYVECH_PACKEDBYTES
301
+ #undef MLDSA_POLYW1_PACKEDBYTES
302
+ #undef MLDSA_POLYW1_PACKEDBYTES_32
303
+ #undef MLDSA_POLYW1_PACKEDBYTES_88
304
+ #undef MLDSA_POLYZ_PACKEDBYTES
305
+ #undef MLDSA_Q
306
+ #undef MLDSA_Q_HALF
307
+ #undef MLDSA_RNDBYTES
308
+ #undef MLDSA_SEEDBYTES
309
+ #undef MLDSA_SIG_C_BYTES
310
+ #undef MLDSA_SIG_C_OFFSET
311
+ #undef MLDSA_SIG_END
312
+ #undef MLDSA_SIG_H_BYTES
313
+ #undef MLDSA_SIG_H_OFFSET
314
+ #undef MLDSA_SIG_Z_BYTES
315
+ #undef MLDSA_SIG_Z_OFFSET
316
+ #undef MLDSA_SK_END
317
+ #undef MLDSA_SK_KEY_BYTES
318
+ #undef MLDSA_SK_KEY_OFFSET
319
+ #undef MLDSA_SK_RHO_BYTES
320
+ #undef MLDSA_SK_RHO_OFFSET
321
+ #undef MLDSA_SK_S1_BYTES
322
+ #undef MLDSA_SK_S1_OFFSET
323
+ #undef MLDSA_SK_S2_BYTES
324
+ #undef MLDSA_SK_S2_OFFSET
325
+ #undef MLDSA_SK_T0_BYTES
326
+ #undef MLDSA_SK_T0_OFFSET
327
+ #undef MLDSA_SK_TR_BYTES
328
+ #undef MLDSA_SK_TR_OFFSET
329
+ #undef MLDSA_TAU
330
+ #undef MLDSA_TRBYTES
331
+ #undef MLD_MAX_KAPPA
332
+ #undef MLD_PARAMS_H
333
+ /* mldsa/src/poly_kl.h */
334
+ #undef MLD_POLYETA_UNPACK_LOWER_BOUND
335
+ #undef MLD_POLY_KL_H
336
+ #undef mld_poly_challenge
337
+ #undef mld_poly_decompose
338
+ #undef mld_poly_uniform_eta
339
+ #undef mld_poly_uniform_eta_4x
340
+ #undef mld_poly_uniform_gamma1
341
+ #undef mld_poly_uniform_gamma1_4x
342
+ #undef mld_poly_use_hint
343
+ #undef mld_polyeta_pack
344
+ #undef mld_polyeta_unpack
345
+ #undef mld_polyw1_pack
346
+ #undef mld_polyz_pack
347
+ #undef mld_polyz_unpack
348
+ /* mldsa/src/polyvec.h */
349
+ #undef MLD_POLYVEC_H
350
+ #undef mld_polyveck
351
+ #undef mld_polyveck_caddq
352
+ #undef mld_polyveck_chknorm
353
+ #undef mld_polyveck_decompose
354
+ #undef mld_polyveck_invntt_tomont
355
+ #undef mld_polyveck_ntt
356
+ #undef mld_polyveck_pack_eta
357
+ #undef mld_polyveck_pack_w1
358
+ #undef mld_polyveck_reduce
359
+ #undef mld_polyveck_unpack_eta
360
+ #undef mld_polyvecl
361
+ #undef mld_polyvecl_chknorm
362
+ #undef mld_polyvecl_ntt
363
+ #undef mld_polyvecl_pack_eta
364
+ #undef mld_polyvecl_pointwise_acc_montgomery
365
+ #undef mld_polyvecl_uniform_gamma1
366
+ #undef mld_polyvecl_unpack_eta
367
+ #undef mld_polyvecl_unpack_z
368
+ /* mldsa/src/polyvec_lazy.h */
369
+ #undef MLD_POLYVEC_LAZY_H
370
+ #undef mld_poly_permute_bitrev_to_custom_optional
371
+ #undef mld_polymat
372
+ #undef mld_polymat_eager
373
+ #undef mld_polymat_lazy
374
+ #undef mld_polyvec_matrix_expand
375
+ #undef mld_polyvec_matrix_expand_eager
376
+ #undef mld_polyvec_matrix_expand_lazy
377
+ #undef mld_polyvec_matrix_pointwise_montgomery
378
+ #undef mld_polyvec_matrix_pointwise_montgomery_row
379
+ #undef mld_polyvec_matrix_pointwise_montgomery_row_eager
380
+ #undef mld_polyvec_matrix_pointwise_montgomery_row_lazy
381
+ #undef mld_polyvec_matrix_pointwise_montgomery_yvec
382
+ #undef mld_polyvec_matrix_pointwise_montgomery_yvec_eager
383
+ #undef mld_polyvec_matrix_pointwise_montgomery_yvec_lazy
384
+ #undef mld_sk_s1hat
385
+ #undef mld_sk_s1hat_eager
386
+ #undef mld_sk_s1hat_get_poly
387
+ #undef mld_sk_s1hat_get_poly_eager
388
+ #undef mld_sk_s1hat_get_poly_lazy
389
+ #undef mld_sk_s1hat_lazy
390
+ #undef mld_sk_s2hat
391
+ #undef mld_sk_s2hat_eager
392
+ #undef mld_sk_s2hat_get_poly
393
+ #undef mld_sk_s2hat_get_poly_eager
394
+ #undef mld_sk_s2hat_get_poly_lazy
395
+ #undef mld_sk_s2hat_lazy
396
+ #undef mld_sk_t0hat
397
+ #undef mld_sk_t0hat_eager
398
+ #undef mld_sk_t0hat_get_poly
399
+ #undef mld_sk_t0hat_get_poly_eager
400
+ #undef mld_sk_t0hat_get_poly_lazy
401
+ #undef mld_sk_t0hat_lazy
402
+ #undef mld_unpack_sk_s1hat
403
+ #undef mld_unpack_sk_s1hat_eager
404
+ #undef mld_unpack_sk_s1hat_lazy
405
+ #undef mld_unpack_sk_s2hat
406
+ #undef mld_unpack_sk_s2hat_eager
407
+ #undef mld_unpack_sk_s2hat_lazy
408
+ #undef mld_unpack_sk_t0hat
409
+ #undef mld_unpack_sk_t0hat_eager
410
+ #undef mld_unpack_sk_t0hat_lazy
411
+ #undef mld_yvec
412
+ #undef mld_yvec_eager
413
+ #undef mld_yvec_get_poly
414
+ #undef mld_yvec_get_poly_eager
415
+ #undef mld_yvec_get_poly_lazy
416
+ #undef mld_yvec_init
417
+ #undef mld_yvec_init_eager
418
+ #undef mld_yvec_init_lazy
419
+ #undef mld_yvec_lazy
420
+ /* mldsa/src/rounding.h */
421
+ #undef MLD_2_POW_D
422
+ #undef MLD_ROUNDING_H
423
+ #undef mld_decompose
424
+ #undef mld_make_hint
425
+ #undef mld_power2round
426
+ #undef mld_use_hint
427
+ /* mldsa/src/sign.h */
428
+ #undef MLD_DOMAIN_SEPARATION_MAX_BYTES
429
+ #undef MLD_PREHASH_NONE
430
+ #undef MLD_PREHASH_SHA2_224
431
+ #undef MLD_PREHASH_SHA2_256
432
+ #undef MLD_PREHASH_SHA2_384
433
+ #undef MLD_PREHASH_SHA2_512
434
+ #undef MLD_PREHASH_SHA2_512_224
435
+ #undef MLD_PREHASH_SHA2_512_256
436
+ #undef MLD_PREHASH_SHA3_224
437
+ #undef MLD_PREHASH_SHA3_256
438
+ #undef MLD_PREHASH_SHA3_384
439
+ #undef MLD_PREHASH_SHA3_512
440
+ #undef MLD_PREHASH_SHAKE_128
441
+ #undef MLD_PREHASH_SHAKE_256
442
+ #undef MLD_SIGN_H
443
+ #undef mld_prepare_domain_separation_prefix
444
+ #undef mld_sign_keypair
445
+ #undef mld_sign_keypair_internal
446
+ #undef mld_sign_pk_from_sk
447
+ #undef mld_sign_signature
448
+ #undef mld_sign_signature_extmu
449
+ #undef mld_sign_signature_internal
450
+ #undef mld_sign_signature_pre_hash_internal
451
+ #undef mld_sign_signature_pre_hash_shake256
452
+ #undef mld_sign_verify
453
+ #undef mld_sign_verify_extmu
454
+ #undef mld_sign_verify_internal
455
+ #undef mld_sign_verify_pre_hash_internal
456
+ #undef mld_sign_verify_pre_hash_shake256
457
+
458
+ #if !defined(MLD_CONFIG_MONOBUILD_KEEP_SHARED_HEADERS)
459
+ /*
460
+ * Undefine macros from MLD_CONFIG_PARAMETER_SET-generic files
461
+ */
462
+ /* mldsa/src/context.h */
463
+ #undef MLD_CONTEXT_H
464
+ #undef MLD_CONTEXT_PARAMETERS_0
465
+ #undef MLD_CONTEXT_PARAMETERS_1
466
+ #undef MLD_CONTEXT_PARAMETERS_2
467
+ #undef MLD_CONTEXT_PARAMETERS_3
468
+ #undef MLD_CONTEXT_PARAMETERS_4
469
+ #undef MLD_CONTEXT_PARAMETERS_5
470
+ #undef MLD_CONTEXT_PARAMETERS_6
471
+ #undef MLD_CONTEXT_PARAMETERS_7
472
+ #undef MLD_CONTEXT_PARAMETERS_8
473
+ #undef MLD_CONTEXT_PARAMETERS_9
474
+ #undef MLD_CONTEXT_UNUSED
475
+ #undef mld_sign_attempt
476
+ #undef mld_sign_finish
477
+ #undef mld_sign_resume
478
+ /* mldsa/src/ct.h */
479
+ #undef MLD_CT_H
480
+ #undef MLD_USE_ASM_VALUE_BARRIER
481
+ #undef mld_ct_opt_blocker_u64
482
+ /* mldsa/src/debug.h */
483
+ #undef MLD_DEBUG_H
484
+ #undef mld_assert
485
+ #undef mld_assert_abs_bound
486
+ #undef mld_assert_abs_bound_2d
487
+ #undef mld_assert_bound
488
+ #undef mld_assert_bound_2d
489
+ #undef mld_debug_check_assert
490
+ #undef mld_debug_check_bounds
491
+ /* mldsa/src/poly.h */
492
+ #undef MLD_FQMUL_BOUND
493
+ #undef MLD_INTT_BOUND
494
+ #undef MLD_NTT_BOUND
495
+ #undef MLD_POLY_H
496
+ #undef mld_poly_add
497
+ #undef mld_poly_caddq
498
+ #undef mld_poly_chknorm
499
+ #undef mld_poly_invntt_tomont
500
+ #undef mld_poly_ntt
501
+ #undef mld_poly_pointwise_montgomery
502
+ #undef mld_poly_power2round
503
+ #undef mld_poly_reduce
504
+ #undef mld_poly_shiftl
505
+ #undef mld_poly_sub
506
+ #undef mld_poly_uniform
507
+ #undef mld_poly_uniform_4x
508
+ #undef mld_polyt0_pack
509
+ #undef mld_polyt0_unpack
510
+ #undef mld_polyt1_pack
511
+ #undef mld_polyt1_unpack
512
+ #undef mld_polyw1_pack_32
513
+ #undef mld_polyw1_pack_88
514
+ /* mldsa/src/randombytes.h */
515
+ #undef MLD_RANDOMBYTES_H
516
+ /* mldsa/src/reduce.h */
517
+ #undef MLD_MONT
518
+ #undef MLD_REDUCE32_DOMAIN_MAX
519
+ #undef MLD_REDUCE32_RANGE_MAX
520
+ #undef MLD_REDUCE_H
521
+ /* mldsa/src/symmetric.h */
522
+ #undef MLD_STREAM128_BLOCKBYTES
523
+ #undef MLD_STREAM256_BLOCKBYTES
524
+ #undef MLD_SYMMETRIC_H
525
+ #undef mld_xof128_absorb_once
526
+ #undef mld_xof128_ctx
527
+ #undef mld_xof128_init
528
+ #undef mld_xof128_release
529
+ #undef mld_xof128_squeezeblocks
530
+ #undef mld_xof128_x4_absorb
531
+ #undef mld_xof128_x4_ctx
532
+ #undef mld_xof128_x4_init
533
+ #undef mld_xof128_x4_release
534
+ #undef mld_xof128_x4_squeezeblocks
535
+ #undef mld_xof256_absorb_once
536
+ #undef mld_xof256_ctx
537
+ #undef mld_xof256_init
538
+ #undef mld_xof256_release
539
+ #undef mld_xof256_squeezeblocks
540
+ #undef mld_xof256_x4_absorb
541
+ #undef mld_xof256_x4_ctx
542
+ #undef mld_xof256_x4_init
543
+ #undef mld_xof256_x4_release
544
+ #undef mld_xof256_x4_squeezeblocks
545
+ /* mldsa/src/sys.h */
546
+ #undef MLD_ALIGN
547
+ #undef MLD_ALIGN_UP
548
+ #undef MLD_ALWAYS_INLINE
549
+ #undef MLD_CET_ENDBR
550
+ #undef MLD_CT_TESTING_DECLASSIFY
551
+ #undef MLD_CT_TESTING_SECRET
552
+ #undef MLD_DEFAULT_ALIGN
553
+ #undef MLD_HAVE_INLINE_ASM
554
+ #undef MLD_INLINE
555
+ #undef MLD_MUST_CHECK_RETURN_VALUE
556
+ #undef MLD_NOINLINE
557
+ #undef MLD_RESTRICT
558
+ #undef MLD_STATIC_TESTABLE
559
+ #undef MLD_SYSV_ABI
560
+ #undef MLD_SYSV_ABI_SUPPORTED
561
+ #undef MLD_SYS_AARCH64
562
+ #undef MLD_SYS_AARCH64_EB
563
+ #undef MLD_SYS_AARCH64_NEON
564
+ #undef MLD_SYS_APPLE
565
+ #undef MLD_SYS_ARMV81M_MVE
566
+ #undef MLD_SYS_BIG_ENDIAN
567
+ #undef MLD_SYS_H
568
+ #undef MLD_SYS_LINUX
569
+ #undef MLD_SYS_LITTLE_ENDIAN
570
+ #undef MLD_SYS_PPC64LE
571
+ #undef MLD_SYS_RISCV32
572
+ #undef MLD_SYS_RISCV64
573
+ #undef MLD_SYS_RISCV64_RVV
574
+ #undef MLD_SYS_WINDOWS
575
+ #undef MLD_SYS_X86_64
576
+ #undef MLD_SYS_X86_64_AVX2
577
+ /* mldsa/src/cbmc.h */
578
+ #undef MLD_CBMC_H
579
+ #undef __contract__
580
+ #undef __loop__
581
+
582
+ #if !defined(MLD_CONFIG_FIPS202_CUSTOM_HEADER)
583
+ /*
584
+ * Undefine macros from FIPS-202 files
585
+ */
586
+ /* mldsa/src/fips202/fips202.h */
587
+ #undef MLD_FIPS202_FIPS202_H
588
+ #undef MLD_KECCAK_LANES
589
+ #undef SHA3_256_HASHBYTES
590
+ #undef SHA3_256_RATE
591
+ #undef SHA3_512_HASHBYTES
592
+ #undef SHA3_512_RATE
593
+ #undef SHAKE128_RATE
594
+ #undef SHAKE256_RATE
595
+ #undef mld_shake128_absorb
596
+ #undef mld_shake128_finalize
597
+ #undef mld_shake128_init
598
+ #undef mld_shake128_release
599
+ #undef mld_shake128_squeeze
600
+ #undef mld_shake256
601
+ #undef mld_shake256_absorb
602
+ #undef mld_shake256_finalize
603
+ #undef mld_shake256_init
604
+ #undef mld_shake256_release
605
+ #undef mld_shake256_squeeze
606
+ /* mldsa/src/fips202/fips202x4.h */
607
+ #undef MLD_FIPS202_FIPS202X4_H
608
+ #undef mld_shake128x4_absorb_once
609
+ #undef mld_shake128x4_init
610
+ #undef mld_shake128x4_release
611
+ #undef mld_shake128x4_squeezeblocks
612
+ #undef mld_shake256x4_absorb_once
613
+ #undef mld_shake256x4_init
614
+ #undef mld_shake256x4_release
615
+ #undef mld_shake256x4_squeezeblocks
616
+ /* mldsa/src/fips202/keccakf1600.h */
617
+ #undef MLD_FIPS202_KECCAKF1600_H
618
+ #undef MLD_KECCAK_LANES
619
+ #undef MLD_KECCAK_WAY
620
+ #undef mld_keccakf1600_extract_bytes
621
+ #undef mld_keccakf1600_permute
622
+ #undef mld_keccakf1600_xor_bytes
623
+ #undef mld_keccakf1600x4_extract_bytes
624
+ #undef mld_keccakf1600x4_permute
625
+ #undef mld_keccakf1600x4_xor_bytes
626
+ #endif /* !MLD_CONFIG_FIPS202_CUSTOM_HEADER */
627
+
628
+ #if defined(MLD_CONFIG_USE_NATIVE_BACKEND_FIPS202)
629
+ /* mldsa/src/fips202/native/api.h */
630
+ #undef MLD_FIPS202_NATIVE_API_H
631
+ #undef MLD_NATIVE_FUNC_FALLBACK
632
+ #undef MLD_NATIVE_FUNC_SUCCESS
633
+ /* mldsa/src/fips202/native/auto.h */
634
+ #undef MLD_FIPS202_NATIVE_AUTO_H
635
+ #if defined(MLD_SYS_AARCH64)
636
+ /*
637
+ * Undefine macros from native code (FIPS202, AArch64)
638
+ */
639
+ /* mldsa/src/fips202/native/aarch64/auto.h */
640
+ #undef MLD_FIPS202_NATIVE_AARCH64_AUTO_H
641
+ /* mldsa/src/fips202/native/aarch64/src/fips202_native_aarch64.h */
642
+ #undef MLD_FIPS202_NATIVE_AARCH64_SRC_FIPS202_NATIVE_AARCH64_H
643
+ #undef mld_keccak_f1600_x1_scalar_aarch64_asm
644
+ #undef mld_keccak_f1600_x1_v84a_aarch64_asm
645
+ #undef mld_keccak_f1600_x2_v84a_aarch64_asm
646
+ #undef mld_keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm
647
+ #undef mld_keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm
648
+ #undef mld_keccakf1600_round_constants
649
+ /* mldsa/src/fips202/native/aarch64/x1_scalar.h */
650
+ #undef MLD_FIPS202_AARCH64_NEED_X1_SCALAR
651
+ #undef MLD_FIPS202_NATIVE_AARCH64_X1_SCALAR_H
652
+ #undef MLD_USE_NATIVE_FIPS202_X1
653
+ /* mldsa/src/fips202/native/aarch64/x1_v84a.h */
654
+ #undef MLD_FIPS202_AARCH64_NEED_X1_V84A
655
+ #undef MLD_FIPS202_NATIVE_AARCH64_X1_V84A_H
656
+ #undef MLD_USE_NATIVE_FIPS202_X1
657
+ /* mldsa/src/fips202/native/aarch64/x2_v84a.h */
658
+ #undef MLD_FIPS202_AARCH64_NEED_X2_V84A
659
+ #undef MLD_FIPS202_NATIVE_AARCH64_X2_V84A_H
660
+ #undef MLD_USE_NATIVE_FIPS202_X4
661
+ /* mldsa/src/fips202/native/aarch64/x4_v8a_scalar.h */
662
+ #undef MLD_FIPS202_AARCH64_NEED_X4_V8A_SCALAR_HYBRID
663
+ #undef MLD_FIPS202_NATIVE_AARCH64_X4_V8A_SCALAR_H
664
+ #undef MLD_USE_NATIVE_FIPS202_X4
665
+ /* mldsa/src/fips202/native/aarch64/x4_v8a_v84a_scalar.h */
666
+ #undef MLD_FIPS202_AARCH64_NEED_X4_V8A_V84A_SCALAR_HYBRID
667
+ #undef MLD_FIPS202_NATIVE_AARCH64_X4_V8A_V84A_SCALAR_H
668
+ #undef MLD_USE_NATIVE_FIPS202_X4
669
+ #endif /* MLD_SYS_AARCH64 */
670
+ #if defined(MLD_SYS_X86_64)
671
+ /*
672
+ * Undefine macros from native code (FIPS202, x86_64)
673
+ */
674
+ /* mldsa/src/fips202/native/x86_64/keccak_f1600_x4_avx2.h */
675
+ #undef MLD_FIPS202_NATIVE_X86_64_KECCAK_F1600_X4_AVX2_H
676
+ #undef MLD_FIPS202_X86_64_NEED_X4_AVX2
677
+ #undef MLD_USE_NATIVE_FIPS202_X4
678
+ /* mldsa/src/fips202/native/x86_64/src/fips202_native_x86_64.h */
679
+ #undef MLD_FIPS202_NATIVE_X86_64_SRC_FIPS202_NATIVE_X86_64_H
680
+ #undef mld_keccak_f1600_x4_avx2_asm
681
+ #undef mld_keccak_rho56
682
+ #undef mld_keccak_rho8
683
+ #undef mld_keccakf1600_round_constants
684
+ #endif /* MLD_SYS_X86_64 */
685
+ #if defined(MLD_SYS_ARMV81M_MVE)
686
+ /*
687
+ * Undefine macros from native code (FIPS202, Armv8.1-M)
688
+ */
689
+ /* mldsa/src/fips202/native/armv81m/mve.h */
690
+ #undef MLD_FIPS202_ARMV81M_NEED_X4
691
+ #undef MLD_FIPS202_NATIVE_ARMV81M
692
+ #undef MLD_FIPS202_NATIVE_ARMV81M_MVE_H
693
+ #undef MLD_USE_NATIVE_FIPS202_X4
694
+ #undef MLD_USE_NATIVE_FIPS202_X4_EXTRACT_BYTES
695
+ #undef MLD_USE_NATIVE_FIPS202_X4_XOR_BYTES
696
+ #undef mld_keccak_f1600_x4_native_impl
697
+ /* mldsa/src/fips202/native/armv81m/src/fips202_native_armv81m.h */
698
+ #undef MLD_FIPS202_NATIVE_ARMV81M_SRC_FIPS202_NATIVE_ARMV81M_H
699
+ #undef mld_keccak_f1600_x4_mve_asm
700
+ #undef mld_keccak_f1600_x4_state_extract_bytes_asm
701
+ #undef mld_keccak_f1600_x4_state_xor_bytes_asm
702
+ #undef mld_keccakf1600_round_constants
703
+ #endif /* MLD_SYS_ARMV81M_MVE */
704
+ #endif /* MLD_CONFIG_USE_NATIVE_BACKEND_FIPS202 */
705
+ #if defined(MLD_CONFIG_USE_NATIVE_BACKEND_ARITH)
706
+ /* mldsa/src/native/api.h */
707
+ #undef MLD_FQMUL_BOUND
708
+ #undef MLD_INTT_BOUND
709
+ #undef MLD_NATIVE_API_H
710
+ #undef MLD_NATIVE_FUNC_FALLBACK
711
+ #undef MLD_NATIVE_FUNC_SUCCESS
712
+ #undef MLD_NTT_BOUND
713
+ #undef MLD_REDUCE32_RANGE_MAX
714
+ /* mldsa/src/native/meta.h */
715
+ #undef MLD_NATIVE_META_H
716
+ #if defined(MLD_SYS_AARCH64)
717
+ /*
718
+ * Undefine macros from native code (Arith, AArch64)
719
+ */
720
+ /* mldsa/src/native/aarch64/meta.h */
721
+ #undef MLD_ARITH_BACKEND_AARCH64
722
+ #undef MLD_NATIVE_AARCH64_META_H
723
+ #undef MLD_USE_NATIVE_INTT
724
+ #undef MLD_USE_NATIVE_NTT
725
+ #undef MLD_USE_NATIVE_POINTWISE_MONTGOMERY
726
+ #undef MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L4
727
+ #undef MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L5
728
+ #undef MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L7
729
+ #undef MLD_USE_NATIVE_POLYZ_UNPACK_17
730
+ #undef MLD_USE_NATIVE_POLYZ_UNPACK_19
731
+ #undef MLD_USE_NATIVE_POLY_CADDQ
732
+ #undef MLD_USE_NATIVE_POLY_CHKNORM
733
+ #undef MLD_USE_NATIVE_POLY_DECOMPOSE_32
734
+ #undef MLD_USE_NATIVE_POLY_DECOMPOSE_88
735
+ #undef MLD_USE_NATIVE_POLY_USE_HINT_32
736
+ #undef MLD_USE_NATIVE_POLY_USE_HINT_88
737
+ #undef MLD_USE_NATIVE_REJ_UNIFORM
738
+ #undef MLD_USE_NATIVE_REJ_UNIFORM_ETA2
739
+ #undef MLD_USE_NATIVE_REJ_UNIFORM_ETA4
740
+ /* mldsa/src/native/aarch64/src/arith_native_aarch64.h */
741
+ #undef MLD_AARCH64_REJ_UNIFORM_ETA2_BUFLEN
742
+ #undef MLD_AARCH64_REJ_UNIFORM_ETA4_BUFLEN
743
+ #undef MLD_NATIVE_AARCH64_SRC_ARITH_NATIVE_AARCH64_H
744
+ #undef mld_aarch64_intt_zetas_layer123456
745
+ #undef mld_aarch64_intt_zetas_layer78
746
+ #undef mld_aarch64_ntt_zetas_layer123456
747
+ #undef mld_aarch64_ntt_zetas_layer78
748
+ #undef mld_intt_aarch64_asm
749
+ #undef mld_ntt_aarch64_asm
750
+ #undef mld_poly_caddq_aarch64_asm
751
+ #undef mld_poly_chknorm_aarch64_asm
752
+ #undef mld_poly_decompose_32_aarch64_asm
753
+ #undef mld_poly_decompose_88_aarch64_asm
754
+ #undef mld_poly_pointwise_montgomery_aarch64_asm
755
+ #undef mld_poly_use_hint_32_aarch64_asm
756
+ #undef mld_poly_use_hint_88_aarch64_asm
757
+ #undef mld_polyvecl_pointwise_acc_montgomery_l4_aarch64_asm
758
+ #undef mld_polyvecl_pointwise_acc_montgomery_l5_aarch64_asm
759
+ #undef mld_polyvecl_pointwise_acc_montgomery_l7_aarch64_asm
760
+ #undef mld_polyz_unpack_17_aarch64_asm
761
+ #undef mld_polyz_unpack_17_indices
762
+ #undef mld_polyz_unpack_19_aarch64_asm
763
+ #undef mld_polyz_unpack_19_indices
764
+ #undef mld_rej_uniform_aarch64_asm
765
+ #undef mld_rej_uniform_eta2_aarch64_asm
766
+ #undef mld_rej_uniform_eta4_aarch64_asm
767
+ #undef mld_rej_uniform_eta_table
768
+ #undef mld_rej_uniform_table
769
+ #endif /* MLD_SYS_AARCH64 */
770
+ #if defined(MLD_SYS_X86_64)
771
+ /*
772
+ * Undefine macros from native code (Arith, X86_64)
773
+ */
774
+ /* mldsa/src/native/x86_64/meta.h */
775
+ #undef MLD_ARITH_BACKEND_X86_64_DEFAULT
776
+ #undef MLD_NATIVE_X86_64_META_H
777
+ #undef MLD_USE_NATIVE_INTT
778
+ #undef MLD_USE_NATIVE_NTT
779
+ #undef MLD_USE_NATIVE_NTT_CUSTOM_ORDER
780
+ #undef MLD_USE_NATIVE_POINTWISE_MONTGOMERY
781
+ #undef MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L4
782
+ #undef MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L5
783
+ #undef MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L7
784
+ #undef MLD_USE_NATIVE_POLYZ_UNPACK_17
785
+ #undef MLD_USE_NATIVE_POLYZ_UNPACK_19
786
+ #undef MLD_USE_NATIVE_POLY_CADDQ
787
+ #undef MLD_USE_NATIVE_POLY_CHKNORM
788
+ #undef MLD_USE_NATIVE_POLY_DECOMPOSE_32
789
+ #undef MLD_USE_NATIVE_POLY_DECOMPOSE_88
790
+ #undef MLD_USE_NATIVE_POLY_USE_HINT_32
791
+ #undef MLD_USE_NATIVE_POLY_USE_HINT_88
792
+ #undef MLD_USE_NATIVE_REJ_UNIFORM
793
+ #undef MLD_USE_NATIVE_REJ_UNIFORM_ETA2
794
+ #undef MLD_USE_NATIVE_REJ_UNIFORM_ETA4
795
+ /* mldsa/src/native/x86_64/src/arith_native_x86_64.h */
796
+ #undef MLD_AVX2_REJ_UNIFORM_BUFLEN
797
+ #undef MLD_AVX2_REJ_UNIFORM_ETA2_BUFLEN
798
+ #undef MLD_AVX2_REJ_UNIFORM_ETA4_BUFLEN
799
+ #undef MLD_NATIVE_X86_64_SRC_ARITH_NATIVE_X86_64_H
800
+ #undef mld_invntt_avx2_asm
801
+ #undef mld_ntt_avx2_asm
802
+ #undef mld_nttunpack_avx2_asm
803
+ #undef mld_pointwise_acc_l4_avx2_asm
804
+ #undef mld_pointwise_acc_l5_avx2_asm
805
+ #undef mld_pointwise_acc_l7_avx2_asm
806
+ #undef mld_pointwise_avx2_asm
807
+ #undef mld_poly_caddq_avx2_asm
808
+ #undef mld_poly_chknorm_avx2_asm
809
+ #undef mld_poly_decompose_32_avx2_asm
810
+ #undef mld_poly_decompose_88_avx2_asm
811
+ #undef mld_poly_use_hint_32_avx2_asm
812
+ #undef mld_poly_use_hint_88_avx2_asm
813
+ #undef mld_polyz_unpack_17_avx2_asm
814
+ #undef mld_polyz_unpack_19_avx2_asm
815
+ #undef mld_rej_uniform_avx2_asm
816
+ #undef mld_rej_uniform_eta2_avx2_asm
817
+ #undef mld_rej_uniform_eta4_avx2_asm
818
+ #undef mld_rej_uniform_table
819
+ /* mldsa/src/native/x86_64/src/consts.h */
820
+ #undef MLD_AVX2_BACKEND_DATA_OFFSET_8XDIV
821
+ #undef MLD_AVX2_BACKEND_DATA_OFFSET_8XDIV_QINV
822
+ #undef MLD_AVX2_BACKEND_DATA_OFFSET_8XQ
823
+ #undef MLD_AVX2_BACKEND_DATA_OFFSET_8XQINV
824
+ #undef MLD_AVX2_BACKEND_DATA_OFFSET_ZETAS
825
+ #undef MLD_AVX2_BACKEND_DATA_OFFSET_ZETAS_QINV
826
+ #undef MLD_NATIVE_X86_64_SRC_CONSTS_H
827
+ #undef mld_qdata
828
+ #endif /* MLD_SYS_X86_64 */
829
+ #endif /* MLD_CONFIG_USE_NATIVE_BACKEND_ARITH */
830
+ #endif /* !MLD_CONFIG_MONOBUILD_KEEP_SHARED_HEADERS */