pq_crypto 0.6.2 → 0.6.3

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 (113) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/ext/pqcrypto/pqcrypto_version.h +1 -1
  4. data/ext/pqcrypto/vendor/.vendored +4 -4
  5. data/ext/pqcrypto/vendor/mlkem-native/README.md +6 -3
  6. data/ext/pqcrypto/vendor/mlkem-native/RELEASE.md +22 -0
  7. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native.c +77 -36
  8. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native.h +135 -146
  9. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native_asm.S +116 -72
  10. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native_config.h +351 -415
  11. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/cbmc.h +43 -20
  12. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/common.h +16 -8
  13. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/compress.c +57 -31
  14. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/compress.h +260 -349
  15. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/debug.h +17 -24
  16. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202.c +35 -37
  17. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202.h +43 -57
  18. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202x4.c +14 -15
  19. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202x4.h +5 -4
  20. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/keccakf1600.c +42 -6
  21. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/fips202_native_aarch64.h +31 -20
  22. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/{keccak_f1600_x1_scalar_asm.S → keccak_f1600_x1_scalar_aarch64_asm.S} +10 -10
  23. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/{keccak_f1600_x1_v84a_asm.S → keccak_f1600_x1_v84a_aarch64_asm.S} +10 -10
  24. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/{keccak_f1600_x2_v84a_asm.S → keccak_f1600_x2_v84a_aarch64_asm.S} +10 -10
  25. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/{keccak_f1600_x4_v8a_scalar_hybrid_asm.S → keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm.S} +10 -10
  26. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/{keccak_f1600_x4_v8a_v84a_scalar_hybrid_asm.S → keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm.S} +10 -10
  27. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccakf1600_round_constants.c +10 -9
  28. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x1_scalar.h +2 -1
  29. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x1_v84a.h +1 -1
  30. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x2_v84a.h +4 -2
  31. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x4_v8a_scalar.h +2 -2
  32. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x4_v8a_v84a_scalar.h +1 -1
  33. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/fips202_native_armv81m.h +2 -1
  34. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S +55 -9
  35. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccakf1600_round_constants.c +26 -25
  36. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/state_extract_bytes_x4_mve.S +58 -14
  37. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/state_xor_bytes_x4_mve.S +57 -16
  38. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/auto.h +2 -1
  39. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/keccak_f1600_x4_avx2.h +2 -2
  40. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/fips202_native_x86_64.h +10 -7
  41. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/{keccak_f1600_x4_avx2.S → keccak_f1600_x4_avx2_asm.S} +13 -11
  42. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/keccakf1600_constants.c +12 -11
  43. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/indcpa.c +167 -136
  44. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/indcpa.h +75 -68
  45. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/kem.h +135 -157
  46. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/meta.h +15 -13
  47. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/aarch64_zetas.c +143 -135
  48. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/arith_native_aarch64.h +52 -46
  49. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{intt.S → intt_aarch64_asm.S} +10 -10
  50. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{ntt.S → ntt_aarch64_asm.S} +10 -10
  51. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{poly_mulcache_compute_asm.S → poly_mulcache_compute_aarch64_asm.S} +10 -10
  52. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{poly_reduce_asm.S → poly_reduce_aarch64_asm.S} +10 -10
  53. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{poly_tobytes_asm.S → poly_tobytes_aarch64_asm.S} +10 -10
  54. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{poly_tomont_asm.S → poly_tomont_aarch64_asm.S} +10 -12
  55. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{polyvec_basemul_acc_montgomery_cached_asm_k2.S → polyvec_basemul_acc_montgomery_cached_k2_aarch64_asm.S} +10 -10
  56. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{polyvec_basemul_acc_montgomery_cached_asm_k3.S → polyvec_basemul_acc_montgomery_cached_k3_aarch64_asm.S} +10 -10
  57. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{polyvec_basemul_acc_montgomery_cached_asm_k4.S → polyvec_basemul_acc_montgomery_cached_k4_aarch64_asm.S} +10 -10
  58. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{rej_uniform_asm.S → rej_uniform_aarch64_asm.S} +12 -12
  59. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/rej_uniform_table.c +514 -513
  60. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/api.h +254 -253
  61. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/meta.h +6 -1
  62. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/README.md +6 -0
  63. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/meta.h +77 -0
  64. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/arith_native_ppc64le.h +24 -0
  65. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/consts.c +299 -0
  66. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/consts.h +34 -0
  67. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/intt_ppc_asm.S +3222 -0
  68. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/ntt_ppc_asm.S +1651 -0
  69. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/poly_tomont_ppc_asm.S +294 -0
  70. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/reduce_ppc_asm.S +710 -0
  71. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/meta.h +5 -0
  72. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_debug.c +18 -16
  73. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_debug.h +19 -24
  74. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_poly.c +53 -65
  75. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/meta.h +20 -20
  76. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/arith_native_x86_64.h +106 -88
  77. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/compress_consts.c +45 -35
  78. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/compress_consts.h +8 -8
  79. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/consts.c +1 -1
  80. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/consts.h +1 -1
  81. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{intt.S → intt_avx2_asm.S} +8 -8
  82. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{ntt.S → ntt_avx2_asm.S} +8 -8
  83. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{nttfrombytes.S → nttfrombytes_avx2_asm.S} +8 -8
  84. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{ntttobytes.S → ntttobytes_avx2_asm.S} +8 -8
  85. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{nttunpack.S → nttunpack_avx2_asm.S} +8 -8
  86. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_compress_d10.S → poly_compress_d10_avx2_asm.S} +9 -9
  87. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_compress_d11.S → poly_compress_d11_avx2_asm.S} +9 -9
  88. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_compress_d4.S → poly_compress_d4_avx2_asm.S} +9 -9
  89. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_compress_d5.S → poly_compress_d5_avx2_asm.S} +9 -9
  90. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_decompress_d10.S → poly_decompress_d10_avx2_asm.S} +9 -9
  91. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_decompress_d11.S → poly_decompress_d11_avx2_asm.S} +9 -9
  92. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_decompress_d4.S → poly_decompress_d4_avx2_asm.S} +9 -9
  93. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_decompress_d5.S → poly_decompress_d5_avx2_asm.S} +9 -9
  94. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{mulcache_compute.S → poly_mulcache_compute_avx2_asm.S} +8 -8
  95. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{polyvec_basemul_acc_montgomery_cached_asm_k2.S → polyvec_basemul_acc_montgomery_cached_k2_avx2_asm.S} +8 -8
  96. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{polyvec_basemul_acc_montgomery_cached_asm_k3.S → polyvec_basemul_acc_montgomery_cached_k3_avx2_asm.S} +8 -8
  97. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{polyvec_basemul_acc_montgomery_cached_asm_k4.S → polyvec_basemul_acc_montgomery_cached_k4_avx2_asm.S} +8 -8
  98. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{reduce.S → reduce_avx2_asm.S} +8 -8
  99. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{rej_uniform_asm.S → rej_uniform_avx2_asm.S} +9 -9
  100. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/rej_uniform_table.c +514 -513
  101. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{tomont.S → tomont_avx2_asm.S} +8 -8
  102. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly.c +61 -57
  103. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly.h +89 -116
  104. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly_k.c +31 -32
  105. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly_k.h +226 -301
  106. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/randombytes.h +21 -29
  107. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sampling.c +68 -63
  108. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sampling.h +37 -48
  109. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sys.h +44 -2
  110. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/verify.h +141 -159
  111. data/lib/pq_crypto/version.rb +1 -1
  112. data/script/vendor_libs.rb +3 -3
  113. metadata +47 -38
@@ -112,13 +112,13 @@
112
112
  /****************************** Error codes ***********************************/
113
113
 
114
114
  /* Generic failure condition */
115
- #define MLK_ERR_FAIL -1
115
+ #define MLK_ERR_FAIL (-1)
116
116
  /* An allocation failed. This can only happen if MLK_CONFIG_CUSTOM_ALLOC_FREE
117
117
  * is defined and the provided MLK_CUSTOM_ALLOC can fail. */
118
- #define MLK_ERR_OUT_OF_MEMORY -2
118
+ #define MLK_ERR_OUT_OF_MEMORY (-2)
119
119
  /* An rng failure occured. Might be due to insufficient entropy or
120
120
  * system misconfiguration. */
121
- #define MLK_ERR_RNG_FAIL -3
121
+ #define MLK_ERR_RNG_FAIL (-3)
122
122
 
123
123
  /****************************** Function API **********************************/
124
124
 
@@ -170,7 +170,7 @@
170
170
  #define MLK_API_NAMESPACE(sym) \
171
171
  MLK_API_CONCAT_UNDERSCORE(MLK_CONFIG_API_NAMESPACE_PREFIX, sym)
172
172
 
173
- #if defined(__GNUC__) || defined(clang)
173
+ #if defined(__GNUC__) || defined(__clang__)
174
174
  #define MLK_API_MUST_CHECK_RETURN_VALUE __attribute__((warn_unused_result))
175
175
  #else
176
176
  #define MLK_API_MUST_CHECK_RETURN_VALUE
@@ -191,28 +191,26 @@ extern "C"
191
191
  {
192
192
  #endif
193
193
 
194
- /*************************************************
195
- * Name: crypto_kem_keypair_derand
196
- *
197
- * Description: Generates public and private key
198
- * for CCA-secure ML-KEM key encapsulation mechanism
199
- *
200
- * Arguments: - uint8_t pk[]: pointer to output public key, an array of
201
- * length MLKEM{512,768,1024}_PUBLICKEYBYTES bytes.
202
- * - uint8_t sk[]: pointer to output private key, an array of
203
- * of MLKEM{512,768,1024}_SECRETKEYBYTES bytes.
204
- * - uint8_t *coins: pointer to input randomness, an array of
205
- * 2*MLKEM_SYMBYTES uniformly random bytes.
206
- *
207
- * Returns: - 0: On success
208
- * - MLK_ERR_FAIL: If MLK_CONFIG_KEYGEN_PCT is enabled and the
209
- * PCT failed.
210
- * - MLK_ERR_OUT_OF_MEMORY: If MLK_CONFIG_CUSTOM_ALLOC_FREE is
211
- * used and an allocation via MLK_CUSTOM_ALLOC returned NULL.
212
- *
213
- * Specification: Implements @[FIPS203, Algorithm 16, ML-KEM.KeyGen_Internal]
214
- *
215
- **************************************************/
194
+ /**
195
+ * Generate a public/private keypair for the ML-KEM key encapsulation mechanism.
196
+ *
197
+ * @spec{Implements @[FIPS203, Algorithm 16, ML-KEM.KeyGen_Internal].}
198
+ *
199
+ * @param[out] pk Output public key, an array of
200
+ * MLKEM{512,768,1024}_PUBLICKEYBYTES bytes.
201
+ * @param[out] sk Output private key, an array of
202
+ * MLKEM{512,768,1024}_SECRETKEYBYTES bytes.
203
+ * @param[in] coins Input randomness, an array of 2*MLKEM_SYMBYTES uniformly
204
+ * random bytes.
205
+ * @param context Application context. Only present when
206
+ * MLK_CONFIG_CONTEXT_PARAMETER is defined; type set by
207
+ * MLK_CONFIG_CONTEXT_PARAMETER_TYPE.
208
+ *
209
+ * @retval 0 Success.
210
+ * @retval MLK_ERR_FAIL MLK_CONFIG_KEYGEN_PCT enabled and PCT failed.
211
+ * @retval MLK_ERR_OUT_OF_MEMORY MLK_CONFIG_CUSTOM_ALLOC_FREE was used and
212
+ * MLK_CUSTOM_ALLOC returned NULL.
213
+ */
216
214
  MLK_API_QUALIFIER
217
215
  MLK_API_MUST_CHECK_RETURN_VALUE
218
216
  int MLK_API_NAMESPACE(keypair_derand)(
@@ -227,27 +225,25 @@ int MLK_API_NAMESPACE(keypair_derand)(
227
225
 
228
226
 
229
227
  #if !defined(MLK_CONFIG_NO_RANDOMIZED_API)
230
- /*************************************************
231
- * Name: crypto_kem_keypair
232
- *
233
- * Description: Generates public and private key
234
- * for CCA-secure ML-KEM key encapsulation mechanism
235
- *
236
- * Arguments: - uint8_t *pk: pointer to output public key, an array of
237
- * MLKEM{512,768,1024}_PUBLICKEYBYTES bytes.
238
- * - uint8_t *sk: pointer to output private key, an array of
239
- * MLKEM{512,768,1024}_SECRETKEYBYTES bytes.
240
- *
241
- * Returns: - 0: On success
242
- * - MLK_ERR_FAIL: If MLK_CONFIG_KEYGEN_PCT is enabled and the
243
- * PCT failed.
244
- * - MLK_ERR_OUT_OF_MEMORY: If MLK_CONFIG_CUSTOM_ALLOC_FREE is
245
- * used and an allocation via MLK_CUSTOM_ALLOC returned NULL.
246
- * - MLK_ERR_RNG_FAIL: Random number generation failed.
247
- *
248
- * Specification: Implements @[FIPS203, Algorithm 19, ML-KEM.KeyGen]
249
- *
250
- **************************************************/
228
+ /**
229
+ * Generate a public/private keypair for the ML-KEM key encapsulation mechanism.
230
+ *
231
+ * @spec{Implements @[FIPS203, Algorithm 19, ML-KEM.KeyGen].}
232
+ *
233
+ * @param[out] pk Output public key, an array of
234
+ * MLKEM{512,768,1024}_PUBLICKEYBYTES bytes.
235
+ * @param[out] sk Output private key, an array of
236
+ * MLKEM{512,768,1024}_SECRETKEYBYTES bytes.
237
+ * @param context Application context. Only present when
238
+ * MLK_CONFIG_CONTEXT_PARAMETER is defined; type set by
239
+ * MLK_CONFIG_CONTEXT_PARAMETER_TYPE.
240
+ *
241
+ * @retval 0 Success.
242
+ * @retval MLK_ERR_FAIL MLK_CONFIG_KEYGEN_PCT enabled and PCT failed.
243
+ * @retval MLK_ERR_OUT_OF_MEMORY MLK_CONFIG_CUSTOM_ALLOC_FREE was used and
244
+ * MLK_CUSTOM_ALLOC returned NULL.
245
+ * @retval MLK_ERR_RNG_FAIL Random number generation failed.
246
+ */
251
247
  MLK_API_QUALIFIER
252
248
  MLK_API_MUST_CHECK_RETURN_VALUE
253
249
  int MLK_API_NAMESPACE(keypair)(
@@ -260,30 +256,27 @@ int MLK_API_NAMESPACE(keypair)(
260
256
  );
261
257
  #endif /* !MLK_CONFIG_NO_RANDOMIZED_API */
262
258
 
263
- /*************************************************
264
- * Name: crypto_kem_enc_derand
265
- *
266
- * Description: Generates cipher text and shared
267
- * secret for given public key
268
- *
269
- * Arguments: - uint8_t *ct: pointer to output cipher text, an array of
270
- * MLKEM{512,768,1024}_CIPHERTEXTBYTES bytes.
271
- * - uint8_t *ss: pointer to output shared secret, an array of
272
- * MLKEM_BYTES bytes.
273
- * - const uint8_t *pk: pointer to input public key, an array of
274
- * MLKEM{512,768,1024}_PUBLICKEYBYTES bytes.
275
- * - const uint8_t *coins: pointer to input randomness, an array of
276
- * MLKEM_SYMBYTES bytes.
277
- *
278
- * Returns: - 0 on success
279
- * - MLK_ERR_FAIL: If the 'modulus check' @[FIPS203, Section 7.2]
280
- * for the public key fails.
281
- * - MLK_ERR_OUT_OF_MEMORY: If MLK_CONFIG_CUSTOM_ALLOC_FREE is
282
- * used and an allocation via MLK_CUSTOM_ALLOC returned NULL.
283
- *
284
- * Specification: Implements @[FIPS203, Algorithm 17, ML-KEM.Encaps_Internal]
285
- *
286
- **************************************************/
259
+ /**
260
+ * Generate ciphertext and shared secret for a given public key.
261
+ *
262
+ * @spec{Implements @[FIPS203, Algorithm 17, ML-KEM.Encaps_Internal].}
263
+ *
264
+ * @param[out] ct Output ciphertext, an array of
265
+ * MLKEM{512,768,1024}_CIPHERTEXTBYTES bytes.
266
+ * @param[out] ss Output shared secret, an array of MLKEM_BYTES bytes.
267
+ * @param[in] pk Input public key, an array of
268
+ * MLKEM{512,768,1024}_PUBLICKEYBYTES bytes.
269
+ * @param[in] coins Input randomness, an array of MLKEM_SYMBYTES bytes.
270
+ * @param context Application context. Only present when
271
+ * MLK_CONFIG_CONTEXT_PARAMETER is defined; type set by
272
+ * MLK_CONFIG_CONTEXT_PARAMETER_TYPE.
273
+ *
274
+ * @retval 0 Success.
275
+ * @retval MLK_ERR_FAIL The 'modulus check' @[FIPS203, Section 7.2]
276
+ * for the public key failed.
277
+ * @retval MLK_ERR_OUT_OF_MEMORY MLK_CONFIG_CUSTOM_ALLOC_FREE was used and
278
+ * MLK_CUSTOM_ALLOC returned NULL.
279
+ */
287
280
  MLK_API_QUALIFIER
288
281
  MLK_API_MUST_CHECK_RETURN_VALUE
289
282
  int MLK_API_NAMESPACE(enc_derand)(
@@ -298,29 +291,27 @@ int MLK_API_NAMESPACE(enc_derand)(
298
291
  );
299
292
 
300
293
  #if !defined(MLK_CONFIG_NO_RANDOMIZED_API)
301
- /*************************************************
302
- * Name: crypto_kem_enc
303
- *
304
- * Description: Generates cipher text and shared
305
- * secret for given public key
306
- *
307
- * Arguments: - uint8_t *ct: pointer to output cipher text, an array of
308
- * MLKEM{512,768,1024}_CIPHERTEXTBYTES bytes.
309
- * - uint8_t *ss: pointer to output shared secret, an array of
310
- * MLKEM_BYTES bytes.
311
- * - const uint8_t *pk: pointer to input public key, an array of
312
- * MLKEM{512,768,1024}_PUBLICKEYBYTES bytes.
313
- *
314
- * Returns: - 0 on success
315
- * - MLK_ERR_FAIL: If the 'modulus check' @[FIPS203, Section 7.2]
316
- * for the public key fails.
317
- * - MLK_ERR_OUT_OF_MEMORY: If MLK_CONFIG_CUSTOM_ALLOC_FREE is
318
- * used and an allocation via MLK_CUSTOM_ALLOC returned NULL.
319
- * - MLK_ERR_RNG_FAIL: Random number generation failed.
320
- *
321
- * Specification: Implements @[FIPS203, Algorithm 20, ML-KEM.Encaps]
322
- *
323
- **************************************************/
294
+ /**
295
+ * Generate ciphertext and shared secret for a given public key.
296
+ *
297
+ * @spec{Implements @[FIPS203, Algorithm 20, ML-KEM.Encaps].}
298
+ *
299
+ * @param[out] ct Output ciphertext, an array of
300
+ * MLKEM{512,768,1024}_CIPHERTEXTBYTES bytes.
301
+ * @param[out] ss Output shared secret, an array of MLKEM_BYTES bytes.
302
+ * @param[in] pk Input public key, an array of
303
+ * MLKEM{512,768,1024}_PUBLICKEYBYTES bytes.
304
+ * @param context Application context. Only present when
305
+ * MLK_CONFIG_CONTEXT_PARAMETER is defined; type set by
306
+ * MLK_CONFIG_CONTEXT_PARAMETER_TYPE.
307
+ *
308
+ * @retval 0 Success.
309
+ * @retval MLK_ERR_FAIL The 'modulus check' @[FIPS203, Section 7.2]
310
+ * for the public key failed.
311
+ * @retval MLK_ERR_OUT_OF_MEMORY MLK_CONFIG_CUSTOM_ALLOC_FREE was used and
312
+ * MLK_CUSTOM_ALLOC returned NULL.
313
+ * @retval MLK_ERR_RNG_FAIL Random number generation failed.
314
+ */
324
315
  MLK_API_QUALIFIER
325
316
  MLK_API_MUST_CHECK_RETURN_VALUE
326
317
  int MLK_API_NAMESPACE(enc)(
@@ -334,28 +325,26 @@ int MLK_API_NAMESPACE(enc)(
334
325
  );
335
326
  #endif /* !MLK_CONFIG_NO_RANDOMIZED_API */
336
327
 
337
- /*************************************************
338
- * Name: crypto_kem_dec
339
- *
340
- * Description: Generates shared secret for given
341
- * cipher text and private key
342
- *
343
- * Arguments: - uint8_t *ss: pointer to output shared secret, an array of
344
- * MLKEM_BYTES bytes.
345
- * - const uint8_t *ct: pointer to input cipher text, an array of
346
- * MLKEM{512,768,1024}_CIPHERTEXTBYTES bytes.
347
- * - const uint8_t *sk: pointer to input private key, an array of
348
- * MLKEM{512,768,1024}_SECRETKEYBYTES bytes.
349
- *
350
- * Returns: - 0 on success
351
- * - MLK_ERR_FAIL: If the 'hash check' @[FIPS203, Section 7.3]
352
- * for the secret key fails.
353
- * - MLK_ERR_OUT_OF_MEMORY: If MLK_CONFIG_CUSTOM_ALLOC_FREE is
354
- * used and an allocation via MLK_CUSTOM_ALLOC returned NULL.
355
- *
356
- * Specification: Implements @[FIPS203, Algorithm 21, ML-KEM.Decaps]
357
- *
358
- **************************************************/
328
+ /**
329
+ * Generate shared secret for a given ciphertext and private key.
330
+ *
331
+ * @spec{Implements @[FIPS203, Algorithm 21, ML-KEM.Decaps].}
332
+ *
333
+ * @param[out] ss Output shared secret, an array of MLKEM_BYTES bytes.
334
+ * @param[in] ct Input ciphertext, an array of
335
+ * MLKEM{512,768,1024}_CIPHERTEXTBYTES bytes.
336
+ * @param[in] sk Input private key, an array of
337
+ * MLKEM{512,768,1024}_SECRETKEYBYTES bytes.
338
+ * @param context Application context. Only present when
339
+ * MLK_CONFIG_CONTEXT_PARAMETER is defined; type set by
340
+ * MLK_CONFIG_CONTEXT_PARAMETER_TYPE.
341
+ *
342
+ * @retval 0 Success.
343
+ * @retval MLK_ERR_FAIL The 'hash check' @[FIPS203, Section 7.3]
344
+ * for the secret key failed.
345
+ * @retval MLK_ERR_OUT_OF_MEMORY MLK_CONFIG_CUSTOM_ALLOC_FREE was used and
346
+ * MLK_CUSTOM_ALLOC returned NULL.
347
+ */
359
348
  MLK_API_QUALIFIER
360
349
  MLK_API_MUST_CHECK_RETURN_VALUE
361
350
  int MLK_API_NAMESPACE(dec)(
@@ -369,23 +358,23 @@ int MLK_API_NAMESPACE(dec)(
369
358
  );
370
359
 
371
360
 
372
- /*************************************************
373
- * Name: crypto_kem_check_pk
361
+ /**
362
+ * Implements modulus check mandated by FIPS 203, i.e., ensures that
363
+ * coefficients are in [0,q-1].
374
364
  *
375
- * Description: Implements modulus check mandated by FIPS 203,
376
- * i.e., ensures that coefficients are in [0,q-1].
365
+ * @spec{Implements @[FIPS203, Section 7.2, 'modulus check'].}
377
366
  *
378
- * Arguments: - const uint8_t *pk: pointer to input public key, an array of
379
- * MLKEM{512,768,1024}_PUBLICKEYBYTES bytes.
367
+ * @param[in] pk Input public key, an array of
368
+ * MLKEM{512,768,1024}_PUBLICKEYBYTES bytes.
369
+ * @param context Application context. Only present when
370
+ * MLK_CONFIG_CONTEXT_PARAMETER is defined; type set by
371
+ * MLK_CONFIG_CONTEXT_PARAMETER_TYPE.
380
372
  *
381
- * Returns: - 0 on success
382
- * - MLK_ERR_FAIL: If the modulus check failed.
383
- * - MLK_ERR_OUT_OF_MEMORY: If MLK_CONFIG_CUSTOM_ALLOC_FREE is
384
- * used and an allocation via MLK_CUSTOM_ALLOC returned NULL.
385
- *
386
- * Specification: Implements @[FIPS203, Section 7.2, 'modulus check']
387
- *
388
- **************************************************/
373
+ * @retval 0 Success.
374
+ * @retval MLK_ERR_FAIL Modulus check failed.
375
+ * @retval MLK_ERR_OUT_OF_MEMORY MLK_CONFIG_CUSTOM_ALLOC_FREE was used and
376
+ * MLK_CUSTOM_ALLOC returned NULL.
377
+ */
389
378
  MLK_API_QUALIFIER
390
379
  MLK_API_MUST_CHECK_RETURN_VALUE
391
380
  int MLK_API_NAMESPACE(check_pk)(
@@ -396,24 +385,23 @@ int MLK_API_NAMESPACE(check_pk)(
396
385
  #endif
397
386
  );
398
387
 
399
- /*************************************************
400
- * Name: crypto_kem_check_sk
401
- *
402
- * Description: Implements public key hash check mandated by FIPS 203,
403
- * i.e., ensures that
404
- * sk[768𝑘+32 ∶ 768𝑘+64] = H(pk)= H(sk[384𝑘 : 768𝑘+32])
405
- *
406
- * Arguments: - const uint8_t *sk: pointer to input private key, an array of
407
- * MLKEM{512,768,1024}_SECRETKEYBYTES bytes.
388
+ /**
389
+ * Implements public key hash check mandated by FIPS 203, i.e., ensures that
390
+ * sk[768𝑘+32 ∶ 768𝑘+64] = H(pk) = H(sk[384𝑘 : 768𝑘+32]).
408
391
  *
409
- * Returns: - 0 on success
410
- * - MLK_ERR_FAIL: If the public key hash check failed.
411
- * - MLK_ERR_OUT_OF_MEMORY: If MLK_CONFIG_CUSTOM_ALLOC_FREE is
412
- * used and an allocation via MLK_CUSTOM_ALLOC returned NULL.
392
+ * @spec{Implements @[FIPS203, Section 7.3, 'hash check'].}
413
393
  *
414
- * Specification: Implements @[FIPS203, Section 7.3, 'hash check']
394
+ * @param[in] sk Input private key, an array of
395
+ * MLKEM{512,768,1024}_SECRETKEYBYTES bytes.
396
+ * @param context Application context. Only present when
397
+ * MLK_CONFIG_CONTEXT_PARAMETER is defined; type set by
398
+ * MLK_CONFIG_CONTEXT_PARAMETER_TYPE.
415
399
  *
416
- **************************************************/
400
+ * @retval 0 Success.
401
+ * @retval MLK_ERR_FAIL Public key hash check failed.
402
+ * @retval MLK_ERR_OUT_OF_MEMORY MLK_CONFIG_CUSTOM_ALLOC_FREE was used and
403
+ * MLK_CUSTOM_ALLOC returned NULL.
404
+ */
417
405
  MLK_API_QUALIFIER
418
406
  MLK_API_MUST_CHECK_RETURN_VALUE
419
407
  int MLK_API_NAMESPACE(check_sk)(
@@ -465,7 +453,6 @@ int MLK_API_NAMESPACE(check_sk)(
465
453
  #undef MLK_API_NAMESPACE
466
454
  #undef MLK_API_MUST_CHECK_RETURN_VALUE
467
455
  #undef MLK_API_QUALIFIER
468
- #undef MLK_API_LEGACY_CONFIG
469
456
 
470
457
  #endif /* MLK_CONFIG_API_NO_SUPERCOP */
471
458
  #endif /* !MLK_CONFIG_API_CONSTANTS_ONLY */
@@ -535,4 +522,6 @@ int MLK_API_NAMESPACE(check_sk)(
535
522
  MLK_MAX3_(MLK_TOTAL_ALLOC_1024_KEYPAIR, MLK_TOTAL_ALLOC_1024_ENCAPS, \
536
523
  MLK_TOTAL_ALLOC_1024_DECAPS)
537
524
 
525
+ #undef MLK_API_LEGACY_CONFIG
526
+
538
527
  #endif /* !MLK_H */
@@ -60,53 +60,59 @@
60
60
 
61
61
  #if defined(MLK_CONFIG_USE_NATIVE_BACKEND_ARITH)
62
62
  #if defined(MLK_SYS_AARCH64)
63
- #include "src/native/aarch64/src/intt.S"
64
- #include "src/native/aarch64/src/ntt.S"
65
- #include "src/native/aarch64/src/poly_mulcache_compute_asm.S"
66
- #include "src/native/aarch64/src/poly_reduce_asm.S"
67
- #include "src/native/aarch64/src/poly_tobytes_asm.S"
68
- #include "src/native/aarch64/src/poly_tomont_asm.S"
69
- #include "src/native/aarch64/src/polyvec_basemul_acc_montgomery_cached_asm_k2.S"
70
- #include "src/native/aarch64/src/polyvec_basemul_acc_montgomery_cached_asm_k3.S"
71
- #include "src/native/aarch64/src/polyvec_basemul_acc_montgomery_cached_asm_k4.S"
72
- #include "src/native/aarch64/src/rej_uniform_asm.S"
63
+ #include "src/native/aarch64/src/intt_aarch64_asm.S"
64
+ #include "src/native/aarch64/src/ntt_aarch64_asm.S"
65
+ #include "src/native/aarch64/src/poly_mulcache_compute_aarch64_asm.S"
66
+ #include "src/native/aarch64/src/poly_reduce_aarch64_asm.S"
67
+ #include "src/native/aarch64/src/poly_tobytes_aarch64_asm.S"
68
+ #include "src/native/aarch64/src/poly_tomont_aarch64_asm.S"
69
+ #include "src/native/aarch64/src/polyvec_basemul_acc_montgomery_cached_k2_aarch64_asm.S"
70
+ #include "src/native/aarch64/src/polyvec_basemul_acc_montgomery_cached_k3_aarch64_asm.S"
71
+ #include "src/native/aarch64/src/polyvec_basemul_acc_montgomery_cached_k4_aarch64_asm.S"
72
+ #include "src/native/aarch64/src/rej_uniform_aarch64_asm.S"
73
73
  #endif /* MLK_SYS_AARCH64 */
74
74
  #if defined(MLK_SYS_X86_64)
75
- #include "src/native/x86_64/src/intt.S"
76
- #include "src/native/x86_64/src/mulcache_compute.S"
77
- #include "src/native/x86_64/src/ntt.S"
78
- #include "src/native/x86_64/src/nttfrombytes.S"
79
- #include "src/native/x86_64/src/ntttobytes.S"
80
- #include "src/native/x86_64/src/nttunpack.S"
81
- #include "src/native/x86_64/src/poly_compress_d10.S"
82
- #include "src/native/x86_64/src/poly_compress_d11.S"
83
- #include "src/native/x86_64/src/poly_compress_d4.S"
84
- #include "src/native/x86_64/src/poly_compress_d5.S"
85
- #include "src/native/x86_64/src/poly_decompress_d10.S"
86
- #include "src/native/x86_64/src/poly_decompress_d11.S"
87
- #include "src/native/x86_64/src/poly_decompress_d4.S"
88
- #include "src/native/x86_64/src/poly_decompress_d5.S"
89
- #include "src/native/x86_64/src/polyvec_basemul_acc_montgomery_cached_asm_k2.S"
90
- #include "src/native/x86_64/src/polyvec_basemul_acc_montgomery_cached_asm_k3.S"
91
- #include "src/native/x86_64/src/polyvec_basemul_acc_montgomery_cached_asm_k4.S"
92
- #include "src/native/x86_64/src/reduce.S"
93
- #include "src/native/x86_64/src/rej_uniform_asm.S"
94
- #include "src/native/x86_64/src/tomont.S"
75
+ #include "src/native/x86_64/src/intt_avx2_asm.S"
76
+ #include "src/native/x86_64/src/ntt_avx2_asm.S"
77
+ #include "src/native/x86_64/src/nttfrombytes_avx2_asm.S"
78
+ #include "src/native/x86_64/src/ntttobytes_avx2_asm.S"
79
+ #include "src/native/x86_64/src/nttunpack_avx2_asm.S"
80
+ #include "src/native/x86_64/src/poly_compress_d10_avx2_asm.S"
81
+ #include "src/native/x86_64/src/poly_compress_d11_avx2_asm.S"
82
+ #include "src/native/x86_64/src/poly_compress_d4_avx2_asm.S"
83
+ #include "src/native/x86_64/src/poly_compress_d5_avx2_asm.S"
84
+ #include "src/native/x86_64/src/poly_decompress_d10_avx2_asm.S"
85
+ #include "src/native/x86_64/src/poly_decompress_d11_avx2_asm.S"
86
+ #include "src/native/x86_64/src/poly_decompress_d4_avx2_asm.S"
87
+ #include "src/native/x86_64/src/poly_decompress_d5_avx2_asm.S"
88
+ #include "src/native/x86_64/src/poly_mulcache_compute_avx2_asm.S"
89
+ #include "src/native/x86_64/src/polyvec_basemul_acc_montgomery_cached_k2_avx2_asm.S"
90
+ #include "src/native/x86_64/src/polyvec_basemul_acc_montgomery_cached_k3_avx2_asm.S"
91
+ #include "src/native/x86_64/src/polyvec_basemul_acc_montgomery_cached_k4_avx2_asm.S"
92
+ #include "src/native/x86_64/src/reduce_avx2_asm.S"
93
+ #include "src/native/x86_64/src/rej_uniform_avx2_asm.S"
94
+ #include "src/native/x86_64/src/tomont_avx2_asm.S"
95
95
  #endif /* MLK_SYS_X86_64 */
96
96
  #if defined(MLK_SYS_RISCV64)
97
97
  #endif
98
+ #if defined(MLK_SYS_PPC64LE)
99
+ #include "src/native/ppc64le/src/intt_ppc_asm.S"
100
+ #include "src/native/ppc64le/src/ntt_ppc_asm.S"
101
+ #include "src/native/ppc64le/src/poly_tomont_ppc_asm.S"
102
+ #include "src/native/ppc64le/src/reduce_ppc_asm.S"
103
+ #endif /* MLK_SYS_PPC64LE */
98
104
  #endif /* MLK_CONFIG_USE_NATIVE_BACKEND_ARITH */
99
105
 
100
106
  #if defined(MLK_CONFIG_USE_NATIVE_BACKEND_FIPS202)
101
107
  #if defined(MLK_SYS_AARCH64)
102
- #include "src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_asm.S"
103
- #include "src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_asm.S"
104
- #include "src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_asm.S"
105
- #include "src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_asm.S"
106
- #include "src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_asm.S"
108
+ #include "src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_aarch64_asm.S"
109
+ #include "src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_aarch64_asm.S"
110
+ #include "src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_aarch64_asm.S"
111
+ #include "src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm.S"
112
+ #include "src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm.S"
107
113
  #endif /* MLK_SYS_AARCH64 */
108
114
  #if defined(MLK_SYS_X86_64)
109
- #include "src/fips202/native/x86_64/src/keccak_f1600_x4_avx2.S"
115
+ #include "src/fips202/native/x86_64/src/keccak_f1600_x4_avx2_asm.S"
110
116
  #endif
111
117
  #if defined(MLK_SYS_ARMV81M_MVE)
112
118
  #include "src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S"
@@ -234,6 +240,8 @@
234
240
  #undef MLK_FIPS202_HEADER_FILE
235
241
  #undef MLK_FREE
236
242
  #undef MLK_INTERNAL_API
243
+ #undef MLK_INTERNAL_DATA_DECLARATION
244
+ #undef MLK_INTERNAL_DATA_DEFINITION
237
245
  #undef MLK_NAMESPACE
238
246
  #undef MLK_NAMESPACE_K
239
247
  #undef MLK_NAMESPACE_PREFIX
@@ -386,8 +394,11 @@
386
394
  #undef MLK_HAVE_INLINE_ASM
387
395
  #undef MLK_INLINE
388
396
  #undef MLK_MUST_CHECK_RETURN_VALUE
397
+ #undef MLK_NOINLINE
389
398
  #undef MLK_RESTRICT
390
399
  #undef MLK_STATIC_TESTABLE
400
+ #undef MLK_SYSV_ABI
401
+ #undef MLK_SYSV_ABI_SUPPORTED
391
402
  #undef MLK_SYS_AARCH64
392
403
  #undef MLK_SYS_AARCH64_EB
393
404
  #undef MLK_SYS_APPLE
@@ -467,11 +478,11 @@
467
478
  #undef MLK_FIPS202_NATIVE_AARCH64_AUTO_H
468
479
  /* mlkem/src/fips202/native/aarch64/src/fips202_native_aarch64.h */
469
480
  #undef MLK_FIPS202_NATIVE_AARCH64_SRC_FIPS202_NATIVE_AARCH64_H
470
- #undef mlk_keccak_f1600_x1_scalar_asm
471
- #undef mlk_keccak_f1600_x1_v84a_asm
472
- #undef mlk_keccak_f1600_x2_v84a_asm
473
- #undef mlk_keccak_f1600_x4_v8a_scalar_hybrid_asm
474
- #undef mlk_keccak_f1600_x4_v8a_v84a_scalar_hybrid_asm
481
+ #undef mlk_keccak_f1600_x1_scalar_aarch64_asm
482
+ #undef mlk_keccak_f1600_x1_v84a_aarch64_asm
483
+ #undef mlk_keccak_f1600_x2_v84a_aarch64_asm
484
+ #undef mlk_keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm
485
+ #undef mlk_keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm
475
486
  #undef mlk_keccakf1600_round_constants
476
487
  /* mlkem/src/fips202/native/aarch64/x1_scalar.h */
477
488
  #undef MLK_FIPS202_AARCH64_NEED_X1_SCALAR
@@ -504,7 +515,7 @@
504
515
  #undef MLK_USE_FIPS202_X4_NATIVE
505
516
  /* mlkem/src/fips202/native/x86_64/src/fips202_native_x86_64.h */
506
517
  #undef MLK_FIPS202_NATIVE_X86_64_SRC_FIPS202_NATIVE_X86_64_H
507
- #undef mlk_keccak_f1600_x4_avx2
518
+ #undef mlk_keccak_f1600_x4_avx2_asm
508
519
  #undef mlk_keccak_rho56
509
520
  #undef mlk_keccak_rho8
510
521
  #undef mlk_keccakf1600_round_constants
@@ -563,16 +574,16 @@
563
574
  #undef mlk_aarch64_ntt_zetas_layer67
564
575
  #undef mlk_aarch64_zetas_mulcache_native
565
576
  #undef mlk_aarch64_zetas_mulcache_twisted_native
566
- #undef mlk_intt_asm
567
- #undef mlk_ntt_asm
568
- #undef mlk_poly_mulcache_compute_asm
569
- #undef mlk_poly_reduce_asm
570
- #undef mlk_poly_tobytes_asm
571
- #undef mlk_poly_tomont_asm
572
- #undef mlk_polyvec_basemul_acc_montgomery_cached_asm_k2
573
- #undef mlk_polyvec_basemul_acc_montgomery_cached_asm_k3
574
- #undef mlk_polyvec_basemul_acc_montgomery_cached_asm_k4
575
- #undef mlk_rej_uniform_asm
577
+ #undef mlk_intt_aarch64_asm
578
+ #undef mlk_ntt_aarch64_asm
579
+ #undef mlk_poly_mulcache_compute_aarch64_asm
580
+ #undef mlk_poly_reduce_aarch64_asm
581
+ #undef mlk_poly_tobytes_aarch64_asm
582
+ #undef mlk_poly_tomont_aarch64_asm
583
+ #undef mlk_polyvec_basemul_acc_montgomery_cached_k2_aarch64_asm
584
+ #undef mlk_polyvec_basemul_acc_montgomery_cached_k3_aarch64_asm
585
+ #undef mlk_polyvec_basemul_acc_montgomery_cached_k4_aarch64_asm
586
+ #undef mlk_rej_uniform_aarch64_asm
576
587
  #undef mlk_rej_uniform_table
577
588
  #endif /* MLK_SYS_AARCH64 */
578
589
  #if defined(MLK_SYS_X86_64)
@@ -603,27 +614,27 @@
603
614
  /* mlkem/src/native/x86_64/src/arith_native_x86_64.h */
604
615
  #undef MLK_AVX2_REJ_UNIFORM_BUFLEN
605
616
  #undef MLK_NATIVE_X86_64_SRC_ARITH_NATIVE_X86_64_H
606
- #undef mlk_invntt_avx2
607
- #undef mlk_ntt_avx2
608
- #undef mlk_nttfrombytes_avx2
609
- #undef mlk_ntttobytes_avx2
610
- #undef mlk_nttunpack_avx2
611
- #undef mlk_poly_compress_d10_avx2
612
- #undef mlk_poly_compress_d11_avx2
613
- #undef mlk_poly_compress_d4_avx2
614
- #undef mlk_poly_compress_d5_avx2
615
- #undef mlk_poly_decompress_d10_avx2
616
- #undef mlk_poly_decompress_d11_avx2
617
- #undef mlk_poly_decompress_d4_avx2
618
- #undef mlk_poly_decompress_d5_avx2
619
- #undef mlk_poly_mulcache_compute_avx2
620
- #undef mlk_polyvec_basemul_acc_montgomery_cached_asm_k2
621
- #undef mlk_polyvec_basemul_acc_montgomery_cached_asm_k3
622
- #undef mlk_polyvec_basemul_acc_montgomery_cached_asm_k4
623
- #undef mlk_reduce_avx2
624
- #undef mlk_rej_uniform_asm
617
+ #undef mlk_invntt_avx2_asm
618
+ #undef mlk_ntt_avx2_asm
619
+ #undef mlk_nttfrombytes_avx2_asm
620
+ #undef mlk_ntttobytes_avx2_asm
621
+ #undef mlk_nttunpack_avx2_asm
622
+ #undef mlk_poly_compress_d10_avx2_asm
623
+ #undef mlk_poly_compress_d11_avx2_asm
624
+ #undef mlk_poly_compress_d4_avx2_asm
625
+ #undef mlk_poly_compress_d5_avx2_asm
626
+ #undef mlk_poly_decompress_d10_avx2_asm
627
+ #undef mlk_poly_decompress_d11_avx2_asm
628
+ #undef mlk_poly_decompress_d4_avx2_asm
629
+ #undef mlk_poly_decompress_d5_avx2_asm
630
+ #undef mlk_poly_mulcache_compute_avx2_asm
631
+ #undef mlk_polyvec_basemul_acc_montgomery_cached_k2_avx2_asm
632
+ #undef mlk_polyvec_basemul_acc_montgomery_cached_k3_avx2_asm
633
+ #undef mlk_polyvec_basemul_acc_montgomery_cached_k4_avx2_asm
634
+ #undef mlk_reduce_avx2_asm
635
+ #undef mlk_rej_uniform_avx2_asm
625
636
  #undef mlk_rej_uniform_table
626
- #undef mlk_tomont_avx2
637
+ #undef mlk_tomont_avx2_asm
627
638
  /* mlkem/src/native/x86_64/src/compress_consts.h */
628
639
  #undef MLK_NATIVE_X86_64_SRC_COMPRESS_CONSTS_H
629
640
  #undef mlk_compress_d10_data
@@ -677,5 +688,38 @@
677
688
  #undef mlk_debug_check_bounds_int16m1
678
689
  #undef mlk_debug_check_bounds_int16m2
679
690
  #endif /* MLK_SYS_RISCV64 */
691
+ #if defined(MLK_SYS_PPC64LE)
692
+ /*
693
+ * Undefine macros from native code (Arith, PPC64LE)
694
+ */
695
+ /* mlkem/src/native/ppc64le/meta.h */
696
+ #undef MLK_ARITH_BACKEND_NAME
697
+ #undef MLK_ARITH_BACKEND_PPC64LE_DEFAULT
698
+ #undef MLK_NATIVE_PPC64LE_META_H
699
+ #undef MLK_USE_NATIVE_INTT
700
+ #undef MLK_USE_NATIVE_NTT
701
+ #undef MLK_USE_NATIVE_POLY_REDUCE
702
+ #undef MLK_USE_NATIVE_POLY_TOMONT
703
+ /* mlkem/src/native/ppc64le/src/arith_native_ppc64le.h */
704
+ #undef MLK_NATIVE_PPC64LE_SRC_ARITH_NATIVE_PPC64LE_H
705
+ #undef mlk_intt_ppc_asm
706
+ #undef mlk_ntt_ppc_asm
707
+ #undef mlk_poly_tomont_ppc_asm
708
+ #undef mlk_reduce_ppc_asm
709
+ /* mlkem/src/native/ppc64le/src/consts.h */
710
+ #undef MLK_NATIVE_PPC64LE_SRC_CONSTS_H
711
+ #undef MLK_PPC_C20159_OFFSET
712
+ #undef MLK_PPC_NQ_OFFSET
713
+ #undef MLK_PPC_N_INV_OFFSET
714
+ #undef MLK_PPC_N_INV_TW_OFFSET
715
+ #undef MLK_PPC_Q_OFFSET
716
+ #undef MLK_PPC_TOMONT_OFFSET
717
+ #undef MLK_PPC_TOMONT_TW_OFFSET
718
+ #undef MLK_PPC_ZETA_INTT_OFFSET
719
+ #undef MLK_PPC_ZETA_INTT_TW_OFFSET
720
+ #undef MLK_PPC_ZETA_NTT_OFFSET
721
+ #undef MLK_PPC_ZETA_NTT_TW_OFFSET
722
+ #undef mlk_ppc_qdata
723
+ #endif /* MLK_SYS_PPC64LE */
680
724
  #endif /* MLK_CONFIG_USE_NATIVE_BACKEND_ARITH */
681
725
  #endif /* !MLK_CONFIG_MONOBUILD_KEEP_SHARED_HEADERS */