pq_crypto 0.6.4 → 0.6.5

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 (91) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +46 -0
  3. data/README.md +5 -0
  4. data/ext/pqcrypto/pqcrypto_version.h +1 -1
  5. data/ext/pqcrypto/vendor/.vendored +4 -4
  6. data/ext/pqcrypto/vendor/mlkem-native/README.md +2 -4
  7. data/ext/pqcrypto/vendor/mlkem-native/RELEASE.md +98 -0
  8. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native.c +8 -7
  9. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native.h +21 -1
  10. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native_asm.S +45 -44
  11. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native_config.h +36 -0
  12. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/common.h +13 -30
  13. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/compress.c +25 -5
  14. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/compress.h +14 -0
  15. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/context.h +42 -0
  16. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/auto.h +20 -12
  17. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_aarch64_asm.S +5 -3
  18. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_aarch64_asm.S +5 -2
  19. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_aarch64_asm.S +5 -2
  20. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm.S +10 -7
  21. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm.S +10 -7
  22. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x1_v84a.h +2 -1
  23. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x2_v84a.h +2 -1
  24. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x4_v8a_scalar.h +5 -0
  25. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x4_v8a_v84a_scalar.h +2 -1
  26. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/mve.h +5 -19
  27. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S +8 -5
  28. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/{state_extract_bytes_x4_mve.S → keccak_f1600_x4_state_extract_bytes_mve.S} +14 -14
  29. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/{state_xor_bytes_x4_mve.S → keccak_f1600_x4_state_xor_bytes_mve.S} +12 -12
  30. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/keccak_f1600_x4_avx2_asm.S +36 -2
  31. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/indcpa.c +22 -0
  32. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/indcpa.h +6 -0
  33. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/kem.c +11 -0
  34. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/kem.h +25 -1
  35. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/meta.h +44 -2
  36. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/aarch64_zetas.c +2 -0
  37. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/arith_native_aarch64.h +11 -10
  38. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{intt_aarch64_asm.S → mlkem_intt_aarch64_asm.S} +16 -9
  39. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{ntt_aarch64_asm.S → mlkem_ntt_aarch64_asm.S} +10 -7
  40. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{poly_mulcache_compute_aarch64_asm.S → mlkem_poly_mulcache_compute_aarch64_asm.S} +6 -3
  41. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{poly_reduce_aarch64_asm.S → mlkem_poly_reduce_aarch64_asm.S} +6 -3
  42. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{poly_tobytes_aarch64_asm.S → mlkem_poly_tobytes_aarch64_asm.S} +12 -5
  43. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{poly_tomont_aarch64_asm.S → mlkem_poly_tomont_aarch64_asm.S} +11 -5
  44. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{polyvec_basemul_acc_montgomery_cached_k2_aarch64_asm.S → mlkem_polyvec_basemul_acc_montgomery_cached_k2_aarch64_asm.S} +6 -3
  45. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{polyvec_basemul_acc_montgomery_cached_k3_aarch64_asm.S → mlkem_polyvec_basemul_acc_montgomery_cached_k3_aarch64_asm.S} +6 -3
  46. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{polyvec_basemul_acc_montgomery_cached_k4_aarch64_asm.S → mlkem_polyvec_basemul_acc_montgomery_cached_k4_aarch64_asm.S} +6 -3
  47. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{rej_uniform_aarch64_asm.S → mlkem_rej_uniform_aarch64_asm.S} +17 -17
  48. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/api.h +21 -8
  49. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/meta.h +1 -1
  50. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/meta.h +4 -0
  51. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/{intt_ppc_asm.S → mlkem_intt_ppc_asm.S} +29 -5
  52. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/{ntt_ppc_asm.S → mlkem_ntt_ppc_asm.S} +22 -1
  53. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/{poly_tomont_ppc_asm.S → mlkem_poly_tomont_ppc_asm.S} +25 -3
  54. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/{reduce_ppc_asm.S → mlkem_reduce_ppc_asm.S} +22 -1
  55. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/meta.h +4 -0
  56. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/arith_native_riscv64.h +4 -0
  57. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_poly.c +6 -2
  58. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/meta.h +25 -5
  59. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/arith_native_x86_64.h +20 -20
  60. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/compress_consts.c +14 -3
  61. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/compress_consts.h +8 -0
  62. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{intt_avx2_asm.S → mlkem_intt_avx2_asm.S} +27 -3
  63. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{ntt_avx2_asm.S → mlkem_ntt_avx2_asm.S} +23 -1
  64. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{nttfrombytes_avx2_asm.S → mlkem_nttfrombytes_avx2_asm.S} +27 -3
  65. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{ntttobytes_avx2_asm.S → mlkem_ntttobytes_avx2_asm.S} +27 -3
  66. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{nttunpack_avx2_asm.S → mlkem_nttunpack_avx2_asm.S} +17 -1
  67. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_compress_d10_avx2_asm.S → mlkem_poly_compress_d10_avx2_asm.S} +34 -3
  68. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_compress_d11_avx2_asm.S → mlkem_poly_compress_d11_avx2_asm.S} +33 -2
  69. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_compress_d4_avx2_asm.S → mlkem_poly_compress_d4_avx2_asm.S} +34 -3
  70. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_compress_d5_avx2_asm.S → mlkem_poly_compress_d5_avx2_asm.S} +33 -2
  71. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_decompress_d10_avx2_asm.S → mlkem_poly_decompress_d10_avx2_asm.S} +32 -3
  72. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_decompress_d11_avx2_asm.S → mlkem_poly_decompress_d11_avx2_asm.S} +32 -2
  73. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_decompress_d4_avx2_asm.S → mlkem_poly_decompress_d4_avx2_asm.S} +32 -3
  74. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_decompress_d5_avx2_asm.S → mlkem_poly_decompress_d5_avx2_asm.S} +32 -2
  75. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_mulcache_compute_avx2_asm.S → mlkem_poly_mulcache_compute_avx2_asm.S} +29 -1
  76. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{polyvec_basemul_acc_montgomery_cached_k2_avx2_asm.S → mlkem_polyvec_basemul_acc_montgomery_cached_k2_avx2_asm.S} +35 -1
  77. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{polyvec_basemul_acc_montgomery_cached_k3_avx2_asm.S → mlkem_polyvec_basemul_acc_montgomery_cached_k3_avx2_asm.S} +35 -1
  78. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{polyvec_basemul_acc_montgomery_cached_k4_avx2_asm.S → mlkem_polyvec_basemul_acc_montgomery_cached_k4_avx2_asm.S} +35 -1
  79. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{reduce_avx2_asm.S → mlkem_reduce_avx2_asm.S} +17 -1
  80. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{rej_uniform_avx2_asm.S → mlkem_rej_uniform_avx2_asm.S} +40 -7
  81. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{tomont_avx2_asm.S → mlkem_tomont_avx2_asm.S} +20 -3
  82. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly.c +7 -2
  83. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly.h +6 -0
  84. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly_k.c +25 -4
  85. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly_k.h +33 -4
  86. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sampling.c +4 -0
  87. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sampling.h +4 -0
  88. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sys.h +19 -1
  89. data/lib/pq_crypto/version.rb +1 -1
  90. data/script/vendor_libs.rb +3 -3
  91. metadata +40 -42
@@ -99,6 +99,7 @@ __contract__(
99
99
  return (int16_t)r;
100
100
  }
101
101
 
102
+ #if !defined(MLK_CONFIG_NO_KEYPAIR_API)
102
103
  #define mlk_poly_tomont MLK_NAMESPACE(poly_tomont)
103
104
  /**
104
105
  * In-place conversion of all coefficients of a polynomial from the normal
@@ -119,6 +120,7 @@ __contract__(
119
120
  assigns(memory_slice(r, sizeof(mlk_poly)))
120
121
  ensures(array_abs_bound(r->coeffs, 0, MLKEM_N, MLKEM_Q))
121
122
  );
123
+ #endif /* !MLK_CONFIG_NO_KEYPAIR_API */
122
124
 
123
125
  #define mlk_poly_mulcache_compute MLK_NAMESPACE(poly_mulcache_compute)
124
126
  /**
@@ -207,6 +209,7 @@ __contract__(
207
209
  assigns(memory_slice(r, sizeof(mlk_poly)))
208
210
  );
209
211
 
212
+ #if !defined(MLK_CONFIG_NO_DECAPS_API)
210
213
  #define mlk_poly_sub MLK_NAMESPACE(poly_sub)
211
214
  /**
212
215
  * Subtract two polynomials; no modular reduction is performed.
@@ -231,6 +234,7 @@ __contract__(
231
234
  ensures(forall(k, 0, MLKEM_N, r->coeffs[k] == old(*r).coeffs[k] - b->coeffs[k]))
232
235
  assigns(memory_slice(r, sizeof(mlk_poly)))
233
236
  );
237
+ #endif /* !MLK_CONFIG_NO_DECAPS_API */
234
238
 
235
239
  #define mlk_poly_ntt MLK_NAMESPACE(poly_ntt)
236
240
  /**
@@ -260,6 +264,7 @@ __contract__(
260
264
  ensures(array_abs_bound(r->coeffs, 0, MLKEM_N, MLK_NTT_BOUND))
261
265
  );
262
266
 
267
+ #if !defined(MLK_CONFIG_NO_ENCAPS_API) || !defined(MLK_CONFIG_NO_DECAPS_API)
263
268
  #define mlk_poly_invntt_tomont MLK_NAMESPACE(poly_invntt_tomont)
264
269
  /**
265
270
  * Compute the inverse negacyclic number-theoretic transform (NTT) of a
@@ -286,5 +291,6 @@ __contract__(
286
291
  assigns(memory_slice(r, sizeof(mlk_poly)))
287
292
  ensures(array_abs_bound(r->coeffs, 0, MLKEM_N, MLK_INVNTT_BOUND))
288
293
  );
294
+ #endif /* !MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API */
289
295
 
290
296
  #endif /* !MLK_POLY_H */
@@ -39,6 +39,7 @@
39
39
  MLK_ADD_PARAM_SET(mlk_polyvec_basemul_acc_montgomery_cached_c)
40
40
  /* End of parameter set namespacing */
41
41
 
42
+ #if !defined(MLK_CONFIG_NO_ENCAPS_API) || !defined(MLK_CONFIG_NO_DECAPS_API)
42
43
  /* Reference: `polyvec_compress()` in the reference implementation @[REF]
43
44
  * - In contrast to the reference implementation, we assume
44
45
  * unsigned canonical coefficients here.
@@ -56,7 +57,9 @@ void mlk_polyvec_compress_du(uint8_t r[MLKEM_POLYVECCOMPRESSEDBYTES_DU],
56
57
  mlk_poly_compress_du(r + i * MLKEM_POLYCOMPRESSEDBYTES_DU, &a->vec[i]);
57
58
  }
58
59
  }
60
+ #endif /* !MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API */
59
61
 
62
+ #if !defined(MLK_CONFIG_NO_DECAPS_API)
60
63
  /* Reference: `polyvec_decompress()` in the reference implementation @[REF]. */
61
64
  MLK_INTERNAL_API
62
65
  void mlk_polyvec_decompress_du(mlk_polyvec *r,
@@ -70,7 +73,9 @@ void mlk_polyvec_decompress_du(mlk_polyvec *r,
70
73
 
71
74
  mlk_assert_bound_2d(r->vec, MLKEM_K, MLKEM_N, 0, MLKEM_Q);
72
75
  }
76
+ #endif /* !MLK_CONFIG_NO_DECAPS_API */
73
77
 
78
+ #if !defined(MLK_CONFIG_NO_KEYPAIR_API) || !defined(MLK_CONFIG_NO_ENCAPS_API)
74
79
  /* Reference: `polyvec_tobytes()` in the reference implementation @[REF].
75
80
  * - In contrast to the reference implementation, we assume
76
81
  * unsigned canonical coefficients here.
@@ -92,7 +97,9 @@ void mlk_polyvec_tobytes(uint8_t r[MLKEM_POLYVECBYTES], const mlk_polyvec *a)
92
97
  mlk_poly_tobytes(&r[i * MLKEM_POLYBYTES], &a->vec[i]);
93
98
  }
94
99
  }
100
+ #endif /* !MLK_CONFIG_NO_KEYPAIR_API || !MLK_CONFIG_NO_ENCAPS_API */
95
101
 
102
+ #if !defined(MLK_CONFIG_NO_ENCAPS_API) || !defined(MLK_CONFIG_NO_DECAPS_API)
96
103
  /* Reference: `polyvec_frombytes()` in the reference implementation @[REF]. */
97
104
  MLK_INTERNAL_API
98
105
  void mlk_polyvec_frombytes(mlk_polyvec *r, const uint8_t a[MLKEM_POLYVECBYTES])
@@ -105,6 +112,7 @@ void mlk_polyvec_frombytes(mlk_polyvec *r, const uint8_t a[MLKEM_POLYVECBYTES])
105
112
 
106
113
  mlk_assert_bound_2d(r->vec, MLKEM_K, MLKEM_N, 0, MLKEM_UINT12_LIMIT);
107
114
  }
115
+ #endif /* !MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API */
108
116
 
109
117
  /* Reference: `polyvec_ntt()` in the reference implementation @[REF]. */
110
118
  MLK_INTERNAL_API
@@ -124,6 +132,7 @@ void mlk_polyvec_ntt(mlk_polyvec *r)
124
132
  * while the reference implementation normalizes at
125
133
  * the end. This allows us to drop a call to `poly_reduce()`
126
134
  * from the base multiplication. */
135
+ #if !defined(MLK_CONFIG_NO_ENCAPS_API) || !defined(MLK_CONFIG_NO_DECAPS_API)
127
136
  MLK_INTERNAL_API
128
137
  void mlk_polyvec_invntt_tomont(mlk_polyvec *r)
129
138
  {
@@ -135,6 +144,7 @@ void mlk_polyvec_invntt_tomont(mlk_polyvec *r)
135
144
 
136
145
  mlk_assert_abs_bound_2d(r->vec, MLKEM_K, MLKEM_N, MLK_INVNTT_BOUND);
137
146
  }
147
+ #endif /* !MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API */
138
148
 
139
149
  /* Reference: `polyvec_basemul_acc_montgomery()` in the
140
150
  * reference implementation @[REF].
@@ -279,6 +289,7 @@ void mlk_polyvec_add(mlk_polyvec *r, const mlk_polyvec *b)
279
289
  }
280
290
  }
281
291
 
292
+ #if !defined(MLK_CONFIG_NO_KEYPAIR_API)
282
293
  /* Reference: `polyvec_tomont()` in the reference implementation @[REF]. */
283
294
  MLK_INTERNAL_API
284
295
  void mlk_polyvec_tomont(mlk_polyvec *r)
@@ -291,6 +302,7 @@ void mlk_polyvec_tomont(mlk_polyvec *r)
291
302
 
292
303
  mlk_assert_abs_bound_2d(r->vec, MLKEM_K, MLKEM_N, MLKEM_Q);
293
304
  }
305
+ #endif /* !MLK_CONFIG_NO_KEYPAIR_API */
294
306
 
295
307
 
296
308
  /**
@@ -325,6 +337,9 @@ __contract__(
325
337
  #endif
326
338
  }
327
339
 
340
+ #if !defined(MLK_CONFIG_NO_KEYPAIR_API) || \
341
+ (MLKEM_ETA1 == MLKEM_ETA2 && (!defined(MLK_CONFIG_NO_ENCAPS_API) || \
342
+ !defined(MLK_CONFIG_NO_DECAPS_API)))
328
343
  /* Reference: Does not exist in the reference implementation @[REF].
329
344
  * - This implements a x4-batched version of `poly_getnoise_eta1()`
330
345
  * from the reference implementation, to leverage
@@ -378,8 +393,11 @@ void mlk_poly_getnoise_eta1_4x(mlk_poly *r0, mlk_poly *r1, mlk_poly *r2,
378
393
  mlk_zeroize(buf, sizeof(buf));
379
394
  mlk_zeroize(extkey, sizeof(extkey));
380
395
  }
396
+ #endif /* !MLK_CONFIG_NO_KEYPAIR_API || (MLKEM_ETA1 == MLKEM_ETA2 && \
397
+ (!MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API)) */
381
398
 
382
- #if MLKEM_K == 2 || MLKEM_K == 4
399
+ #if (MLKEM_K == 2 || MLKEM_K == 4) && \
400
+ (!defined(MLK_CONFIG_NO_ENCAPS_API) || !defined(MLK_CONFIG_NO_DECAPS_API))
383
401
  /**
384
402
  * Given an array of uniformly random bytes, compute a polynomial with
385
403
  * coefficients distributed according to a centered binomial distribution
@@ -431,9 +449,11 @@ void mlk_poly_getnoise_eta2(mlk_poly *r, const uint8_t seed[MLKEM_SYMBYTES],
431
449
  mlk_zeroize(buf, sizeof(buf));
432
450
  mlk_zeroize(extkey, sizeof(extkey));
433
451
  }
434
- #endif /* MLKEM_K == 2 || MLKEM_K == 4 */
452
+ #endif /* (MLKEM_K == 2 || MLKEM_K == 4) && (!MLK_CONFIG_NO_ENCAPS_API || \
453
+ !MLK_CONFIG_NO_DECAPS_API) */
435
454
 
436
- #if MLKEM_K == 2
455
+ #if MLKEM_K == 2 && \
456
+ (!defined(MLK_CONFIG_NO_ENCAPS_API) || !defined(MLK_CONFIG_NO_DECAPS_API))
437
457
  /* Reference: Does not exist in the reference implementation @[REF].
438
458
  * - This implements a x4-batched version of `poly_getnoise_eta1()`
439
459
  * and `poly_getnoise_eta2()` from the reference implementation,
@@ -492,7 +512,8 @@ void mlk_poly_getnoise_eta1122_4x(mlk_poly *r0, mlk_poly *r1, mlk_poly *r2,
492
512
  mlk_zeroize(buf, sizeof(buf));
493
513
  mlk_zeroize(extkey, sizeof(extkey));
494
514
  }
495
- #endif /* MLKEM_K == 2 */
515
+ #endif /* MLKEM_K == 2 && (!MLK_CONFIG_NO_ENCAPS_API || \
516
+ !MLK_CONFIG_NO_DECAPS_API) */
496
517
 
497
518
  /* To facilitate single-compilation-unit (SCU) builds, undefine all macros.
498
519
  * Don't modify by hand -- this is auto-generated by scripts/autogen. */
@@ -46,6 +46,7 @@ typedef struct
46
46
  mlk_poly_mulcache vec[MLKEM_K]; /**< Per-component caches. */
47
47
  } MLK_ALIGN mlk_polyvec_mulcache;
48
48
 
49
+ #if !defined(MLK_CONFIG_NO_ENCAPS_API) || !defined(MLK_CONFIG_NO_DECAPS_API)
49
50
  #define mlk_poly_compress_du MLK_NAMESPACE_K(poly_compress_du)
50
51
  /**
51
52
  * Compression (du bits) and subsequent serialization of a polynomial.
@@ -75,7 +76,9 @@ __contract__(
75
76
  #error "Invalid value of MLKEM_DU"
76
77
  #endif
77
78
  }
79
+ #endif /* !MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API */
78
80
 
81
+ #if !defined(MLK_CONFIG_NO_DECAPS_API)
79
82
  #define mlk_poly_decompress_du MLK_NAMESPACE_K(poly_decompress_du)
80
83
  /**
81
84
  * De-serialization and subsequent decompression (du bits) of a polynomial;
@@ -108,7 +111,9 @@ __contract__(
108
111
  #error "Invalid value of MLKEM_DU"
109
112
  #endif
110
113
  }
114
+ #endif /* !MLK_CONFIG_NO_DECAPS_API */
111
115
 
116
+ #if !defined(MLK_CONFIG_NO_ENCAPS_API) || !defined(MLK_CONFIG_NO_DECAPS_API)
112
117
  #define mlk_poly_compress_dv MLK_NAMESPACE_K(poly_compress_dv)
113
118
  /**
114
119
  * Compression (dv bits) and subsequent serialization of a polynomial.
@@ -138,8 +143,10 @@ __contract__(
138
143
  #error "Invalid value of MLKEM_DV"
139
144
  #endif
140
145
  }
146
+ #endif /* !MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API */
141
147
 
142
148
 
149
+ #if !defined(MLK_CONFIG_NO_DECAPS_API)
143
150
  #define mlk_poly_decompress_dv MLK_NAMESPACE_K(poly_decompress_dv)
144
151
  /**
145
152
  * De-serialization and subsequent decompression (dv bits) of a polynomial;
@@ -172,7 +179,9 @@ __contract__(
172
179
  #error "Invalid value of MLKEM_DV"
173
180
  #endif
174
181
  }
182
+ #endif /* !MLK_CONFIG_NO_DECAPS_API */
175
183
 
184
+ #if !defined(MLK_CONFIG_NO_ENCAPS_API) || !defined(MLK_CONFIG_NO_DECAPS_API)
176
185
  #define mlk_polyvec_compress_du MLK_NAMESPACE_K(polyvec_compress_du)
177
186
  /**
178
187
  * Compress and serialize a vector of polynomials.
@@ -196,7 +205,9 @@ __contract__(
196
205
  array_bound(a->vec[k0].coeffs, 0, MLKEM_N, 0, MLKEM_Q)))
197
206
  assigns(memory_slice(r, MLKEM_POLYVECCOMPRESSEDBYTES_DU))
198
207
  );
208
+ #endif /* !MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API */
199
209
 
210
+ #if !defined(MLK_CONFIG_NO_DECAPS_API)
200
211
  #define mlk_polyvec_decompress_du MLK_NAMESPACE_K(polyvec_decompress_du)
201
212
  /**
202
213
  * De-serialize and decompress a vector of polynomials; approximate inverse
@@ -221,7 +232,9 @@ __contract__(
221
232
  ensures(forall(k0, 0, MLKEM_K,
222
233
  array_bound(r->vec[k0].coeffs, 0, MLKEM_N, 0, MLKEM_Q)))
223
234
  );
235
+ #endif /* !MLK_CONFIG_NO_DECAPS_API */
224
236
 
237
+ #if !defined(MLK_CONFIG_NO_KEYPAIR_API) || !defined(MLK_CONFIG_NO_ENCAPS_API)
225
238
  #define mlk_polyvec_tobytes MLK_NAMESPACE_K(polyvec_tobytes)
226
239
  /**
227
240
  * Serialize a vector of polynomials.
@@ -243,7 +256,9 @@ __contract__(
243
256
  array_bound(a->vec[k0].coeffs, 0, MLKEM_N, 0, MLKEM_Q)))
244
257
  assigns(memory_slice(r, MLKEM_POLYVECBYTES))
245
258
  );
259
+ #endif /* !MLK_CONFIG_NO_KEYPAIR_API || !MLK_CONFIG_NO_ENCAPS_API */
246
260
 
261
+ #if !defined(MLK_CONFIG_NO_ENCAPS_API) || !defined(MLK_CONFIG_NO_DECAPS_API)
247
262
  #define mlk_polyvec_frombytes MLK_NAMESPACE_K(polyvec_frombytes)
248
263
  /**
249
264
  * De-serialize a vector of polynomials; inverse of mlk_polyvec_tobytes.
@@ -265,6 +280,7 @@ __contract__(
265
280
  ensures(forall(k0, 0, MLKEM_K,
266
281
  array_bound(r->vec[k0].coeffs, 0, MLKEM_N, 0, MLKEM_UINT12_LIMIT)))
267
282
  );
283
+ #endif /* !MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API */
268
284
 
269
285
  #define mlk_polyvec_ntt MLK_NAMESPACE_K(polyvec_ntt)
270
286
  /**
@@ -292,6 +308,7 @@ __contract__(
292
308
  array_abs_bound(r->vec[j].coeffs, 0, MLKEM_N, MLK_NTT_BOUND)))
293
309
  );
294
310
 
311
+ #if !defined(MLK_CONFIG_NO_ENCAPS_API) || !defined(MLK_CONFIG_NO_DECAPS_API)
295
312
  #define mlk_polyvec_invntt_tomont MLK_NAMESPACE_K(polyvec_invntt_tomont)
296
313
  /**
297
314
  * Apply inverse NTT to all elements of a vector of polynomials and multiply
@@ -316,6 +333,7 @@ __contract__(
316
333
  ensures(forall(j, 0, MLKEM_K,
317
334
  array_abs_bound(r->vec[j].coeffs, 0, MLKEM_N, MLK_INVNTT_BOUND)))
318
335
  );
336
+ #endif /* !MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API */
319
337
 
320
338
  #define mlk_polyvec_basemul_acc_montgomery_cached \
321
339
  MLK_NAMESPACE_K(polyvec_basemul_acc_montgomery_cached)
@@ -442,6 +460,7 @@ __contract__(
442
460
  assigns(memory_slice(r, sizeof(mlk_polyvec)))
443
461
  );
444
462
 
463
+ #if !defined(MLK_CONFIG_NO_KEYPAIR_API)
445
464
  #define mlk_polyvec_tomont MLK_NAMESPACE_K(polyvec_tomont)
446
465
  /**
447
466
  * In-place conversion of all coefficients of a polynomial vector from the
@@ -463,7 +482,11 @@ __contract__(
463
482
  ensures(forall(j, 0, MLKEM_K,
464
483
  array_abs_bound(r->vec[j].coeffs, 0, MLKEM_N, MLKEM_Q)))
465
484
  );
485
+ #endif /* !MLK_CONFIG_NO_KEYPAIR_API */
466
486
 
487
+ #if !defined(MLK_CONFIG_NO_KEYPAIR_API) || \
488
+ (MLKEM_ETA1 == MLKEM_ETA2 && (!defined(MLK_CONFIG_NO_ENCAPS_API) || \
489
+ !defined(MLK_CONFIG_NO_DECAPS_API)))
467
490
  #define mlk_poly_getnoise_eta1_4x MLK_NAMESPACE_K(poly_getnoise_eta1_4x)
468
491
  /**
469
492
  * Batch sample four polynomials deterministically from a seed and nonces,
@@ -515,8 +538,11 @@ __contract__(
515
538
  */
516
539
  #define mlk_poly_getnoise_eta2_4x mlk_poly_getnoise_eta1_4x
517
540
  #endif /* MLKEM_ETA1 == MLKEM_ETA2 */
541
+ #endif /* !MLK_CONFIG_NO_KEYPAIR_API || (MLKEM_ETA1 == MLKEM_ETA2 && \
542
+ (!MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API)) */
518
543
 
519
- #if MLKEM_K == 2 || MLKEM_K == 4
544
+ #if (MLKEM_K == 2 || MLKEM_K == 4) && \
545
+ (!defined(MLK_CONFIG_NO_ENCAPS_API) || !defined(MLK_CONFIG_NO_DECAPS_API))
520
546
  #define mlk_poly_getnoise_eta2 MLK_NAMESPACE_K(poly_getnoise_eta2)
521
547
  /**
522
548
  * Sample a polynomial deterministically from a seed and a nonce, with
@@ -541,9 +567,11 @@ __contract__(
541
567
  assigns(memory_slice(r, sizeof(mlk_poly)))
542
568
  ensures(array_abs_bound(r->coeffs, 0, MLKEM_N, MLKEM_ETA2 + 1))
543
569
  );
544
- #endif /* MLKEM_K == 2 || MLKEM_K == 4 */
570
+ #endif /* (MLKEM_K == 2 || MLKEM_K == 4) && (!MLK_CONFIG_NO_ENCAPS_API || \
571
+ !MLK_CONFIG_NO_DECAPS_API) */
545
572
 
546
- #if MLKEM_K == 2
573
+ #if MLKEM_K == 2 && \
574
+ (!defined(MLK_CONFIG_NO_ENCAPS_API) || !defined(MLK_CONFIG_NO_DECAPS_API))
547
575
  #define mlk_poly_getnoise_eta1122_4x MLK_NAMESPACE_K(poly_getnoise_eta1122_4x)
548
576
  /**
549
577
  * Batch sample four polynomials deterministically from a seed and nonces,
@@ -588,6 +616,7 @@ __contract__(
588
616
  && array_abs_bound(r2->coeffs,0, MLKEM_N, MLKEM_ETA2 + 1)
589
617
  && array_abs_bound(r3->coeffs,0, MLKEM_N, MLKEM_ETA2 + 1))
590
618
  );
591
- #endif /* MLKEM_K == 2 */
619
+ #endif /* MLKEM_K == 2 && (!MLK_CONFIG_NO_ENCAPS_API || \
620
+ !MLK_CONFIG_NO_DECAPS_API) */
592
621
 
593
622
  #endif /* !MLK_POLY_K_H */
@@ -251,6 +251,8 @@ void mlk_poly_rej_uniform(mlk_poly *entry, uint8_t seed[MLKEM_SYMBYTES + 2])
251
251
  mlk_zeroize(buf, sizeof(buf));
252
252
  }
253
253
 
254
+ #if defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_ETA1 == 2 || \
255
+ !defined(MLK_CONFIG_NO_ENCAPS_API) || !defined(MLK_CONFIG_NO_DECAPS_API)
254
256
  /**
255
257
  * Load 4 bytes into a 32-bit integer in little-endian order.
256
258
  *
@@ -300,6 +302,8 @@ void mlk_poly_cbd2(mlk_poly *r, const uint8_t buf[2 * MLKEM_N / 4])
300
302
  }
301
303
  }
302
304
  }
305
+ #endif /* MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_ETA1 == 2 || \
306
+ !MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API */
303
307
 
304
308
  #if defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_ETA1 == 3
305
309
  /**
@@ -19,6 +19,8 @@
19
19
  #include "common.h"
20
20
  #include "poly.h"
21
21
 
22
+ #if defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_ETA1 == 2 || \
23
+ !defined(MLK_CONFIG_NO_ENCAPS_API) || !defined(MLK_CONFIG_NO_DECAPS_API)
22
24
  #define mlk_poly_cbd2 MLK_NAMESPACE(poly_cbd2)
23
25
  /**
24
26
  * Given an array of uniformly random bytes, compute a polynomial with
@@ -32,6 +34,8 @@
32
34
  */
33
35
  MLK_INTERNAL_API
34
36
  void mlk_poly_cbd2(mlk_poly *r, const uint8_t buf[2 * MLKEM_N / 4]);
37
+ #endif /* MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_ETA1 == 2 || \
38
+ !MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API */
35
39
 
36
40
  #if defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_ETA1 == 3
37
41
  #define mlk_poly_cbd3 MLK_NAMESPACE(poly_cbd3)
@@ -37,6 +37,21 @@
37
37
  #define MLK_SYS_AARCH64
38
38
  #endif
39
39
 
40
+ /* Check if the AArch64 compilation target supports NEON (Advanced SIMD).
41
+ *
42
+ * Some compilers also define __ARM_NEON__, but __ARM_NEON is the most reliable
43
+ * signal. Specifically, clang on Apple appears to keep __ARM_NEON__ set even if
44
+ * -march=armv8-a+nosimd is set.
45
+ *
46
+ * gcc 4.8 -- the first gcc version introducing Neon support -- sets neither
47
+ * __ARM_NEON nor __ARM_NEON__; in fact, there is no preprocessor signal that
48
+ * Neon is enabled. If you use gcc 4.8, you should set __ARM_NEON manually.
49
+ * gcc 4.9 onwards do set __ARM_NEON.
50
+ */
51
+ #if defined(MLK_SYS_AARCH64) && defined(__ARM_NEON)
52
+ #define MLK_SYS_AARCH64_NEON
53
+ #endif
54
+
40
55
  /* Check if we're running on an AArch64 big endian system. */
41
56
  #if defined(__AARCH64EB__)
42
57
  #define MLK_SYS_AARCH64_EB
@@ -275,7 +290,10 @@ typedef enum
275
290
  /* x86_64 */
276
291
  MLK_SYS_CAP_AVX2,
277
292
  /* AArch64 */
278
- MLK_SYS_CAP_SHA3
293
+ MLK_SYS_CAP_NEON,
294
+ MLK_SYS_CAP_SHA3,
295
+ /* Armv8.1-M */
296
+ MLK_SYS_CAP_MVE
279
297
  } mlk_sys_cap;
280
298
 
281
299
  #if !defined(MLK_CONFIG_CUSTOM_CAPABILITY_FUNC)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PQCrypto
4
- VERSION = "0.6.4"
4
+ VERSION = "0.6.5"
5
5
  end
@@ -13,9 +13,9 @@ MANIFEST_PATH = File.join(VENDOR_DIR, ".vendored")
13
13
  PINS = {
14
14
  mlkem: {
15
15
  repo: "https://github.com/pq-code-package/mlkem-native.git",
16
- ref: "v1.2.0",
17
- commit: "0ba906cb14b1c241476134d7403a811b382ca498",
18
- tree_sha256: "cc78ed199b8c65abe68635b23a13b294d5a8deb20c8bc7b4d76590c00976bb2d",
16
+ ref: "v1.3.0",
17
+ commit: "398050c877ff4353c96305c6434b63528accfc37",
18
+ tree_sha256: "3cd7af93cde256f73ce5ffde3ac3accd31e4361616e275f1bf1c39d462c2149e",
19
19
  target: "mlkem-native",
20
20
  source_dir: "mlkem"
21
21
  },
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pq_crypto
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.4
4
+ version: 0.6.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roman Haydarov
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2026-07-19 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: rake
@@ -210,6 +209,7 @@ files:
210
209
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/common.h
211
210
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/compress.c
212
211
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/compress.h
212
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/context.h
213
213
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/debug.c
214
214
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/debug.h
215
215
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202.c
@@ -237,9 +237,9 @@ files:
237
237
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/fips202_native_armv81m.h
238
238
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S
239
239
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.c
240
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_state_extract_bytes_mve.S
241
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_state_xor_bytes_mve.S
240
242
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccakf1600_round_constants.c
241
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/state_extract_bytes_x4_mve.S
242
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/state_xor_bytes_x4_mve.S
243
243
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/auto.h
244
244
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/keccak_f1600_x4_avx2.h
245
245
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/fips202_native_x86_64.h
@@ -253,16 +253,16 @@ files:
253
253
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/meta.h
254
254
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/aarch64_zetas.c
255
255
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/arith_native_aarch64.h
256
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/intt_aarch64_asm.S
257
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/ntt_aarch64_asm.S
258
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_mulcache_compute_aarch64_asm.S
259
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_reduce_aarch64_asm.S
260
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_tobytes_aarch64_asm.S
261
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_tomont_aarch64_asm.S
262
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/polyvec_basemul_acc_montgomery_cached_k2_aarch64_asm.S
263
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/polyvec_basemul_acc_montgomery_cached_k3_aarch64_asm.S
264
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/polyvec_basemul_acc_montgomery_cached_k4_aarch64_asm.S
265
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/rej_uniform_aarch64_asm.S
256
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/mlkem_intt_aarch64_asm.S
257
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/mlkem_ntt_aarch64_asm.S
258
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/mlkem_poly_mulcache_compute_aarch64_asm.S
259
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/mlkem_poly_reduce_aarch64_asm.S
260
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/mlkem_poly_tobytes_aarch64_asm.S
261
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/mlkem_poly_tomont_aarch64_asm.S
262
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k2_aarch64_asm.S
263
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k3_aarch64_asm.S
264
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k4_aarch64_asm.S
265
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/mlkem_rej_uniform_aarch64_asm.S
266
266
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/rej_uniform_table.c
267
267
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/api.h
268
268
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/meta.h
@@ -271,10 +271,10 @@ files:
271
271
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/arith_native_ppc64le.h
272
272
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/consts.c
273
273
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/consts.h
274
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/intt_ppc_asm.S
275
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/ntt_ppc_asm.S
276
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/poly_tomont_ppc_asm.S
277
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/reduce_ppc_asm.S
274
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/mlkem_intt_ppc_asm.S
275
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/mlkem_ntt_ppc_asm.S
276
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/mlkem_poly_tomont_ppc_asm.S
277
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/mlkem_reduce_ppc_asm.S
278
278
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/README.md
279
279
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/meta.h
280
280
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/arith_native_riscv64.h
@@ -291,27 +291,27 @@ files:
291
291
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/compress_consts.h
292
292
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/consts.c
293
293
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/consts.h
294
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/intt_avx2_asm.S
295
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/ntt_avx2_asm.S
296
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/nttfrombytes_avx2_asm.S
297
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/ntttobytes_avx2_asm.S
298
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/nttunpack_avx2_asm.S
299
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d10_avx2_asm.S
300
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d11_avx2_asm.S
301
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d4_avx2_asm.S
302
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d5_avx2_asm.S
303
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d10_avx2_asm.S
304
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d11_avx2_asm.S
305
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d4_avx2_asm.S
306
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d5_avx2_asm.S
307
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_mulcache_compute_avx2_asm.S
308
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/polyvec_basemul_acc_montgomery_cached_k2_avx2_asm.S
309
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/polyvec_basemul_acc_montgomery_cached_k3_avx2_asm.S
310
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/polyvec_basemul_acc_montgomery_cached_k4_avx2_asm.S
311
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/reduce_avx2_asm.S
312
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/rej_uniform_avx2_asm.S
294
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/mlkem_intt_avx2_asm.S
295
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/mlkem_ntt_avx2_asm.S
296
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/mlkem_nttfrombytes_avx2_asm.S
297
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/mlkem_ntttobytes_avx2_asm.S
298
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/mlkem_nttunpack_avx2_asm.S
299
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/mlkem_poly_compress_d10_avx2_asm.S
300
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/mlkem_poly_compress_d11_avx2_asm.S
301
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/mlkem_poly_compress_d4_avx2_asm.S
302
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/mlkem_poly_compress_d5_avx2_asm.S
303
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/mlkem_poly_decompress_d10_avx2_asm.S
304
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/mlkem_poly_decompress_d11_avx2_asm.S
305
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/mlkem_poly_decompress_d4_avx2_asm.S
306
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/mlkem_poly_decompress_d5_avx2_asm.S
307
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/mlkem_poly_mulcache_compute_avx2_asm.S
308
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k2_avx2_asm.S
309
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k3_avx2_asm.S
310
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k4_avx2_asm.S
311
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/mlkem_reduce_avx2_asm.S
312
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/mlkem_rej_uniform_avx2_asm.S
313
+ - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/mlkem_tomont_avx2_asm.S
313
314
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/rej_uniform_table.c
314
- - ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/tomont_avx2_asm.S
315
315
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/params.h
316
316
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly.c
317
317
  - ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly.h
@@ -348,7 +348,6 @@ metadata:
348
348
  homepage_uri: https://github.com/roman-haidarov/pq_crypto
349
349
  source_code_uri: https://github.com/roman-haidarov/pq_crypto/tree/main
350
350
  changelog_uri: https://github.com/roman-haidarov/pq_crypto/blob/main/CHANGELOG.md
351
- post_install_message:
352
351
  rdoc_options: []
353
352
  require_paths:
354
353
  - lib
@@ -363,8 +362,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
363
362
  - !ruby/object:Gem::Version
364
363
  version: '0'
365
364
  requirements: []
366
- rubygems_version: 3.4.22
367
- signing_key:
365
+ rubygems_version: 3.6.7
368
366
  specification_version: 4
369
367
  summary: Primitive-first post-quantum cryptography for Ruby
370
368
  test_files: []