pq_crypto 0.4.2 → 0.5.1

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 (410) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +27 -2
  3. data/CHANGELOG.md +59 -0
  4. data/GET_STARTED.md +21 -16
  5. data/README.md +26 -0
  6. data/SECURITY.md +22 -16
  7. data/ext/pqcrypto/extconf.rb +183 -99
  8. data/ext/pqcrypto/mldsa_api.h +1 -118
  9. data/ext/pqcrypto/mlkem_api.h +1 -42
  10. data/ext/pqcrypto/pq_externalmu.c +88 -216
  11. data/ext/pqcrypto/pqcrypto_native_api.h +132 -0
  12. data/ext/pqcrypto/pqcrypto_ruby_secure.c +234 -12
  13. data/ext/pqcrypto/pqcrypto_secure.c +429 -334
  14. data/ext/pqcrypto/pqcrypto_secure.h +13 -45
  15. data/ext/pqcrypto/pqcrypto_version.h +1 -1
  16. data/ext/pqcrypto/randombytes.h +9 -0
  17. data/ext/pqcrypto/vendor/.vendored +12 -5
  18. data/ext/pqcrypto/vendor/mldsa-native/BUILDING.md +105 -0
  19. data/ext/pqcrypto/vendor/mldsa-native/LICENSE +286 -0
  20. data/ext/pqcrypto/vendor/mldsa-native/META.yml +24 -0
  21. data/ext/pqcrypto/vendor/mldsa-native/README.md +221 -0
  22. data/ext/pqcrypto/vendor/mldsa-native/SECURITY.md +8 -0
  23. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native.c +721 -0
  24. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native.h +975 -0
  25. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native_asm.S +724 -0
  26. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native_config.h +723 -0
  27. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/cbmc.h +166 -0
  28. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/common.h +321 -0
  29. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/ct.c +21 -0
  30. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/ct.h +385 -0
  31. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/debug.c +73 -0
  32. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/debug.h +130 -0
  33. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202.c +277 -0
  34. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202.h +244 -0
  35. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202x4.c +182 -0
  36. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202x4.h +117 -0
  37. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/keccakf1600.c +438 -0
  38. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/keccakf1600.h +105 -0
  39. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/auto.h +71 -0
  40. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/fips202_native_aarch64.h +62 -0
  41. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_asm.S +376 -0
  42. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_asm.S +204 -0
  43. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_asm.S +259 -0
  44. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_asm.S +1077 -0
  45. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_asm.S +987 -0
  46. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccakf1600_round_constants.c +41 -0
  47. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x1_scalar.h +26 -0
  48. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x1_v84a.h +35 -0
  49. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x2_v84a.h +37 -0
  50. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x4_v8a_scalar.h +27 -0
  51. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x4_v8a_v84a_scalar.h +36 -0
  52. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/api.h +69 -0
  53. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/README.md +10 -0
  54. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/mve.h +32 -0
  55. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/fips202_native_armv81m.h +20 -0
  56. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S +638 -0
  57. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.c +136 -0
  58. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccakf1600_round_constants.c +52 -0
  59. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/auto.h +29 -0
  60. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/KeccakP_1600_times4_SIMD256.c +488 -0
  61. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/KeccakP_1600_times4_SIMD256.h +16 -0
  62. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/xkcp.h +31 -0
  63. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/meta.h +247 -0
  64. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/aarch64_zetas.c +231 -0
  65. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/arith_native_aarch64.h +150 -0
  66. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/intt.S +753 -0
  67. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l4.S +129 -0
  68. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l5.S +145 -0
  69. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l7.S +177 -0
  70. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/ntt.S +653 -0
  71. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/pointwise_montgomery.S +79 -0
  72. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_caddq_asm.S +53 -0
  73. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_chknorm_asm.S +55 -0
  74. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_decompose_32_asm.S +85 -0
  75. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_decompose_88_asm.S +85 -0
  76. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_use_hint_32_asm.S +102 -0
  77. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_use_hint_88_asm.S +110 -0
  78. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_17_asm.S +72 -0
  79. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_19_asm.S +69 -0
  80. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_table.c +40 -0
  81. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_asm.S +189 -0
  82. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta2_asm.S +135 -0
  83. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta4_asm.S +128 -0
  84. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta_table.c +543 -0
  85. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_table.c +62 -0
  86. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/api.h +649 -0
  87. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/meta.h +23 -0
  88. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/meta.h +315 -0
  89. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/arith_native_x86_64.h +124 -0
  90. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/consts.c +157 -0
  91. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/consts.h +27 -0
  92. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/intt.S +2311 -0
  93. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/ntt.S +2383 -0
  94. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/nttunpack.S +239 -0
  95. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise.S +131 -0
  96. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l4.S +139 -0
  97. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l5.S +155 -0
  98. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l7.S +187 -0
  99. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_caddq_avx2.c +61 -0
  100. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_chknorm_avx2.c +52 -0
  101. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_decompose_32_avx2.c +155 -0
  102. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_decompose_88_avx2.c +155 -0
  103. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_use_hint_32_avx2.c +102 -0
  104. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_use_hint_88_avx2.c +104 -0
  105. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/polyz_unpack_17_avx2.c +91 -0
  106. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/polyz_unpack_19_avx2.c +93 -0
  107. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_avx2.c +126 -0
  108. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_eta2_avx2.c +155 -0
  109. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_eta4_avx2.c +139 -0
  110. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_table.c +160 -0
  111. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/packing.c +293 -0
  112. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/packing.h +224 -0
  113. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/params.h +77 -0
  114. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly.c +991 -0
  115. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly.h +393 -0
  116. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly_kl.c +946 -0
  117. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly_kl.h +360 -0
  118. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec.c +877 -0
  119. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec.h +725 -0
  120. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/randombytes.h +26 -0
  121. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/reduce.h +139 -0
  122. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/rounding.h +249 -0
  123. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/sign.c +1511 -0
  124. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/sign.h +806 -0
  125. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/symmetric.h +68 -0
  126. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/sys.h +268 -0
  127. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/zetas.inc +55 -0
  128. data/ext/pqcrypto/vendor/mlkem-native/BUILDING.md +104 -0
  129. data/ext/pqcrypto/vendor/mlkem-native/LICENSE +294 -0
  130. data/ext/pqcrypto/vendor/mlkem-native/META.yml +30 -0
  131. data/ext/pqcrypto/vendor/mlkem-native/README.md +223 -0
  132. data/ext/pqcrypto/vendor/mlkem-native/RELEASE.md +86 -0
  133. data/ext/pqcrypto/vendor/mlkem-native/SECURITY.md +8 -0
  134. data/ext/pqcrypto/vendor/mlkem-native/mlkem/README.md +23 -0
  135. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native.c +660 -0
  136. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native.h +538 -0
  137. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native_asm.S +681 -0
  138. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native_config.h +709 -0
  139. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/cbmc.h +174 -0
  140. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/common.h +274 -0
  141. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/compress.c +717 -0
  142. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/compress.h +688 -0
  143. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/debug.c +64 -0
  144. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/debug.h +128 -0
  145. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202.c +251 -0
  146. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202.h +158 -0
  147. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202x4.c +208 -0
  148. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202x4.h +80 -0
  149. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/keccakf1600.c +463 -0
  150. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/keccakf1600.h +98 -0
  151. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/auto.h +70 -0
  152. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/fips202_native_aarch64.h +69 -0
  153. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_asm.S +375 -0
  154. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_asm.S +203 -0
  155. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_asm.S +258 -0
  156. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_asm.S +1076 -0
  157. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_asm.S +986 -0
  158. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccakf1600_round_constants.c +46 -0
  159. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x1_scalar.h +25 -0
  160. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x1_v84a.h +34 -0
  161. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x2_v84a.h +35 -0
  162. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x4_v8a_scalar.h +26 -0
  163. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x4_v8a_v84a_scalar.h +35 -0
  164. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/api.h +117 -0
  165. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/README.md +10 -0
  166. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/mve.h +79 -0
  167. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/fips202_native_armv81m.h +35 -0
  168. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S +667 -0
  169. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.c +40 -0
  170. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccakf1600_round_constants.c +51 -0
  171. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/state_extract_bytes_x4_mve.S +290 -0
  172. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/state_xor_bytes_x4_mve.S +314 -0
  173. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/auto.h +28 -0
  174. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/keccak_f1600_x4_avx2.h +33 -0
  175. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/fips202_native_x86_64.h +41 -0
  176. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/keccak_f1600_x4_avx2.S +451 -0
  177. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/keccakf1600_constants.c +51 -0
  178. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/indcpa.c +622 -0
  179. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/indcpa.h +156 -0
  180. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/kem.c +446 -0
  181. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/kem.h +326 -0
  182. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/README.md +16 -0
  183. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/meta.h +122 -0
  184. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/aarch64_zetas.c +174 -0
  185. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/arith_native_aarch64.h +177 -0
  186. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/intt.S +628 -0
  187. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/ntt.S +562 -0
  188. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_mulcache_compute_asm.S +127 -0
  189. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_reduce_asm.S +150 -0
  190. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_tobytes_asm.S +117 -0
  191. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_tomont_asm.S +98 -0
  192. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/polyvec_basemul_acc_montgomery_cached_asm_k2.S +261 -0
  193. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/polyvec_basemul_acc_montgomery_cached_asm_k3.S +314 -0
  194. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/polyvec_basemul_acc_montgomery_cached_asm_k4.S +368 -0
  195. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/rej_uniform_asm.S +226 -0
  196. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/rej_uniform_table.c +542 -0
  197. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/api.h +637 -0
  198. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/meta.h +25 -0
  199. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/README.md +11 -0
  200. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/meta.h +128 -0
  201. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/arith_native_riscv64.h +45 -0
  202. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_debug.c +81 -0
  203. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_debug.h +145 -0
  204. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_izetas.inc +27 -0
  205. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_poly.c +805 -0
  206. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_zetas.inc +27 -0
  207. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_zetas_basemul.inc +39 -0
  208. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/README.md +4 -0
  209. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/meta.h +304 -0
  210. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/arith_native_x86_64.h +309 -0
  211. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/compress_consts.c +94 -0
  212. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/compress_consts.h +45 -0
  213. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/consts.c +102 -0
  214. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/consts.h +25 -0
  215. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/intt.S +719 -0
  216. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/mulcache_compute.S +90 -0
  217. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/ntt.S +639 -0
  218. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/nttfrombytes.S +193 -0
  219. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/ntttobytes.S +181 -0
  220. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/nttunpack.S +174 -0
  221. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d10.S +382 -0
  222. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d11.S +448 -0
  223. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d4.S +163 -0
  224. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d5.S +220 -0
  225. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d10.S +228 -0
  226. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d11.S +277 -0
  227. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d4.S +180 -0
  228. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d5.S +192 -0
  229. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/polyvec_basemul_acc_montgomery_cached_asm_k2.S +502 -0
  230. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/polyvec_basemul_acc_montgomery_cached_asm_k3.S +750 -0
  231. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/polyvec_basemul_acc_montgomery_cached_asm_k4.S +998 -0
  232. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/reduce.S +218 -0
  233. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/rej_uniform_asm.S +103 -0
  234. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/rej_uniform_table.c +544 -0
  235. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/tomont.S +155 -0
  236. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/params.h +76 -0
  237. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly.c +572 -0
  238. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly.h +317 -0
  239. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly_k.c +502 -0
  240. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly_k.h +668 -0
  241. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/randombytes.h +60 -0
  242. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sampling.c +362 -0
  243. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sampling.h +118 -0
  244. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/symmetric.h +70 -0
  245. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sys.h +260 -0
  246. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/verify.c +20 -0
  247. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/verify.h +464 -0
  248. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/zetas.inc +30 -0
  249. data/lib/pq_crypto/hybrid_kem.rb +10 -1
  250. data/lib/pq_crypto/version.rb +1 -1
  251. data/lib/pq_crypto.rb +5 -1
  252. data/script/vendor_libs.rb +228 -154
  253. metadata +236 -160
  254. data/ext/pqcrypto/vendor/pqclean/common/aes.c +0 -639
  255. data/ext/pqcrypto/vendor/pqclean/common/aes.h +0 -64
  256. data/ext/pqcrypto/vendor/pqclean/common/compat.h +0 -73
  257. data/ext/pqcrypto/vendor/pqclean/common/crypto_declassify.h +0 -7
  258. data/ext/pqcrypto/vendor/pqclean/common/fips202.c +0 -928
  259. data/ext/pqcrypto/vendor/pqclean/common/fips202.h +0 -166
  260. data/ext/pqcrypto/vendor/pqclean/common/keccak2x/feat.S +0 -168
  261. data/ext/pqcrypto/vendor/pqclean/common/keccak2x/fips202x2.c +0 -684
  262. data/ext/pqcrypto/vendor/pqclean/common/keccak2x/fips202x2.h +0 -60
  263. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/KeccakP-1600-times4-SIMD256.c +0 -1028
  264. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/KeccakP-1600-times4-SnP.h +0 -50
  265. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/KeccakP-1600-unrolling.macros +0 -198
  266. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/Makefile +0 -8
  267. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/Makefile.Microsoft_nmake +0 -8
  268. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/SIMD256-config.h +0 -3
  269. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/align.h +0 -34
  270. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/brg_endian.h +0 -142
  271. data/ext/pqcrypto/vendor/pqclean/common/nistseedexpander.c +0 -101
  272. data/ext/pqcrypto/vendor/pqclean/common/nistseedexpander.h +0 -39
  273. data/ext/pqcrypto/vendor/pqclean/common/randombytes.c +0 -355
  274. data/ext/pqcrypto/vendor/pqclean/common/randombytes.h +0 -27
  275. data/ext/pqcrypto/vendor/pqclean/common/sha2.c +0 -769
  276. data/ext/pqcrypto/vendor/pqclean/common/sha2.h +0 -173
  277. data/ext/pqcrypto/vendor/pqclean/common/sp800-185.c +0 -156
  278. data/ext/pqcrypto/vendor/pqclean/common/sp800-185.h +0 -27
  279. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/LICENSE +0 -5
  280. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/Makefile +0 -19
  281. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/Makefile.Microsoft_nmake +0 -23
  282. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/api.h +0 -18
  283. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/cbd.c +0 -83
  284. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/cbd.h +0 -11
  285. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/indcpa.c +0 -327
  286. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/indcpa.h +0 -22
  287. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/kem.c +0 -164
  288. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/kem.h +0 -23
  289. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/ntt.c +0 -146
  290. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/ntt.h +0 -14
  291. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/params.h +0 -36
  292. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/poly.c +0 -311
  293. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/poly.h +0 -37
  294. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/polyvec.c +0 -198
  295. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/polyvec.h +0 -26
  296. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/reduce.c +0 -41
  297. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/reduce.h +0 -13
  298. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/symmetric-shake.c +0 -71
  299. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/symmetric.h +0 -30
  300. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/verify.c +0 -67
  301. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/verify.h +0 -13
  302. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/LICENSE +0 -5
  303. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/Makefile +0 -19
  304. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/Makefile.Microsoft_nmake +0 -23
  305. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/api.h +0 -18
  306. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/cbd.c +0 -108
  307. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/cbd.h +0 -11
  308. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/indcpa.c +0 -327
  309. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/indcpa.h +0 -22
  310. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/kem.c +0 -164
  311. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/kem.h +0 -23
  312. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/ntt.c +0 -146
  313. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/ntt.h +0 -14
  314. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/params.h +0 -36
  315. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/poly.c +0 -299
  316. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/poly.h +0 -37
  317. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/polyvec.c +0 -188
  318. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/polyvec.h +0 -26
  319. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/reduce.c +0 -41
  320. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/reduce.h +0 -13
  321. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/symmetric-shake.c +0 -71
  322. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/symmetric.h +0 -30
  323. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/verify.c +0 -67
  324. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/verify.h +0 -13
  325. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/LICENSE +0 -5
  326. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/Makefile +0 -19
  327. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/Makefile.Microsoft_nmake +0 -23
  328. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/api.h +0 -18
  329. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/cbd.c +0 -83
  330. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/cbd.h +0 -11
  331. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/indcpa.c +0 -327
  332. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/indcpa.h +0 -22
  333. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/kem.c +0 -164
  334. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/kem.h +0 -23
  335. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/ntt.c +0 -146
  336. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/ntt.h +0 -14
  337. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/params.h +0 -36
  338. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/poly.c +0 -299
  339. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/poly.h +0 -37
  340. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/polyvec.c +0 -188
  341. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/polyvec.h +0 -26
  342. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/reduce.c +0 -41
  343. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/reduce.h +0 -13
  344. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/symmetric-shake.c +0 -71
  345. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/symmetric.h +0 -30
  346. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/verify.c +0 -67
  347. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/verify.h +0 -13
  348. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/LICENSE +0 -5
  349. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/Makefile +0 -19
  350. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/Makefile.Microsoft_nmake +0 -23
  351. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/api.h +0 -50
  352. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/ntt.c +0 -98
  353. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/ntt.h +0 -10
  354. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/packing.c +0 -261
  355. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/packing.h +0 -31
  356. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/params.h +0 -44
  357. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/poly.c +0 -848
  358. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/poly.h +0 -52
  359. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/polyvec.c +0 -415
  360. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/polyvec.h +0 -65
  361. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/reduce.c +0 -69
  362. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/reduce.h +0 -17
  363. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/rounding.c +0 -98
  364. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/rounding.h +0 -14
  365. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/sign.c +0 -407
  366. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/sign.h +0 -47
  367. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/symmetric-shake.c +0 -26
  368. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/symmetric.h +0 -34
  369. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/LICENSE +0 -5
  370. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/Makefile +0 -19
  371. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/Makefile.Microsoft_nmake +0 -23
  372. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/api.h +0 -50
  373. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/ntt.c +0 -98
  374. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/ntt.h +0 -10
  375. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/packing.c +0 -261
  376. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/packing.h +0 -31
  377. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/params.h +0 -44
  378. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/poly.c +0 -799
  379. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/poly.h +0 -52
  380. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/polyvec.c +0 -415
  381. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/polyvec.h +0 -65
  382. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/reduce.c +0 -69
  383. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/reduce.h +0 -17
  384. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/rounding.c +0 -92
  385. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/rounding.h +0 -14
  386. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/sign.c +0 -407
  387. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/sign.h +0 -47
  388. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/symmetric-shake.c +0 -26
  389. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/symmetric.h +0 -34
  390. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/LICENSE +0 -5
  391. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/Makefile +0 -19
  392. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/Makefile.Microsoft_nmake +0 -23
  393. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/api.h +0 -50
  394. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/ntt.c +0 -98
  395. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/ntt.h +0 -10
  396. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/packing.c +0 -261
  397. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/packing.h +0 -31
  398. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/params.h +0 -44
  399. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/poly.c +0 -823
  400. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/poly.h +0 -52
  401. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/polyvec.c +0 -415
  402. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/polyvec.h +0 -65
  403. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/reduce.c +0 -69
  404. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/reduce.h +0 -17
  405. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/rounding.c +0 -92
  406. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/rounding.h +0 -14
  407. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/sign.c +0 -407
  408. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/sign.h +0 -47
  409. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/symmetric-shake.c +0 -26
  410. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/symmetric.h +0 -34
@@ -0,0 +1,277 @@
1
+ /*
2
+ * Copyright (c) The mlkem-native project authors
3
+ * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT
4
+ */
5
+
6
+ /* References
7
+ * ==========
8
+ *
9
+ * - [REF_AVX2]
10
+ * CRYSTALS-Kyber optimized AVX2 implementation
11
+ * Bos, Ducas, Kiltz, Lepoint, Lyubashevsky, Schanck, Schwabe, Seiler, Stehlé
12
+ * https://github.com/pq-crystals/kyber/tree/main/avx2
13
+ */
14
+
15
+ /*
16
+ * This file is derived from the public domain
17
+ * AVX2 Kyber implementation @[REF_AVX2].
18
+ */
19
+
20
+ /*************************************************
21
+ * Name: mlk_poly_decompress_d11_avx2
22
+ *
23
+ * Description: Decompression of a polynomial from 11 bits per coefficient.
24
+ *
25
+ * Arguments: - int16_t *r: pointer to output polynomial
26
+ * - const uint8_t *a: pointer to input byte array
27
+ * (of length MLKEM_POLYCOMPRESSEDBYTES_D11)
28
+ * - const uint8_t *data: pointer to constants
29
+ * (shufbidx[0:32], srlvdidx[32:64],
30
+ * srlvqidx[64:96], shift[96:128])
31
+ **************************************************/
32
+
33
+ #include "../../../common.h"
34
+ #if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \
35
+ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \
36
+ (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 4)
37
+
38
+ /*
39
+ * WARNING: This file is auto-derived from the mlkem-native source file
40
+ * dev/x86_64/src/poly_decompress_d11.S using scripts/simpasm. Do not modify it directly.
41
+ */
42
+
43
+ #if defined(__ELF__)
44
+ .section .note.GNU-stack,"",@progbits
45
+ #endif
46
+
47
+ .text
48
+ .balign 4
49
+ .global MLK_ASM_NAMESPACE(poly_decompress_d11_avx2)
50
+ MLK_ASM_FN_SYMBOL(poly_decompress_d11_avx2)
51
+
52
+ .cfi_startproc
53
+ movl $0xd010d01, %eax # imm = 0xD010D01
54
+ vmovd %eax, %xmm0
55
+ vpbroadcastd %xmm0, %ymm0
56
+ movl $0x7ff07ff0, %eax # imm = 0x7FF07FF0
57
+ vmovd %eax, %xmm1
58
+ vpbroadcastd %xmm1, %ymm1
59
+ vmovdqa (%rdx), %ymm2
60
+ vmovdqa 0x20(%rdx), %ymm3
61
+ vmovdqa 0x40(%rdx), %ymm4
62
+ vmovdqa 0x60(%rdx), %ymm5
63
+ vmovdqu (%rsi), %xmm6
64
+ vmovd 0x10(%rsi), %xmm7
65
+ vpinsrw $0x2, 0x14(%rsi), %xmm7, %xmm7
66
+ vinserti128 $0x1, %xmm7, %ymm6, %ymm6
67
+ vpermq $0x94, %ymm6, %ymm6 # ymm6 = ymm6[0,1,1,2]
68
+ vpshufb %ymm2, %ymm6, %ymm6
69
+ vpsrlvd %ymm3, %ymm6, %ymm6
70
+ vpsrlvq %ymm4, %ymm6, %ymm6
71
+ vpmullw %ymm5, %ymm6, %ymm6
72
+ vpsrlw $0x1, %ymm6, %ymm6
73
+ vpand %ymm1, %ymm6, %ymm6
74
+ vpmulhrsw %ymm0, %ymm6, %ymm6
75
+ vmovdqu %ymm6, (%rdi)
76
+ vmovdqu 0x16(%rsi), %xmm6
77
+ vmovd 0x26(%rsi), %xmm7
78
+ vpinsrw $0x2, 0x2a(%rsi), %xmm7, %xmm7
79
+ vinserti128 $0x1, %xmm7, %ymm6, %ymm6
80
+ vpermq $0x94, %ymm6, %ymm6 # ymm6 = ymm6[0,1,1,2]
81
+ vpshufb %ymm2, %ymm6, %ymm6
82
+ vpsrlvd %ymm3, %ymm6, %ymm6
83
+ vpsrlvq %ymm4, %ymm6, %ymm6
84
+ vpmullw %ymm5, %ymm6, %ymm6
85
+ vpsrlw $0x1, %ymm6, %ymm6
86
+ vpand %ymm1, %ymm6, %ymm6
87
+ vpmulhrsw %ymm0, %ymm6, %ymm6
88
+ vmovdqu %ymm6, 0x20(%rdi)
89
+ vmovdqu 0x2c(%rsi), %xmm6
90
+ vmovd 0x3c(%rsi), %xmm7
91
+ vpinsrw $0x2, 0x40(%rsi), %xmm7, %xmm7
92
+ vinserti128 $0x1, %xmm7, %ymm6, %ymm6
93
+ vpermq $0x94, %ymm6, %ymm6 # ymm6 = ymm6[0,1,1,2]
94
+ vpshufb %ymm2, %ymm6, %ymm6
95
+ vpsrlvd %ymm3, %ymm6, %ymm6
96
+ vpsrlvq %ymm4, %ymm6, %ymm6
97
+ vpmullw %ymm5, %ymm6, %ymm6
98
+ vpsrlw $0x1, %ymm6, %ymm6
99
+ vpand %ymm1, %ymm6, %ymm6
100
+ vpmulhrsw %ymm0, %ymm6, %ymm6
101
+ vmovdqu %ymm6, 0x40(%rdi)
102
+ vmovdqu 0x42(%rsi), %xmm6
103
+ vmovd 0x52(%rsi), %xmm7
104
+ vpinsrw $0x2, 0x56(%rsi), %xmm7, %xmm7
105
+ vinserti128 $0x1, %xmm7, %ymm6, %ymm6
106
+ vpermq $0x94, %ymm6, %ymm6 # ymm6 = ymm6[0,1,1,2]
107
+ vpshufb %ymm2, %ymm6, %ymm6
108
+ vpsrlvd %ymm3, %ymm6, %ymm6
109
+ vpsrlvq %ymm4, %ymm6, %ymm6
110
+ vpmullw %ymm5, %ymm6, %ymm6
111
+ vpsrlw $0x1, %ymm6, %ymm6
112
+ vpand %ymm1, %ymm6, %ymm6
113
+ vpmulhrsw %ymm0, %ymm6, %ymm6
114
+ vmovdqu %ymm6, 0x60(%rdi)
115
+ vmovdqu 0x58(%rsi), %xmm6
116
+ vmovd 0x68(%rsi), %xmm7
117
+ vpinsrw $0x2, 0x6c(%rsi), %xmm7, %xmm7
118
+ vinserti128 $0x1, %xmm7, %ymm6, %ymm6
119
+ vpermq $0x94, %ymm6, %ymm6 # ymm6 = ymm6[0,1,1,2]
120
+ vpshufb %ymm2, %ymm6, %ymm6
121
+ vpsrlvd %ymm3, %ymm6, %ymm6
122
+ vpsrlvq %ymm4, %ymm6, %ymm6
123
+ vpmullw %ymm5, %ymm6, %ymm6
124
+ vpsrlw $0x1, %ymm6, %ymm6
125
+ vpand %ymm1, %ymm6, %ymm6
126
+ vpmulhrsw %ymm0, %ymm6, %ymm6
127
+ vmovdqu %ymm6, 0x80(%rdi)
128
+ vmovdqu 0x6e(%rsi), %xmm6
129
+ vmovd 0x7e(%rsi), %xmm7
130
+ vpinsrw $0x2, 0x82(%rsi), %xmm7, %xmm7
131
+ vinserti128 $0x1, %xmm7, %ymm6, %ymm6
132
+ vpermq $0x94, %ymm6, %ymm6 # ymm6 = ymm6[0,1,1,2]
133
+ vpshufb %ymm2, %ymm6, %ymm6
134
+ vpsrlvd %ymm3, %ymm6, %ymm6
135
+ vpsrlvq %ymm4, %ymm6, %ymm6
136
+ vpmullw %ymm5, %ymm6, %ymm6
137
+ vpsrlw $0x1, %ymm6, %ymm6
138
+ vpand %ymm1, %ymm6, %ymm6
139
+ vpmulhrsw %ymm0, %ymm6, %ymm6
140
+ vmovdqu %ymm6, 0xa0(%rdi)
141
+ vmovdqu 0x84(%rsi), %xmm6
142
+ vmovd 0x94(%rsi), %xmm7
143
+ vpinsrw $0x2, 0x98(%rsi), %xmm7, %xmm7
144
+ vinserti128 $0x1, %xmm7, %ymm6, %ymm6
145
+ vpermq $0x94, %ymm6, %ymm6 # ymm6 = ymm6[0,1,1,2]
146
+ vpshufb %ymm2, %ymm6, %ymm6
147
+ vpsrlvd %ymm3, %ymm6, %ymm6
148
+ vpsrlvq %ymm4, %ymm6, %ymm6
149
+ vpmullw %ymm5, %ymm6, %ymm6
150
+ vpsrlw $0x1, %ymm6, %ymm6
151
+ vpand %ymm1, %ymm6, %ymm6
152
+ vpmulhrsw %ymm0, %ymm6, %ymm6
153
+ vmovdqu %ymm6, 0xc0(%rdi)
154
+ vmovdqu 0x9a(%rsi), %xmm6
155
+ vmovd 0xaa(%rsi), %xmm7
156
+ vpinsrw $0x2, 0xae(%rsi), %xmm7, %xmm7
157
+ vinserti128 $0x1, %xmm7, %ymm6, %ymm6
158
+ vpermq $0x94, %ymm6, %ymm6 # ymm6 = ymm6[0,1,1,2]
159
+ vpshufb %ymm2, %ymm6, %ymm6
160
+ vpsrlvd %ymm3, %ymm6, %ymm6
161
+ vpsrlvq %ymm4, %ymm6, %ymm6
162
+ vpmullw %ymm5, %ymm6, %ymm6
163
+ vpsrlw $0x1, %ymm6, %ymm6
164
+ vpand %ymm1, %ymm6, %ymm6
165
+ vpmulhrsw %ymm0, %ymm6, %ymm6
166
+ vmovdqu %ymm6, 0xe0(%rdi)
167
+ vmovdqu 0xb0(%rsi), %xmm6
168
+ vmovd 0xc0(%rsi), %xmm7
169
+ vpinsrw $0x2, 0xc4(%rsi), %xmm7, %xmm7
170
+ vinserti128 $0x1, %xmm7, %ymm6, %ymm6
171
+ vpermq $0x94, %ymm6, %ymm6 # ymm6 = ymm6[0,1,1,2]
172
+ vpshufb %ymm2, %ymm6, %ymm6
173
+ vpsrlvd %ymm3, %ymm6, %ymm6
174
+ vpsrlvq %ymm4, %ymm6, %ymm6
175
+ vpmullw %ymm5, %ymm6, %ymm6
176
+ vpsrlw $0x1, %ymm6, %ymm6
177
+ vpand %ymm1, %ymm6, %ymm6
178
+ vpmulhrsw %ymm0, %ymm6, %ymm6
179
+ vmovdqu %ymm6, 0x100(%rdi)
180
+ vmovdqu 0xc6(%rsi), %xmm6
181
+ vmovd 0xd6(%rsi), %xmm7
182
+ vpinsrw $0x2, 0xda(%rsi), %xmm7, %xmm7
183
+ vinserti128 $0x1, %xmm7, %ymm6, %ymm6
184
+ vpermq $0x94, %ymm6, %ymm6 # ymm6 = ymm6[0,1,1,2]
185
+ vpshufb %ymm2, %ymm6, %ymm6
186
+ vpsrlvd %ymm3, %ymm6, %ymm6
187
+ vpsrlvq %ymm4, %ymm6, %ymm6
188
+ vpmullw %ymm5, %ymm6, %ymm6
189
+ vpsrlw $0x1, %ymm6, %ymm6
190
+ vpand %ymm1, %ymm6, %ymm6
191
+ vpmulhrsw %ymm0, %ymm6, %ymm6
192
+ vmovdqu %ymm6, 0x120(%rdi)
193
+ vmovdqu 0xdc(%rsi), %xmm6
194
+ vmovd 0xec(%rsi), %xmm7
195
+ vpinsrw $0x2, 0xf0(%rsi), %xmm7, %xmm7
196
+ vinserti128 $0x1, %xmm7, %ymm6, %ymm6
197
+ vpermq $0x94, %ymm6, %ymm6 # ymm6 = ymm6[0,1,1,2]
198
+ vpshufb %ymm2, %ymm6, %ymm6
199
+ vpsrlvd %ymm3, %ymm6, %ymm6
200
+ vpsrlvq %ymm4, %ymm6, %ymm6
201
+ vpmullw %ymm5, %ymm6, %ymm6
202
+ vpsrlw $0x1, %ymm6, %ymm6
203
+ vpand %ymm1, %ymm6, %ymm6
204
+ vpmulhrsw %ymm0, %ymm6, %ymm6
205
+ vmovdqu %ymm6, 0x140(%rdi)
206
+ vmovdqu 0xf2(%rsi), %xmm6
207
+ vmovd 0x102(%rsi), %xmm7
208
+ vpinsrw $0x2, 0x106(%rsi), %xmm7, %xmm7
209
+ vinserti128 $0x1, %xmm7, %ymm6, %ymm6
210
+ vpermq $0x94, %ymm6, %ymm6 # ymm6 = ymm6[0,1,1,2]
211
+ vpshufb %ymm2, %ymm6, %ymm6
212
+ vpsrlvd %ymm3, %ymm6, %ymm6
213
+ vpsrlvq %ymm4, %ymm6, %ymm6
214
+ vpmullw %ymm5, %ymm6, %ymm6
215
+ vpsrlw $0x1, %ymm6, %ymm6
216
+ vpand %ymm1, %ymm6, %ymm6
217
+ vpmulhrsw %ymm0, %ymm6, %ymm6
218
+ vmovdqu %ymm6, 0x160(%rdi)
219
+ vmovdqu 0x108(%rsi), %xmm6
220
+ vmovd 0x118(%rsi), %xmm7
221
+ vpinsrw $0x2, 0x11c(%rsi), %xmm7, %xmm7
222
+ vinserti128 $0x1, %xmm7, %ymm6, %ymm6
223
+ vpermq $0x94, %ymm6, %ymm6 # ymm6 = ymm6[0,1,1,2]
224
+ vpshufb %ymm2, %ymm6, %ymm6
225
+ vpsrlvd %ymm3, %ymm6, %ymm6
226
+ vpsrlvq %ymm4, %ymm6, %ymm6
227
+ vpmullw %ymm5, %ymm6, %ymm6
228
+ vpsrlw $0x1, %ymm6, %ymm6
229
+ vpand %ymm1, %ymm6, %ymm6
230
+ vpmulhrsw %ymm0, %ymm6, %ymm6
231
+ vmovdqu %ymm6, 0x180(%rdi)
232
+ vmovdqu 0x11e(%rsi), %xmm6
233
+ vmovd 0x12e(%rsi), %xmm7
234
+ vpinsrw $0x2, 0x132(%rsi), %xmm7, %xmm7
235
+ vinserti128 $0x1, %xmm7, %ymm6, %ymm6
236
+ vpermq $0x94, %ymm6, %ymm6 # ymm6 = ymm6[0,1,1,2]
237
+ vpshufb %ymm2, %ymm6, %ymm6
238
+ vpsrlvd %ymm3, %ymm6, %ymm6
239
+ vpsrlvq %ymm4, %ymm6, %ymm6
240
+ vpmullw %ymm5, %ymm6, %ymm6
241
+ vpsrlw $0x1, %ymm6, %ymm6
242
+ vpand %ymm1, %ymm6, %ymm6
243
+ vpmulhrsw %ymm0, %ymm6, %ymm6
244
+ vmovdqu %ymm6, 0x1a0(%rdi)
245
+ vmovdqu 0x134(%rsi), %xmm6
246
+ vmovd 0x144(%rsi), %xmm7
247
+ vpinsrw $0x2, 0x148(%rsi), %xmm7, %xmm7
248
+ vinserti128 $0x1, %xmm7, %ymm6, %ymm6
249
+ vpermq $0x94, %ymm6, %ymm6 # ymm6 = ymm6[0,1,1,2]
250
+ vpshufb %ymm2, %ymm6, %ymm6
251
+ vpsrlvd %ymm3, %ymm6, %ymm6
252
+ vpsrlvq %ymm4, %ymm6, %ymm6
253
+ vpmullw %ymm5, %ymm6, %ymm6
254
+ vpsrlw $0x1, %ymm6, %ymm6
255
+ vpand %ymm1, %ymm6, %ymm6
256
+ vpmulhrsw %ymm0, %ymm6, %ymm6
257
+ vmovdqu %ymm6, 0x1c0(%rdi)
258
+ vmovdqu 0x14a(%rsi), %xmm6
259
+ vmovd 0x15a(%rsi), %xmm7
260
+ vpinsrw $0x2, 0x15e(%rsi), %xmm7, %xmm7
261
+ vinserti128 $0x1, %xmm7, %ymm6, %ymm6
262
+ vpermq $0x94, %ymm6, %ymm6 # ymm6 = ymm6[0,1,1,2]
263
+ vpshufb %ymm2, %ymm6, %ymm6
264
+ vpsrlvd %ymm3, %ymm6, %ymm6
265
+ vpsrlvq %ymm4, %ymm6, %ymm6
266
+ vpmullw %ymm5, %ymm6, %ymm6
267
+ vpsrlw $0x1, %ymm6, %ymm6
268
+ vpand %ymm1, %ymm6, %ymm6
269
+ vpmulhrsw %ymm0, %ymm6, %ymm6
270
+ vmovdqu %ymm6, 0x1e0(%rdi)
271
+ retq
272
+ .cfi_endproc
273
+
274
+ MLK_ASM_FN_SIZE(poly_decompress_d11_avx2)
275
+
276
+ #endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \
277
+ && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 4) */
@@ -0,0 +1,180 @@
1
+ /*
2
+ * Copyright (c) The mlkem-native project authors
3
+ * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT
4
+ */
5
+
6
+ /* References
7
+ * ==========
8
+ *
9
+ * - [REF_AVX2]
10
+ * CRYSTALS-Kyber optimized AVX2 implementation
11
+ * Bos, Ducas, Kiltz, Lepoint, Lyubashevsky, Schanck, Schwabe, Seiler, Stehlé
12
+ * https://github.com/pq-crystals/kyber/tree/main/avx2
13
+ */
14
+
15
+ /*
16
+ * This file is derived from the public domain
17
+ * AVX2 Kyber implementation @[REF_AVX2].
18
+ */
19
+
20
+ /*************************************************
21
+ * Name: mlk_poly_decompress_d4_avx2
22
+ *
23
+ * Description: Decompression of a polynomial from 4 bits per coefficient.
24
+ *
25
+ * Arguments: - int16_t *r: pointer to output polynomial
26
+ * - const uint8_t *a: pointer to input byte array
27
+ * (of length MLKEM_POLYCOMPRESSEDBYTES_D4)
28
+ * - const int8_t *data: pointer to shufbidx constant
29
+ **************************************************/
30
+
31
+ #include "../../../common.h"
32
+ #if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \
33
+ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \
34
+ (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 2 || MLKEM_K == 3)
35
+
36
+ /*
37
+ * WARNING: This file is auto-derived from the mlkem-native source file
38
+ * dev/x86_64/src/poly_decompress_d4.S using scripts/simpasm. Do not modify it directly.
39
+ */
40
+
41
+ #if defined(__ELF__)
42
+ .section .note.GNU-stack,"",@progbits
43
+ #endif
44
+
45
+ .text
46
+ .balign 4
47
+ .global MLK_ASM_NAMESPACE(poly_decompress_d4_avx2)
48
+ MLK_ASM_FN_SYMBOL(poly_decompress_d4_avx2)
49
+
50
+ .cfi_startproc
51
+ movl $0xd010d01, %eax # imm = 0xD010D01
52
+ vmovd %eax, %xmm0
53
+ vpbroadcastd %xmm0, %ymm0
54
+ movl $0xf0000f, %eax # imm = 0xF0000F
55
+ vmovd %eax, %xmm1
56
+ vpbroadcastd %xmm1, %ymm1
57
+ movl $0x800800, %eax # imm = 0x800800
58
+ vmovd %eax, %xmm2
59
+ vpbroadcastd %xmm2, %ymm2
60
+ vmovdqa (%rdx), %ymm3
61
+ vmovq (%rsi), %xmm4
62
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
63
+ vpshufb %ymm3, %ymm4, %ymm4
64
+ vpand %ymm1, %ymm4, %ymm4
65
+ vpmullw %ymm2, %ymm4, %ymm4
66
+ vpmulhrsw %ymm0, %ymm4, %ymm4
67
+ vmovdqu %ymm4, (%rdi)
68
+ vmovq 0x8(%rsi), %xmm4
69
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
70
+ vpshufb %ymm3, %ymm4, %ymm4
71
+ vpand %ymm1, %ymm4, %ymm4
72
+ vpmullw %ymm2, %ymm4, %ymm4
73
+ vpmulhrsw %ymm0, %ymm4, %ymm4
74
+ vmovdqu %ymm4, 0x20(%rdi)
75
+ vmovq 0x10(%rsi), %xmm4
76
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
77
+ vpshufb %ymm3, %ymm4, %ymm4
78
+ vpand %ymm1, %ymm4, %ymm4
79
+ vpmullw %ymm2, %ymm4, %ymm4
80
+ vpmulhrsw %ymm0, %ymm4, %ymm4
81
+ vmovdqu %ymm4, 0x40(%rdi)
82
+ vmovq 0x18(%rsi), %xmm4
83
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
84
+ vpshufb %ymm3, %ymm4, %ymm4
85
+ vpand %ymm1, %ymm4, %ymm4
86
+ vpmullw %ymm2, %ymm4, %ymm4
87
+ vpmulhrsw %ymm0, %ymm4, %ymm4
88
+ vmovdqu %ymm4, 0x60(%rdi)
89
+ vmovq 0x20(%rsi), %xmm4
90
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
91
+ vpshufb %ymm3, %ymm4, %ymm4
92
+ vpand %ymm1, %ymm4, %ymm4
93
+ vpmullw %ymm2, %ymm4, %ymm4
94
+ vpmulhrsw %ymm0, %ymm4, %ymm4
95
+ vmovdqu %ymm4, 0x80(%rdi)
96
+ vmovq 0x28(%rsi), %xmm4
97
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
98
+ vpshufb %ymm3, %ymm4, %ymm4
99
+ vpand %ymm1, %ymm4, %ymm4
100
+ vpmullw %ymm2, %ymm4, %ymm4
101
+ vpmulhrsw %ymm0, %ymm4, %ymm4
102
+ vmovdqu %ymm4, 0xa0(%rdi)
103
+ vmovq 0x30(%rsi), %xmm4
104
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
105
+ vpshufb %ymm3, %ymm4, %ymm4
106
+ vpand %ymm1, %ymm4, %ymm4
107
+ vpmullw %ymm2, %ymm4, %ymm4
108
+ vpmulhrsw %ymm0, %ymm4, %ymm4
109
+ vmovdqu %ymm4, 0xc0(%rdi)
110
+ vmovq 0x38(%rsi), %xmm4
111
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
112
+ vpshufb %ymm3, %ymm4, %ymm4
113
+ vpand %ymm1, %ymm4, %ymm4
114
+ vpmullw %ymm2, %ymm4, %ymm4
115
+ vpmulhrsw %ymm0, %ymm4, %ymm4
116
+ vmovdqu %ymm4, 0xe0(%rdi)
117
+ vmovq 0x40(%rsi), %xmm4
118
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
119
+ vpshufb %ymm3, %ymm4, %ymm4
120
+ vpand %ymm1, %ymm4, %ymm4
121
+ vpmullw %ymm2, %ymm4, %ymm4
122
+ vpmulhrsw %ymm0, %ymm4, %ymm4
123
+ vmovdqu %ymm4, 0x100(%rdi)
124
+ vmovq 0x48(%rsi), %xmm4
125
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
126
+ vpshufb %ymm3, %ymm4, %ymm4
127
+ vpand %ymm1, %ymm4, %ymm4
128
+ vpmullw %ymm2, %ymm4, %ymm4
129
+ vpmulhrsw %ymm0, %ymm4, %ymm4
130
+ vmovdqu %ymm4, 0x120(%rdi)
131
+ vmovq 0x50(%rsi), %xmm4
132
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
133
+ vpshufb %ymm3, %ymm4, %ymm4
134
+ vpand %ymm1, %ymm4, %ymm4
135
+ vpmullw %ymm2, %ymm4, %ymm4
136
+ vpmulhrsw %ymm0, %ymm4, %ymm4
137
+ vmovdqu %ymm4, 0x140(%rdi)
138
+ vmovq 0x58(%rsi), %xmm4
139
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
140
+ vpshufb %ymm3, %ymm4, %ymm4
141
+ vpand %ymm1, %ymm4, %ymm4
142
+ vpmullw %ymm2, %ymm4, %ymm4
143
+ vpmulhrsw %ymm0, %ymm4, %ymm4
144
+ vmovdqu %ymm4, 0x160(%rdi)
145
+ vmovq 0x60(%rsi), %xmm4
146
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
147
+ vpshufb %ymm3, %ymm4, %ymm4
148
+ vpand %ymm1, %ymm4, %ymm4
149
+ vpmullw %ymm2, %ymm4, %ymm4
150
+ vpmulhrsw %ymm0, %ymm4, %ymm4
151
+ vmovdqu %ymm4, 0x180(%rdi)
152
+ vmovq 0x68(%rsi), %xmm4
153
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
154
+ vpshufb %ymm3, %ymm4, %ymm4
155
+ vpand %ymm1, %ymm4, %ymm4
156
+ vpmullw %ymm2, %ymm4, %ymm4
157
+ vpmulhrsw %ymm0, %ymm4, %ymm4
158
+ vmovdqu %ymm4, 0x1a0(%rdi)
159
+ vmovq 0x70(%rsi), %xmm4
160
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
161
+ vpshufb %ymm3, %ymm4, %ymm4
162
+ vpand %ymm1, %ymm4, %ymm4
163
+ vpmullw %ymm2, %ymm4, %ymm4
164
+ vpmulhrsw %ymm0, %ymm4, %ymm4
165
+ vmovdqu %ymm4, 0x1c0(%rdi)
166
+ vmovq 0x78(%rsi), %xmm4
167
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
168
+ vpshufb %ymm3, %ymm4, %ymm4
169
+ vpand %ymm1, %ymm4, %ymm4
170
+ vpmullw %ymm2, %ymm4, %ymm4
171
+ vpmulhrsw %ymm0, %ymm4, %ymm4
172
+ vmovdqu %ymm4, 0x1e0(%rdi)
173
+ retq
174
+ .cfi_endproc
175
+
176
+ MLK_ASM_FN_SIZE(poly_decompress_d4_avx2)
177
+
178
+ #endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \
179
+ && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 2 || MLKEM_K == \
180
+ 3) */
@@ -0,0 +1,192 @@
1
+ /*
2
+ * Copyright (c) The mlkem-native project authors
3
+ * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT
4
+ */
5
+
6
+ /* References
7
+ * ==========
8
+ *
9
+ * - [REF_AVX2]
10
+ * CRYSTALS-Kyber optimized AVX2 implementation
11
+ * Bos, Ducas, Kiltz, Lepoint, Lyubashevsky, Schanck, Schwabe, Seiler, Stehlé
12
+ * https://github.com/pq-crystals/kyber/tree/main/avx2
13
+ */
14
+
15
+ /*
16
+ * This file is derived from the public domain
17
+ * AVX2 Kyber implementation @[REF_AVX2].
18
+ */
19
+
20
+ /*************************************************
21
+ * Name: mlk_poly_decompress_d5_avx2
22
+ *
23
+ * Description: Decompression of a polynomial from 5 bits per coefficient.
24
+ *
25
+ * Arguments: - int16_t *r: pointer to output polynomial
26
+ * - const uint8_t *a: pointer to input byte array
27
+ * (of length MLKEM_POLYCOMPRESSEDBYTES_D5)
28
+ * - const uint8_t *data: pointer to constants
29
+ * (shufbidx[0:32], mask[32:64], shift[64:96])
30
+ **************************************************/
31
+
32
+ #include "../../../common.h"
33
+ #if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \
34
+ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \
35
+ (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 4)
36
+
37
+ /*
38
+ * WARNING: This file is auto-derived from the mlkem-native source file
39
+ * dev/x86_64/src/poly_decompress_d5.S using scripts/simpasm. Do not modify it directly.
40
+ */
41
+
42
+ #if defined(__ELF__)
43
+ .section .note.GNU-stack,"",@progbits
44
+ #endif
45
+
46
+ .text
47
+ .balign 4
48
+ .global MLK_ASM_NAMESPACE(poly_decompress_d5_avx2)
49
+ MLK_ASM_FN_SYMBOL(poly_decompress_d5_avx2)
50
+
51
+ .cfi_startproc
52
+ movl $0xd010d01, %eax # imm = 0xD010D01
53
+ vmovd %eax, %xmm0
54
+ vpbroadcastd %xmm0, %ymm0
55
+ vmovdqa (%rdx), %ymm1
56
+ vmovdqa 0x20(%rdx), %ymm2
57
+ vmovdqa 0x40(%rdx), %ymm3
58
+ vmovq (%rsi), %xmm4
59
+ vpinsrw $0x4, 0x8(%rsi), %xmm4, %xmm4
60
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
61
+ vpshufb %ymm1, %ymm4, %ymm4
62
+ vpand %ymm2, %ymm4, %ymm4
63
+ vpmullw %ymm3, %ymm4, %ymm4
64
+ vpmulhrsw %ymm0, %ymm4, %ymm4
65
+ vmovdqu %ymm4, (%rdi)
66
+ vmovq 0xa(%rsi), %xmm4
67
+ vpinsrw $0x4, 0x12(%rsi), %xmm4, %xmm4
68
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
69
+ vpshufb %ymm1, %ymm4, %ymm4
70
+ vpand %ymm2, %ymm4, %ymm4
71
+ vpmullw %ymm3, %ymm4, %ymm4
72
+ vpmulhrsw %ymm0, %ymm4, %ymm4
73
+ vmovdqu %ymm4, 0x20(%rdi)
74
+ vmovq 0x14(%rsi), %xmm4
75
+ vpinsrw $0x4, 0x1c(%rsi), %xmm4, %xmm4
76
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
77
+ vpshufb %ymm1, %ymm4, %ymm4
78
+ vpand %ymm2, %ymm4, %ymm4
79
+ vpmullw %ymm3, %ymm4, %ymm4
80
+ vpmulhrsw %ymm0, %ymm4, %ymm4
81
+ vmovdqu %ymm4, 0x40(%rdi)
82
+ vmovq 0x1e(%rsi), %xmm4
83
+ vpinsrw $0x4, 0x26(%rsi), %xmm4, %xmm4
84
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
85
+ vpshufb %ymm1, %ymm4, %ymm4
86
+ vpand %ymm2, %ymm4, %ymm4
87
+ vpmullw %ymm3, %ymm4, %ymm4
88
+ vpmulhrsw %ymm0, %ymm4, %ymm4
89
+ vmovdqu %ymm4, 0x60(%rdi)
90
+ vmovq 0x28(%rsi), %xmm4
91
+ vpinsrw $0x4, 0x30(%rsi), %xmm4, %xmm4
92
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
93
+ vpshufb %ymm1, %ymm4, %ymm4
94
+ vpand %ymm2, %ymm4, %ymm4
95
+ vpmullw %ymm3, %ymm4, %ymm4
96
+ vpmulhrsw %ymm0, %ymm4, %ymm4
97
+ vmovdqu %ymm4, 0x80(%rdi)
98
+ vmovq 0x32(%rsi), %xmm4
99
+ vpinsrw $0x4, 0x3a(%rsi), %xmm4, %xmm4
100
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
101
+ vpshufb %ymm1, %ymm4, %ymm4
102
+ vpand %ymm2, %ymm4, %ymm4
103
+ vpmullw %ymm3, %ymm4, %ymm4
104
+ vpmulhrsw %ymm0, %ymm4, %ymm4
105
+ vmovdqu %ymm4, 0xa0(%rdi)
106
+ vmovq 0x3c(%rsi), %xmm4
107
+ vpinsrw $0x4, 0x44(%rsi), %xmm4, %xmm4
108
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
109
+ vpshufb %ymm1, %ymm4, %ymm4
110
+ vpand %ymm2, %ymm4, %ymm4
111
+ vpmullw %ymm3, %ymm4, %ymm4
112
+ vpmulhrsw %ymm0, %ymm4, %ymm4
113
+ vmovdqu %ymm4, 0xc0(%rdi)
114
+ vmovq 0x46(%rsi), %xmm4
115
+ vpinsrw $0x4, 0x4e(%rsi), %xmm4, %xmm4
116
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
117
+ vpshufb %ymm1, %ymm4, %ymm4
118
+ vpand %ymm2, %ymm4, %ymm4
119
+ vpmullw %ymm3, %ymm4, %ymm4
120
+ vpmulhrsw %ymm0, %ymm4, %ymm4
121
+ vmovdqu %ymm4, 0xe0(%rdi)
122
+ vmovq 0x50(%rsi), %xmm4
123
+ vpinsrw $0x4, 0x58(%rsi), %xmm4, %xmm4
124
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
125
+ vpshufb %ymm1, %ymm4, %ymm4
126
+ vpand %ymm2, %ymm4, %ymm4
127
+ vpmullw %ymm3, %ymm4, %ymm4
128
+ vpmulhrsw %ymm0, %ymm4, %ymm4
129
+ vmovdqu %ymm4, 0x100(%rdi)
130
+ vmovq 0x5a(%rsi), %xmm4
131
+ vpinsrw $0x4, 0x62(%rsi), %xmm4, %xmm4
132
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
133
+ vpshufb %ymm1, %ymm4, %ymm4
134
+ vpand %ymm2, %ymm4, %ymm4
135
+ vpmullw %ymm3, %ymm4, %ymm4
136
+ vpmulhrsw %ymm0, %ymm4, %ymm4
137
+ vmovdqu %ymm4, 0x120(%rdi)
138
+ vmovq 0x64(%rsi), %xmm4
139
+ vpinsrw $0x4, 0x6c(%rsi), %xmm4, %xmm4
140
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
141
+ vpshufb %ymm1, %ymm4, %ymm4
142
+ vpand %ymm2, %ymm4, %ymm4
143
+ vpmullw %ymm3, %ymm4, %ymm4
144
+ vpmulhrsw %ymm0, %ymm4, %ymm4
145
+ vmovdqu %ymm4, 0x140(%rdi)
146
+ vmovq 0x6e(%rsi), %xmm4
147
+ vpinsrw $0x4, 0x76(%rsi), %xmm4, %xmm4
148
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
149
+ vpshufb %ymm1, %ymm4, %ymm4
150
+ vpand %ymm2, %ymm4, %ymm4
151
+ vpmullw %ymm3, %ymm4, %ymm4
152
+ vpmulhrsw %ymm0, %ymm4, %ymm4
153
+ vmovdqu %ymm4, 0x160(%rdi)
154
+ vmovq 0x78(%rsi), %xmm4
155
+ vpinsrw $0x4, 0x80(%rsi), %xmm4, %xmm4
156
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
157
+ vpshufb %ymm1, %ymm4, %ymm4
158
+ vpand %ymm2, %ymm4, %ymm4
159
+ vpmullw %ymm3, %ymm4, %ymm4
160
+ vpmulhrsw %ymm0, %ymm4, %ymm4
161
+ vmovdqu %ymm4, 0x180(%rdi)
162
+ vmovq 0x82(%rsi), %xmm4
163
+ vpinsrw $0x4, 0x8a(%rsi), %xmm4, %xmm4
164
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
165
+ vpshufb %ymm1, %ymm4, %ymm4
166
+ vpand %ymm2, %ymm4, %ymm4
167
+ vpmullw %ymm3, %ymm4, %ymm4
168
+ vpmulhrsw %ymm0, %ymm4, %ymm4
169
+ vmovdqu %ymm4, 0x1a0(%rdi)
170
+ vmovq 0x8c(%rsi), %xmm4
171
+ vpinsrw $0x4, 0x94(%rsi), %xmm4, %xmm4
172
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
173
+ vpshufb %ymm1, %ymm4, %ymm4
174
+ vpand %ymm2, %ymm4, %ymm4
175
+ vpmullw %ymm3, %ymm4, %ymm4
176
+ vpmulhrsw %ymm0, %ymm4, %ymm4
177
+ vmovdqu %ymm4, 0x1c0(%rdi)
178
+ vmovq 0x96(%rsi), %xmm4
179
+ vpinsrw $0x4, 0x9e(%rsi), %xmm4, %xmm4
180
+ vinserti128 $0x1, %xmm4, %ymm4, %ymm4
181
+ vpshufb %ymm1, %ymm4, %ymm4
182
+ vpand %ymm2, %ymm4, %ymm4
183
+ vpmullw %ymm3, %ymm4, %ymm4
184
+ vpmulhrsw %ymm0, %ymm4, %ymm4
185
+ vmovdqu %ymm4, 0x1e0(%rdi)
186
+ retq
187
+ .cfi_endproc
188
+
189
+ MLK_ASM_FN_SIZE(poly_decompress_d5_avx2)
190
+
191
+ #endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \
192
+ && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 4) */