pq_crypto 0.4.2 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (408) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +25 -0
  3. data/GET_STARTED.md +21 -16
  4. data/README.md +26 -0
  5. data/SECURITY.md +22 -16
  6. data/ext/pqcrypto/extconf.rb +148 -99
  7. data/ext/pqcrypto/mldsa_api.h +1 -118
  8. data/ext/pqcrypto/mlkem_api.h +1 -42
  9. data/ext/pqcrypto/pq_externalmu.c +88 -216
  10. data/ext/pqcrypto/pqcrypto_native_api.h +129 -0
  11. data/ext/pqcrypto/pqcrypto_ruby_secure.c +0 -3
  12. data/ext/pqcrypto/pqcrypto_secure.c +135 -117
  13. data/ext/pqcrypto/pqcrypto_secure.h +1 -42
  14. data/ext/pqcrypto/pqcrypto_version.h +1 -1
  15. data/ext/pqcrypto/randombytes.h +9 -0
  16. data/ext/pqcrypto/vendor/.vendored +10 -5
  17. data/ext/pqcrypto/vendor/mldsa-native/BUILDING.md +105 -0
  18. data/ext/pqcrypto/vendor/mldsa-native/LICENSE +286 -0
  19. data/ext/pqcrypto/vendor/mldsa-native/META.yml +24 -0
  20. data/ext/pqcrypto/vendor/mldsa-native/README.md +221 -0
  21. data/ext/pqcrypto/vendor/mldsa-native/SECURITY.md +8 -0
  22. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native.c +721 -0
  23. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native.h +975 -0
  24. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native_asm.S +724 -0
  25. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native_config.h +723 -0
  26. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/cbmc.h +166 -0
  27. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/common.h +321 -0
  28. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/ct.c +21 -0
  29. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/ct.h +385 -0
  30. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/debug.c +73 -0
  31. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/debug.h +130 -0
  32. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202.c +277 -0
  33. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202.h +244 -0
  34. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202x4.c +182 -0
  35. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202x4.h +117 -0
  36. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/keccakf1600.c +438 -0
  37. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/keccakf1600.h +105 -0
  38. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/auto.h +71 -0
  39. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/fips202_native_aarch64.h +62 -0
  40. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_asm.S +376 -0
  41. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_asm.S +204 -0
  42. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_asm.S +259 -0
  43. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_asm.S +1077 -0
  44. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_asm.S +987 -0
  45. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccakf1600_round_constants.c +41 -0
  46. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x1_scalar.h +26 -0
  47. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x1_v84a.h +35 -0
  48. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x2_v84a.h +37 -0
  49. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x4_v8a_scalar.h +27 -0
  50. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x4_v8a_v84a_scalar.h +36 -0
  51. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/api.h +69 -0
  52. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/README.md +10 -0
  53. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/mve.h +32 -0
  54. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/fips202_native_armv81m.h +20 -0
  55. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S +638 -0
  56. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.c +136 -0
  57. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccakf1600_round_constants.c +52 -0
  58. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/auto.h +29 -0
  59. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/KeccakP_1600_times4_SIMD256.c +488 -0
  60. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/KeccakP_1600_times4_SIMD256.h +16 -0
  61. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/xkcp.h +31 -0
  62. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/meta.h +247 -0
  63. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/aarch64_zetas.c +231 -0
  64. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/arith_native_aarch64.h +150 -0
  65. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/intt.S +753 -0
  66. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l4.S +129 -0
  67. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l5.S +145 -0
  68. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l7.S +177 -0
  69. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/ntt.S +653 -0
  70. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/pointwise_montgomery.S +79 -0
  71. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_caddq_asm.S +53 -0
  72. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_chknorm_asm.S +55 -0
  73. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_decompose_32_asm.S +85 -0
  74. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_decompose_88_asm.S +85 -0
  75. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_use_hint_32_asm.S +102 -0
  76. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_use_hint_88_asm.S +110 -0
  77. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_17_asm.S +72 -0
  78. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_19_asm.S +69 -0
  79. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_table.c +40 -0
  80. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_asm.S +189 -0
  81. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta2_asm.S +135 -0
  82. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta4_asm.S +128 -0
  83. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta_table.c +543 -0
  84. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_table.c +62 -0
  85. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/api.h +649 -0
  86. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/meta.h +23 -0
  87. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/meta.h +315 -0
  88. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/arith_native_x86_64.h +124 -0
  89. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/consts.c +157 -0
  90. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/consts.h +27 -0
  91. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/intt.S +2311 -0
  92. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/ntt.S +2383 -0
  93. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/nttunpack.S +239 -0
  94. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise.S +131 -0
  95. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l4.S +139 -0
  96. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l5.S +155 -0
  97. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l7.S +187 -0
  98. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_caddq_avx2.c +61 -0
  99. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_chknorm_avx2.c +52 -0
  100. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_decompose_32_avx2.c +155 -0
  101. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_decompose_88_avx2.c +155 -0
  102. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_use_hint_32_avx2.c +102 -0
  103. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_use_hint_88_avx2.c +104 -0
  104. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/polyz_unpack_17_avx2.c +91 -0
  105. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/polyz_unpack_19_avx2.c +93 -0
  106. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_avx2.c +126 -0
  107. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_eta2_avx2.c +155 -0
  108. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_eta4_avx2.c +139 -0
  109. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_table.c +160 -0
  110. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/packing.c +293 -0
  111. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/packing.h +224 -0
  112. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/params.h +77 -0
  113. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly.c +991 -0
  114. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly.h +393 -0
  115. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly_kl.c +946 -0
  116. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly_kl.h +360 -0
  117. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec.c +877 -0
  118. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec.h +725 -0
  119. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/randombytes.h +26 -0
  120. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/reduce.h +139 -0
  121. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/rounding.h +249 -0
  122. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/sign.c +1511 -0
  123. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/sign.h +806 -0
  124. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/symmetric.h +68 -0
  125. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/sys.h +268 -0
  126. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/zetas.inc +55 -0
  127. data/ext/pqcrypto/vendor/mlkem-native/BUILDING.md +104 -0
  128. data/ext/pqcrypto/vendor/mlkem-native/LICENSE +294 -0
  129. data/ext/pqcrypto/vendor/mlkem-native/META.yml +30 -0
  130. data/ext/pqcrypto/vendor/mlkem-native/README.md +223 -0
  131. data/ext/pqcrypto/vendor/mlkem-native/RELEASE.md +86 -0
  132. data/ext/pqcrypto/vendor/mlkem-native/SECURITY.md +8 -0
  133. data/ext/pqcrypto/vendor/mlkem-native/mlkem/README.md +23 -0
  134. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native.c +660 -0
  135. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native.h +538 -0
  136. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native_asm.S +681 -0
  137. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native_config.h +709 -0
  138. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/cbmc.h +174 -0
  139. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/common.h +274 -0
  140. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/compress.c +717 -0
  141. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/compress.h +688 -0
  142. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/debug.c +64 -0
  143. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/debug.h +128 -0
  144. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202.c +251 -0
  145. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202.h +158 -0
  146. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202x4.c +208 -0
  147. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202x4.h +80 -0
  148. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/keccakf1600.c +463 -0
  149. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/keccakf1600.h +98 -0
  150. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/auto.h +70 -0
  151. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/fips202_native_aarch64.h +69 -0
  152. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_asm.S +375 -0
  153. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_asm.S +203 -0
  154. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_asm.S +258 -0
  155. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_asm.S +1076 -0
  156. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_asm.S +986 -0
  157. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccakf1600_round_constants.c +46 -0
  158. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x1_scalar.h +25 -0
  159. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x1_v84a.h +34 -0
  160. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x2_v84a.h +35 -0
  161. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x4_v8a_scalar.h +26 -0
  162. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x4_v8a_v84a_scalar.h +35 -0
  163. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/api.h +117 -0
  164. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/README.md +10 -0
  165. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/mve.h +79 -0
  166. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/fips202_native_armv81m.h +35 -0
  167. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S +667 -0
  168. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.c +40 -0
  169. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccakf1600_round_constants.c +51 -0
  170. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/state_extract_bytes_x4_mve.S +290 -0
  171. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/state_xor_bytes_x4_mve.S +314 -0
  172. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/auto.h +28 -0
  173. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/keccak_f1600_x4_avx2.h +33 -0
  174. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/fips202_native_x86_64.h +41 -0
  175. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/keccak_f1600_x4_avx2.S +451 -0
  176. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/keccakf1600_constants.c +51 -0
  177. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/indcpa.c +622 -0
  178. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/indcpa.h +156 -0
  179. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/kem.c +446 -0
  180. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/kem.h +326 -0
  181. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/README.md +16 -0
  182. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/meta.h +122 -0
  183. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/aarch64_zetas.c +174 -0
  184. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/arith_native_aarch64.h +177 -0
  185. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/intt.S +628 -0
  186. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/ntt.S +562 -0
  187. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_mulcache_compute_asm.S +127 -0
  188. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_reduce_asm.S +150 -0
  189. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_tobytes_asm.S +117 -0
  190. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_tomont_asm.S +98 -0
  191. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/polyvec_basemul_acc_montgomery_cached_asm_k2.S +261 -0
  192. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/polyvec_basemul_acc_montgomery_cached_asm_k3.S +314 -0
  193. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/polyvec_basemul_acc_montgomery_cached_asm_k4.S +368 -0
  194. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/rej_uniform_asm.S +226 -0
  195. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/rej_uniform_table.c +542 -0
  196. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/api.h +637 -0
  197. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/meta.h +25 -0
  198. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/README.md +11 -0
  199. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/meta.h +128 -0
  200. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/arith_native_riscv64.h +45 -0
  201. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_debug.c +81 -0
  202. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_debug.h +145 -0
  203. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_izetas.inc +27 -0
  204. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_poly.c +805 -0
  205. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_zetas.inc +27 -0
  206. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_zetas_basemul.inc +39 -0
  207. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/README.md +4 -0
  208. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/meta.h +304 -0
  209. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/arith_native_x86_64.h +309 -0
  210. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/compress_consts.c +94 -0
  211. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/compress_consts.h +45 -0
  212. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/consts.c +102 -0
  213. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/consts.h +25 -0
  214. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/intt.S +719 -0
  215. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/mulcache_compute.S +90 -0
  216. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/ntt.S +639 -0
  217. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/nttfrombytes.S +193 -0
  218. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/ntttobytes.S +181 -0
  219. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/nttunpack.S +174 -0
  220. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d10.S +382 -0
  221. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d11.S +448 -0
  222. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d4.S +163 -0
  223. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d5.S +220 -0
  224. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d10.S +228 -0
  225. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d11.S +277 -0
  226. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d4.S +180 -0
  227. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d5.S +192 -0
  228. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/polyvec_basemul_acc_montgomery_cached_asm_k2.S +502 -0
  229. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/polyvec_basemul_acc_montgomery_cached_asm_k3.S +750 -0
  230. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/polyvec_basemul_acc_montgomery_cached_asm_k4.S +998 -0
  231. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/reduce.S +218 -0
  232. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/rej_uniform_asm.S +103 -0
  233. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/rej_uniform_table.c +544 -0
  234. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/tomont.S +155 -0
  235. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/params.h +76 -0
  236. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly.c +572 -0
  237. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly.h +317 -0
  238. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly_k.c +502 -0
  239. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly_k.h +668 -0
  240. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/randombytes.h +60 -0
  241. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sampling.c +362 -0
  242. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sampling.h +118 -0
  243. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/symmetric.h +70 -0
  244. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sys.h +260 -0
  245. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/verify.c +20 -0
  246. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/verify.h +464 -0
  247. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/zetas.inc +30 -0
  248. data/lib/pq_crypto/version.rb +1 -1
  249. data/lib/pq_crypto.rb +1 -1
  250. data/script/vendor_libs.rb +88 -159
  251. metadata +236 -160
  252. data/ext/pqcrypto/vendor/pqclean/common/aes.c +0 -639
  253. data/ext/pqcrypto/vendor/pqclean/common/aes.h +0 -64
  254. data/ext/pqcrypto/vendor/pqclean/common/compat.h +0 -73
  255. data/ext/pqcrypto/vendor/pqclean/common/crypto_declassify.h +0 -7
  256. data/ext/pqcrypto/vendor/pqclean/common/fips202.c +0 -928
  257. data/ext/pqcrypto/vendor/pqclean/common/fips202.h +0 -166
  258. data/ext/pqcrypto/vendor/pqclean/common/keccak2x/feat.S +0 -168
  259. data/ext/pqcrypto/vendor/pqclean/common/keccak2x/fips202x2.c +0 -684
  260. data/ext/pqcrypto/vendor/pqclean/common/keccak2x/fips202x2.h +0 -60
  261. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/KeccakP-1600-times4-SIMD256.c +0 -1028
  262. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/KeccakP-1600-times4-SnP.h +0 -50
  263. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/KeccakP-1600-unrolling.macros +0 -198
  264. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/Makefile +0 -8
  265. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/Makefile.Microsoft_nmake +0 -8
  266. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/SIMD256-config.h +0 -3
  267. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/align.h +0 -34
  268. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/brg_endian.h +0 -142
  269. data/ext/pqcrypto/vendor/pqclean/common/nistseedexpander.c +0 -101
  270. data/ext/pqcrypto/vendor/pqclean/common/nistseedexpander.h +0 -39
  271. data/ext/pqcrypto/vendor/pqclean/common/randombytes.c +0 -355
  272. data/ext/pqcrypto/vendor/pqclean/common/randombytes.h +0 -27
  273. data/ext/pqcrypto/vendor/pqclean/common/sha2.c +0 -769
  274. data/ext/pqcrypto/vendor/pqclean/common/sha2.h +0 -173
  275. data/ext/pqcrypto/vendor/pqclean/common/sp800-185.c +0 -156
  276. data/ext/pqcrypto/vendor/pqclean/common/sp800-185.h +0 -27
  277. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/LICENSE +0 -5
  278. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/Makefile +0 -19
  279. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/Makefile.Microsoft_nmake +0 -23
  280. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/api.h +0 -18
  281. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/cbd.c +0 -83
  282. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/cbd.h +0 -11
  283. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/indcpa.c +0 -327
  284. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/indcpa.h +0 -22
  285. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/kem.c +0 -164
  286. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/kem.h +0 -23
  287. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/ntt.c +0 -146
  288. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/ntt.h +0 -14
  289. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/params.h +0 -36
  290. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/poly.c +0 -311
  291. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/poly.h +0 -37
  292. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/polyvec.c +0 -198
  293. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/polyvec.h +0 -26
  294. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/reduce.c +0 -41
  295. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/reduce.h +0 -13
  296. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/symmetric-shake.c +0 -71
  297. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/symmetric.h +0 -30
  298. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/verify.c +0 -67
  299. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/verify.h +0 -13
  300. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/LICENSE +0 -5
  301. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/Makefile +0 -19
  302. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/Makefile.Microsoft_nmake +0 -23
  303. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/api.h +0 -18
  304. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/cbd.c +0 -108
  305. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/cbd.h +0 -11
  306. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/indcpa.c +0 -327
  307. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/indcpa.h +0 -22
  308. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/kem.c +0 -164
  309. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/kem.h +0 -23
  310. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/ntt.c +0 -146
  311. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/ntt.h +0 -14
  312. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/params.h +0 -36
  313. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/poly.c +0 -299
  314. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/poly.h +0 -37
  315. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/polyvec.c +0 -188
  316. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/polyvec.h +0 -26
  317. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/reduce.c +0 -41
  318. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/reduce.h +0 -13
  319. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/symmetric-shake.c +0 -71
  320. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/symmetric.h +0 -30
  321. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/verify.c +0 -67
  322. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/verify.h +0 -13
  323. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/LICENSE +0 -5
  324. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/Makefile +0 -19
  325. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/Makefile.Microsoft_nmake +0 -23
  326. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/api.h +0 -18
  327. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/cbd.c +0 -83
  328. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/cbd.h +0 -11
  329. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/indcpa.c +0 -327
  330. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/indcpa.h +0 -22
  331. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/kem.c +0 -164
  332. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/kem.h +0 -23
  333. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/ntt.c +0 -146
  334. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/ntt.h +0 -14
  335. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/params.h +0 -36
  336. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/poly.c +0 -299
  337. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/poly.h +0 -37
  338. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/polyvec.c +0 -188
  339. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/polyvec.h +0 -26
  340. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/reduce.c +0 -41
  341. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/reduce.h +0 -13
  342. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/symmetric-shake.c +0 -71
  343. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/symmetric.h +0 -30
  344. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/verify.c +0 -67
  345. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/verify.h +0 -13
  346. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/LICENSE +0 -5
  347. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/Makefile +0 -19
  348. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/Makefile.Microsoft_nmake +0 -23
  349. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/api.h +0 -50
  350. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/ntt.c +0 -98
  351. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/ntt.h +0 -10
  352. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/packing.c +0 -261
  353. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/packing.h +0 -31
  354. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/params.h +0 -44
  355. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/poly.c +0 -848
  356. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/poly.h +0 -52
  357. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/polyvec.c +0 -415
  358. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/polyvec.h +0 -65
  359. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/reduce.c +0 -69
  360. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/reduce.h +0 -17
  361. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/rounding.c +0 -98
  362. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/rounding.h +0 -14
  363. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/sign.c +0 -407
  364. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/sign.h +0 -47
  365. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/symmetric-shake.c +0 -26
  366. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/symmetric.h +0 -34
  367. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/LICENSE +0 -5
  368. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/Makefile +0 -19
  369. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/Makefile.Microsoft_nmake +0 -23
  370. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/api.h +0 -50
  371. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/ntt.c +0 -98
  372. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/ntt.h +0 -10
  373. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/packing.c +0 -261
  374. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/packing.h +0 -31
  375. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/params.h +0 -44
  376. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/poly.c +0 -799
  377. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/poly.h +0 -52
  378. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/polyvec.c +0 -415
  379. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/polyvec.h +0 -65
  380. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/reduce.c +0 -69
  381. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/reduce.h +0 -17
  382. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/rounding.c +0 -92
  383. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/rounding.h +0 -14
  384. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/sign.c +0 -407
  385. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/sign.h +0 -47
  386. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/symmetric-shake.c +0 -26
  387. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/symmetric.h +0 -34
  388. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/LICENSE +0 -5
  389. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/Makefile +0 -19
  390. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/Makefile.Microsoft_nmake +0 -23
  391. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/api.h +0 -50
  392. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/ntt.c +0 -98
  393. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/ntt.h +0 -10
  394. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/packing.c +0 -261
  395. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/packing.h +0 -31
  396. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/params.h +0 -44
  397. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/poly.c +0 -823
  398. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/poly.h +0 -52
  399. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/polyvec.c +0 -415
  400. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/polyvec.h +0 -65
  401. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/reduce.c +0 -69
  402. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/reduce.h +0 -17
  403. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/rounding.c +0 -92
  404. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/rounding.h +0 -14
  405. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/sign.c +0 -407
  406. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/sign.h +0 -47
  407. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/symmetric-shake.c +0 -26
  408. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/symmetric.h +0 -34
@@ -0,0 +1,667 @@
1
+ /*
2
+ * Copyright (c) The mlkem-native project authors
3
+ * Copyright (c) 2025 Arm Limited
4
+ * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT
5
+ */
6
+
7
+ /*yaml
8
+ Name: keccak_f1600_x4_mve_asm
9
+ Description: Armv8.1-M MVE implementation of batched (x4) Keccak-f[1600] permutation using bit-interleaved state
10
+ Signature: void mlk_keccak_f1600_x4_mve_asm(void *state, void *tmpstate, const uint32_t *rc)
11
+ ABI:
12
+ r0:
13
+ type: buffer
14
+ size_bytes: 800
15
+ permissions: read/write
16
+ c_parameter: void *state
17
+ description: Bit-interleaved state for 4 Keccak instances (even halves followed by odd halves)
18
+ r1:
19
+ type: buffer
20
+ size_bytes: 800
21
+ permissions: read/write
22
+ c_parameter: void *tmpstate
23
+ description: Temporary storage for intermediate state
24
+ r2:
25
+ type: buffer
26
+ size_bytes: 192
27
+ permissions: read
28
+ c_parameter: const uint32_t *rc
29
+ description: Keccak round constants in bit-interleaved form (24 pairs of 32-bit words)
30
+ Stack:
31
+ bytes: 236
32
+ description: register preservation (44) + SIMD registers (64) + temporary storage (128)
33
+ */
34
+
35
+ // ---------------------------------------------------------------------------
36
+ // Bit-interleaving background
37
+ // ---------------------------------------------------------------------------
38
+ // Each 64-bit Keccak lane is stored as two 32-bit words:
39
+ // even half -- bits 0, 2, 4, ..., 62 of the lane
40
+ // odd half -- bits 1, 3, 5, ..., 63 of the lane
41
+ // This representation allows 64-bit lane rotations (used in the Keccak
42
+ // round function) to be implemented as pairs of 32-bit rotations.
43
+ //
44
+ // Batched (x4) processing:
45
+ // Four Keccak instances are processed as a batch. Their states are
46
+ // stored interleaved in a single 800-byte buffer: first the even
47
+ // halves of all 25 lanes (400 bytes), then the odd halves (400 bytes).
48
+ // Within each 16-byte row, the four u32 words correspond to
49
+ // instances 0..3 of the same lane, enabling SIMD-parallel operations
50
+ // across all four instances.
51
+ //
52
+ // State memory layout (25 lanes x 4 instances x 2 halves):
53
+ // S[i][l]_even/odd = even/odd half of lane l, instance i (u32)
54
+ // Each row is 16 bytes (one Q-register).
55
+ // Offset Contents
56
+ // 0 S[0][ 0]_even, S[1][ 0]_even, S[2][ 0]_even, S[3][ 0]_even
57
+ // 16 S[0][ 1]_even, S[1][ 1]_even, S[2][ 1]_even, S[3][ 1]_even
58
+ // ...
59
+ // 384 S[0][24]_even, S[1][24]_even, S[2][24]_even, S[3][24]_even
60
+ // 400 S[0][ 0]_odd, S[1][ 0]_odd, S[2][ 0]_odd, S[3][ 0]_odd
61
+ // 416 S[0][ 1]_odd, S[1][ 1]_odd, S[2][ 1]_odd, S[3][ 1]_odd
62
+ // ...
63
+ // 784 S[0][24]_odd, S[1][24]_odd, S[2][24]_odd, S[3][24]_odd
64
+
65
+ #include "../../../../common.h"
66
+ #if defined(MLK_FIPS202_ARMV81M_NEED_X4) && \
67
+ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED)
68
+
69
+ /*
70
+ * WARNING: This file is auto-derived from the mlkem-native source file
71
+ * dev/fips202/armv81m/src/keccak_f1600_x4_mve.S using scripts/simpasm. Do not modify it directly.
72
+ */
73
+
74
+ .thumb
75
+ .syntax unified
76
+
77
+ .text
78
+ .balign 4
79
+ .global MLK_ASM_NAMESPACE(keccak_f1600_x4_mve_asm)
80
+ MLK_ASM_FN_SYMBOL(keccak_f1600_x4_mve_asm)
81
+
82
+ push.w {r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, lr}
83
+ vpush {d8, d9, d10, d11, d12, d13, d14, d15}
84
+ sub sp, #0x80
85
+ mov r6, r2
86
+ mov.w lr, #0x18
87
+ mov r2, r0
88
+ mov r4, r1
89
+ add.w r3, r2, #0x190
90
+ vldrw.u32 q0, [r3]
91
+ vldrw.u32 q1, [r2]
92
+ vldrw.u32 q2, [r2, #32]
93
+ wls lr, lr, keccak_f1600_x4_mve_asm_roundend @ imm = #0x8c0
94
+
95
+ keccak_f1600_x4_mve_asm_roundstart:
96
+ vldrw.u32 q6, [r2, #112]
97
+ veor q7, q6, q2
98
+ vldrw.u32 q2, [r2, #80]
99
+ veor q1, q2, q1
100
+ add.w r5, r2, #0x190
101
+ vldrw.u32 q5, [r5, #80]
102
+ veor q4, q5, q0
103
+ vldrw.u32 q0, [r2, #192]
104
+ veor q3, q7, q0
105
+ vldrw.u32 q0, [r2, #160]
106
+ veor q1, q1, q0
107
+ vldrw.u32 q0, [r5, #160]
108
+ veor q0, q4, q0
109
+ vldrw.u32 q6, [r2, #272]
110
+ veor q2, q3, q6
111
+ vldrw.u32 q7, [r2, #240]
112
+ veor q5, q1, q7
113
+ vldrw.u32 q4, [r5, #240]
114
+ veor q4, q0, q4
115
+ vldrw.u32 q6, [r2, #352]
116
+ veor q3, q2, q6
117
+ vldrw.u32 q0, [r2, #320]
118
+ veor q2, q5, q0
119
+ vldrw.u32 q1, [r5, #320]
120
+ veor q5, q4, q1
121
+ vldrw.u32 q4, [r5, #32]
122
+ veor q0, q3, q5
123
+ vldrw.u32 q1, [r5, #16]
124
+ veor q6, q1, q0
125
+ vstrw.32 q5, [sp]
126
+ vshr.u32 q7, q6, #0x1f
127
+ add.w r10, r4, #0x190
128
+ vsli.32 q7, q6, #0x1
129
+ vldrw.u32 q6, [r5, #112]
130
+ veor q6, q4, q6
131
+ vldrw.u32 q4, [r5, #192]
132
+ veor q4, q6, q4
133
+ vldrw.u32 q6, [r5, #272]
134
+ veor q4, q4, q6
135
+ vldrw.u32 q6, [r5, #352]
136
+ veor q5, q4, q6
137
+ vstrw.32 q7, [r4, #160]
138
+ vshr.u32 q4, q5, #0x1f
139
+ vsli.32 q4, q5, #0x1
140
+ vldrw.u32 q6, [r2, #16]
141
+ veor q7, q4, q2
142
+ veor q1, q6, q7
143
+ vldrw.u32 q6, [r5, #96]
144
+ veor q6, q6, q0
145
+ vstrw.32 q1, [r10, #160]
146
+ vshr.u32 q1, q6, #0xa
147
+ vsli.32 q1, q6, #0x16
148
+ vldrw.u32 q6, [r2, #96]
149
+ veor q4, q6, q7
150
+ vstrw.32 q1, [r10, #16]
151
+ vshr.u32 q6, q4, #0xa
152
+ vsli.32 q6, q4, #0x16
153
+ vldrw.u32 q1, [r5, #336]
154
+ veor q4, q1, q0
155
+ vldrw.u32 q1, [r2, #176]
156
+ veor q1, q1, q7
157
+ vstrw.32 q6, [r4, #16]
158
+ vshr.u32 q6, q1, #0x1b
159
+ vsli.32 q6, q1, #0x5
160
+ vldrw.u32 q1, [r2, #256]
161
+ veor q1, q1, q7
162
+ vstrw.32 q6, [r4, #272]
163
+ vshr.u32 q6, q1, #0xa
164
+ vsli.32 q6, q1, #0x16
165
+ vldrw.u32 q1, [r2, #336]
166
+ veor q1, q1, q7
167
+ vstrw.32 q6, [r10, #128]
168
+ vshr.u32 q6, q1, #0x1f
169
+ vsli.32 q6, q1, #0x1
170
+ vldrw.u32 q7, [r5, #176]
171
+ veor q7, q7, q0
172
+ vstrw.32 q6, [r4, #384]
173
+ vshr.u32 q1, q7, #0x1b
174
+ vsli.32 q1, q7, #0x5
175
+ vldrw.u32 q6, [r5, #256]
176
+ veor q0, q6, q0
177
+ vstrw.32 q1, [r10, #272]
178
+ vshr.u32 q1, q4, #0x1f
179
+ vldrw.u32 q7, [r5, #64]
180
+ vsli.32 q1, q4, #0x1
181
+ vldrw.u32 q4, [r5, #144]
182
+ vshr.u32 q6, q0, #0x9
183
+ vstrw.32 q1, [r10, #384]
184
+ vsli.32 q6, q0, #0x17
185
+ veor q7, q7, q4
186
+ vldrw.u32 q1, [r5, #224]
187
+ veor q4, q7, q1
188
+ vldrw.u32 q7, [r5, #304]
189
+ veor q1, q4, q7
190
+ vldrw.u32 q0, [r5, #384]
191
+ veor q7, q1, q0
192
+ vstrw.32 q6, [r4, #128]
193
+ vshr.u32 q1, q7, #0x1f
194
+ vsli.32 q1, q7, #0x1
195
+ vldrw.u32 q6, [r2, #144]
196
+ veor q0, q1, q3
197
+ vldrw.u32 q3, [r2, #64]
198
+ veor q1, q3, q6
199
+ vldrw.u32 q6, [r2, #224]
200
+ veor q1, q1, q6
201
+ vldrw.u32 q3, [r2, #304]
202
+ veor q6, q1, q3
203
+ vldrw.u32 q4, [r2, #384]
204
+ veor q3, q6, q4
205
+ vldrw.u32 q4, [r2, #48]
206
+ veor q5, q3, q5
207
+ vldrw.u32 q1, [r5, #48]
208
+ veor q1, q1, q5
209
+ vshr.u32 q6, q1, #0x12
210
+ vsli.32 q6, q1, #0xe
211
+ vldrw.u32 q1, [r2, #128]
212
+ veor q1, q1, q0
213
+ vstrw.32 q6, [r10, #80]
214
+ vshr.u32 q6, q1, #0x5
215
+ vsli.32 q6, q1, #0x1b
216
+ vldrw.u32 q1, [r5, #128]
217
+ veor q1, q1, q5
218
+ vstrw.32 q6, [r10, #336]
219
+ vshr.u32 q6, q1, #0x4
220
+ vsli.32 q6, q1, #0x1c
221
+ veor q1, q4, q0
222
+ vstrw.32 q6, [r4, #336]
223
+ vshr.u32 q4, q1, #0x12
224
+ vsli.32 q4, q1, #0xe
225
+ vldrw.u32 q6, [r2, #208]
226
+ veor q6, q6, q0
227
+ vstrw.32 q4, [r4, #80]
228
+ vshr.u32 q1, q6, #0x14
229
+ vsli.32 q1, q6, #0xc
230
+ vldrw.u32 q4, [r2, #288]
231
+ veor q4, q4, q0
232
+ vldrw.u32 q6, [r2, #368]
233
+ veor q0, q6, q0
234
+ vshr.u32 q6, q0, #0x4
235
+ vstrw.32 q1, [r10, #192]
236
+ vsli.32 q6, q0, #0x1c
237
+ vshr.u32 q0, q4, #0x16
238
+ vldrw.u32 q1, [r5, #368]
239
+ vsli.32 q0, q4, #0xa
240
+ vstrw.32 q6, [r4, #304]
241
+ veor q4, q1, q5
242
+ vstrw.32 q0, [r10, #48]
243
+ vshr.u32 q1, q4, #0x4
244
+ vsli.32 q1, q4, #0x1c
245
+ vldrw.u32 q6, [r5, #208]
246
+ veor q6, q6, q5
247
+ vldrw.u32 q0, [r5, #288]
248
+ veor q5, q0, q5
249
+ vstrw.32 q1, [r10, #304]
250
+ vshr.u32 q0, q6, #0x13
251
+ vsli.32 q0, q6, #0xd
252
+ vldrw.u32 q1, [r5, #96]
253
+ vshr.u32 q6, q5, #0x15
254
+ vldrw.u32 q4, [r5, #16]
255
+ vsli.32 q6, q5, #0xb
256
+ vldrw.u32 q5, [r5, #176]
257
+ veor q1, q4, q1
258
+ vldrw.u32 q4, [r5, #256]
259
+ veor q5, q1, q5
260
+ vldrw.u32 q1, [r5, #336]
261
+ veor q5, q5, q4
262
+ vstrw.32 q0, [r4, #192]
263
+ veor q0, q5, q1
264
+ vstrw.32 q6, [r4, #48]
265
+ vshr.u32 q5, q0, #0x1f
266
+ vsli.32 q5, q0, #0x1
267
+ vldrw.u32 q4, [r2, #16]
268
+ veor q3, q5, q3
269
+ vldrw.u32 q6, [r2, #96]
270
+ veor q4, q4, q6
271
+ vldrw.u32 q1, [r2, #176]
272
+ veor q5, q4, q1
273
+ vldrw.u32 q6, [r2, #256]
274
+ veor q6, q5, q6
275
+ vldrw.u32 q4, [r2, #336]
276
+ veor q5, q6, q4
277
+ vldrw.u32 q1, [r5]
278
+ veor q7, q5, q7
279
+ vldrw.u32 q4, [r2]
280
+ veor q1, q1, q7
281
+ veor q4, q4, q3
282
+ vshr.u32 q6, q1, #0x20
283
+ vsli.32 q6, q1, #0x0
284
+ vldrw.u32 q1, [r2, #80]
285
+ veor q1, q1, q3
286
+ vstrw.32 q6, [r10]
287
+ vshr.u32 q6, q4, #0x20
288
+ vsli.32 q6, q4, #0x0
289
+ vldrw.u32 q4, [r5, #80]
290
+ veor q4, q4, q7
291
+ vstrw.32 q6, [r4]
292
+ vshr.u32 q6, q1, #0xe
293
+ vsli.32 q6, q1, #0x12
294
+ vldrw.u32 q1, [r2, #160]
295
+ veor q1, q1, q3
296
+ vstrw.32 q6, [r4, #256]
297
+ vshr.u32 q6, q4, #0xe
298
+ vsli.32 q6, q4, #0x12
299
+ vldrw.u32 q4, [r2, #240]
300
+ veor q4, q4, q3
301
+ vstrw.32 q6, [r10, #256]
302
+ vshr.u32 q6, q1, #0x1f
303
+ vsli.32 q6, q1, #0x1
304
+ vldrw.u32 q1, [r2, #320]
305
+ veor q1, q1, q3
306
+ vstrw.32 q6, [r10, #112]
307
+ vshr.u32 q6, q4, #0xc
308
+ vsli.32 q6, q4, #0x14
309
+ vldrw.u32 q3, [r5, #240]
310
+ veor q3, q3, q7
311
+ vstrw.32 q6, [r10, #368]
312
+ vshr.u32 q4, q3, #0xb
313
+ vsli.32 q4, q3, #0x15
314
+ vldrw.u32 q3, [r5, #160]
315
+ veor q6, q3, q7
316
+ vstrw.32 q4, [r4, #368]
317
+ vshr.u32 q3, q6, #0x1e
318
+ vsli.32 q3, q6, #0x2
319
+ vldrw.u32 q6, [r5, #320]
320
+ veor q7, q6, q7
321
+ vldrw.u32 q4, [r2, #368]
322
+ vshr.u32 q6, q1, #0x17
323
+ vstrw.32 q3, [r4, #112]
324
+ vsli.32 q6, q1, #0x9
325
+ vshr.u32 q1, q7, #0x17
326
+ vldrw.u32 q3, [r2, #48]
327
+ vsli.32 q1, q7, #0x9
328
+ vldrw.u32 q7, [r2, #128]
329
+ veor q3, q3, q7
330
+ vldrw.u32 q7, [r2, #208]
331
+ veor q7, q3, q7
332
+ vldrw.u32 q3, [r2, #288]
333
+ veor q3, q7, q3
334
+ vldrw.u32 q7, [r5, #128]
335
+ veor q3, q3, q4
336
+ vldrw.u32 q4, [r5, #48]
337
+ veor q0, q3, q0
338
+ veor q4, q4, q7
339
+ vldrw.u32 q7, [r5, #208]
340
+ veor q4, q4, q7
341
+ vldrw.u32 q7, [r5, #288]
342
+ veor q4, q4, q7
343
+ vldrw.u32 q7, [r5, #368]
344
+ veor q7, q4, q7
345
+ vstrw.32 q6, [r4, #224]
346
+ vshr.u32 q4, q7, #0x1f
347
+ vstrw.32 q1, [r10, #224]
348
+ vsli.32 q4, q7, #0x1
349
+ veor q5, q4, q5
350
+ vldrw.u32 q6, [r2, #192]
351
+ veor q1, q6, q5
352
+ vldrw.u32 q4, [r5, #112]
353
+ veor q7, q2, q7
354
+ vldrw.u32 q6, [r5, #32]
355
+ vshr.u32 q2, q1, #0xb
356
+ vsli.32 q2, q1, #0x15
357
+ veor q1, q6, q0
358
+ vstrw.32 q2, [r10, #32]
359
+ vshr.u32 q6, q1, #0x1
360
+ vsli.32 q6, q1, #0x1f
361
+ vldrw.u32 q2, [r2, #112]
362
+ veor q2, q2, q5
363
+ vstrw.32 q6, [r10, #320]
364
+ vshr.u32 q1, q2, #0x1d
365
+ vsli.32 q1, q2, #0x3
366
+ vldrw.u32 q6, [r2, #32]
367
+ veor q4, q4, q0
368
+ vstrw.32 q1, [r4, #176]
369
+ veor q2, q6, q5
370
+ vshr.u32 q6, q2, #0x1
371
+ vldrw.u32 q1, [r5, #352]
372
+ vsli.32 q6, q2, #0x1f
373
+ veor q1, q1, q0
374
+ vstrw.32 q6, [r4, #320]
375
+ vshr.u32 q6, q1, #0x1
376
+ vsli.32 q6, q1, #0x1f
377
+ vldrw.u32 q2, [r5, #192]
378
+ vshr.u32 q1, q4, #0x1d
379
+ vstrw.32 q6, [r4, #144]
380
+ vsli.32 q1, q4, #0x3
381
+ veor q2, q2, q0
382
+ vldrw.u32 q6, [r5, #272]
383
+ veor q0, q6, q0
384
+ vldrw.u32 q4, [r2, #352]
385
+ veor q6, q4, q5
386
+ vldrw.u32 q4, [r2, #272]
387
+ veor q4, q4, q5
388
+ vstrw.32 q1, [r10, #176]
389
+ vshr.u32 q1, q2, #0xa
390
+ vsli.32 q1, q2, #0x16
391
+ vldrw.u32 q5, [sp]
392
+ vshr.u32 q2, q0, #0x18
393
+ vstrw.32 q1, [r4, #32]
394
+ vsli.32 q2, q0, #0x8
395
+ vshr.u32 q1, q6, #0x2
396
+ vstrw.32 q2, [r4, #288]
397
+ vsli.32 q1, q6, #0x1e
398
+ vshr.u32 q6, q4, #0x19
399
+ vstrw.32 q1, [r10, #144]
400
+ vsli.32 q6, q4, #0x7
401
+ vshr.u32 q0, q5, #0x1f
402
+ vstrw.32 q6, [r10, #288]
403
+ vsli.32 q0, q5, #0x1
404
+ veor q5, q0, q3
405
+ vldrw.u32 q6, [r2, #64]
406
+ veor q3, q6, q5
407
+ vldrw.u32 q1, [r5, #64]
408
+ vshr.u32 q4, q3, #0x13
409
+ vldrw.u32 q2, [r2, #384]
410
+ vsli.32 q4, q3, #0xd
411
+ vldrw.u32 q0, [r5, #224]
412
+ veor q6, q1, q7
413
+ vstrw.32 q4, [r10, #240]
414
+ veor q2, q2, q5
415
+ veor q3, q0, q7
416
+ vldrw.u32 q0, [r2, #224]
417
+ vshr.u32 q4, q6, #0x12
418
+ vldrw.u32 q1, [r5, #384]
419
+ vsli.32 q4, q6, #0xe
420
+ vshr.u32 q6, q2, #0x19
421
+ vstrw.32 q4, [r4, #240]
422
+ vsli.32 q6, q2, #0x7
423
+ vshr.u32 q2, q3, #0xc
424
+ vstrw.32 q6, [r4, #64]
425
+ vsli.32 q2, q3, #0x14
426
+ veor q0, q0, q5
427
+ vldrw.u32 q6, [r2, #144]
428
+ veor q4, q1, q7
429
+ veor q6, q6, q5
430
+ vstrw.32 q2, [r4, #352]
431
+ vshr.u32 q2, q4, #0x19
432
+ vsli.32 q2, q4, #0x7
433
+ vldrw.u32 q1, [r2, #304]
434
+ veor q5, q1, q5
435
+ vldrw.u32 q1, [r5, #144]
436
+ veor q4, q1, q7
437
+ vldrw.u32 q3, [r5, #304]
438
+ veor q1, q3, q7
439
+ vstrw.32 q2, [r10, #64]
440
+ vshr.u32 q3, q0, #0xd
441
+ vsli.32 q3, q0, #0x13
442
+ vldrw.u32 q7, [r4, #80]
443
+ vshr.u32 q0, q6, #0x16
444
+ vstrw.32 q3, [r10, #352]
445
+ vsli.32 q0, q6, #0xa
446
+ vshr.u32 q2, q5, #0x1c
447
+ vsli.32 q2, q5, #0x4
448
+ vldrw.u32 q5, [r4, #112]
449
+ vshr.u32 q3, q1, #0x1c
450
+ vsli.32 q3, q1, #0x4
451
+ vldrw.u32 q1, [r4, #128]
452
+ vbic q6, q5, q0
453
+ vstrw.32 q3, [r10, #208]
454
+ vbic q3, q1, q5
455
+ veor q3, q0, q3
456
+ vstrw.32 q3, [r2, #96]
457
+ vbic q3, q0, q7
458
+ veor q0, q7, q6
459
+ vldrw.u32 q6, [r4, #144]
460
+ vbic q7, q7, q6
461
+ vstrw.32 q0, [r2, #80]
462
+ veor q3, q6, q3
463
+ vstrw.32 q3, [r2, #144]
464
+ veor q0, q1, q7
465
+ vstrw.32 q0, [r2, #128]
466
+ vbic q1, q6, q1
467
+ vshr.u32 q6, q4, #0x16
468
+ vldrw.u32 q3, [r10, #112]
469
+ vsli.32 q6, q4, #0xa
470
+ vldrw.u32 q4, [r10, #80]
471
+ veor q1, q5, q1
472
+ vldrw.u32 q0, [r10, #144]
473
+ vbic q7, q4, q0
474
+ vldrw.u32 q5, [r10, #128]
475
+ veor q7, q5, q7
476
+ vstrw.32 q1, [r2, #112]
477
+ vbic q1, q0, q5
478
+ vstrw.32 q7, [r5, #128]
479
+ veor q7, q3, q1
480
+ vstrw.32 q7, [r5, #112]
481
+ vbic q7, q5, q3
482
+ vbic q1, q3, q6
483
+ vldrw.u32 q3, [r4, #176]
484
+ veor q5, q4, q1
485
+ vbic q4, q6, q4
486
+ vldrw.u32 q1, [r4, #160]
487
+ veor q0, q0, q4
488
+ vldrw.u32 q4, [r4, #224]
489
+ veor q7, q6, q7
490
+ vstrw.32 q0, [r5, #144]
491
+ vbic q0, q1, q4
492
+ vstrw.32 q7, [r5, #96]
493
+ veor q0, q2, q0
494
+ vstrw.32 q0, [r2, #208]
495
+ vbic q6, q3, q1
496
+ vstrw.32 q5, [r5, #80]
497
+ vbic q7, q4, q2
498
+ vldrw.u32 q0, [r10, #160]
499
+ veor q6, q4, q6
500
+ vldrw.u32 q5, [r4, #192]
501
+ vbic q4, q2, q5
502
+ vldrw.u32 q2, [r10, #224]
503
+ veor q4, q3, q4
504
+ vstrw.32 q4, [r2, #176]
505
+ vbic q4, q5, q3
506
+ vstrw.32 q6, [r2, #224]
507
+ veor q4, q1, q4
508
+ vldrw.u32 q1, [r10, #208]
509
+ veor q3, q5, q7
510
+ vldrw.u32 q5, [r10, #192]
511
+ vbic q6, q1, q5
512
+ vldrw.u32 q7, [r10, #176]
513
+ veor q6, q7, q6
514
+ vstrw.32 q3, [r2, #192]
515
+ vbic q3, q0, q2
516
+ vstrw.32 q6, [r5, #176]
517
+ veor q3, q1, q3
518
+ vstrw.32 q3, [r5, #208]
519
+ vbic q3, q5, q7
520
+ vstrw.32 q4, [r2, #160]
521
+ veor q3, q0, q3
522
+ vstrw.32 q3, [r5, #160]
523
+ vbic q6, q2, q1
524
+ vldrw.u32 q1, [r4, #288]
525
+ vbic q7, q7, q0
526
+ vldrw.u32 q3, [r4, #272]
527
+ veor q0, q5, q6
528
+ vldrw.u32 q4, [r4, #304]
529
+ veor q6, q2, q7
530
+ vldrw.u32 q7, [r4, #256]
531
+ vbic q5, q4, q1
532
+ vstrw.32 q0, [r5, #192]
533
+ veor q5, q3, q5
534
+ vstrw.32 q6, [r5, #224]
535
+ vbic q0, q3, q7
536
+ vstrw.32 q5, [r2, #272]
537
+ vbic q6, q1, q3
538
+ veor q5, q7, q6
539
+ vldrw.u32 q3, [r4, #240]
540
+ veor q6, q3, q0
541
+ vldrw.u32 q2, [r10, #288]
542
+ vbic q0, q3, q4
543
+ vstrw.32 q6, [r2, #240]
544
+ vbic q7, q7, q3
545
+ vstrw.32 q5, [r2, #256]
546
+ veor q7, q4, q7
547
+ vstrw.32 q7, [r2, #304]
548
+ veor q7, q1, q0
549
+ vstrw.32 q7, [r2, #288]
550
+ vldrw.u32 q5, [r10, #304]
551
+ vbic q7, q5, q2
552
+ vldrw.u32 q3, [r10, #272]
553
+ veor q1, q3, q7
554
+ vldrw.u32 q7, [r4, #336]
555
+ vbic q4, q2, q3
556
+ vldrw.u32 q6, [r10, #256]
557
+ vbic q3, q3, q6
558
+ vldrw.u32 q0, [r10, #240]
559
+ veor q3, q0, q3
560
+ vstrw.32 q1, [r5, #272]
561
+ vbic q1, q0, q5
562
+ vstrw.32 q3, [r5, #240]
563
+ veor q1, q2, q1
564
+ vldrw.u32 q3, [r4, #384]
565
+ vbic q2, q6, q0
566
+ vldrw.u32 q0, [r4, #320]
567
+ veor q2, q5, q2
568
+ vldrw.u32 q5, [r4, #352]
569
+ veor q4, q6, q4
570
+ vstrw.32 q2, [r5, #304]
571
+ vbic q2, q7, q0
572
+ vstrw.32 q1, [r5, #288]
573
+ veor q1, q3, q2
574
+ vstrw.32 q1, [r2, #384]
575
+ vbic q2, q5, q7
576
+ vstrw.32 q4, [r5, #256]
577
+ veor q4, q0, q2
578
+ vstrw.32 q4, [r2, #320]
579
+ vbic q2, q0, q3
580
+ vldrw.u32 q4, [r4, #368]
581
+ vbic q3, q3, q4
582
+ vldrw.u32 q0, [r10, #320]
583
+ veor q1, q5, q3
584
+ vldrw.u32 q6, [r10, #336]
585
+ vbic q5, q4, q5
586
+ vstrw.32 q1, [r2, #352]
587
+ veor q5, q7, q5
588
+ vstrw.32 q5, [r2, #336]
589
+ veor q3, q4, q2
590
+ vstrw.32 q3, [r2, #368]
591
+ vbic q7, q6, q0
592
+ vldrw.u32 q5, [r10, #352]
593
+ vbic q3, q5, q6
594
+ vldrw.u32 q1, [r10, #368]
595
+ vbic q4, q1, q5
596
+ vldrw.u32 q2, [r4, #16]
597
+ veor q6, q6, q4
598
+ vldrw.u32 q4, [r10, #384]
599
+ veor q3, q0, q3
600
+ vstrw.32 q3, [r5, #320]
601
+ veor q3, q4, q7
602
+ vstrw.32 q3, [r5, #384]
603
+ vbic q0, q0, q4
604
+ vstrw.32 q6, [r5, #336]
605
+ veor q3, q1, q0
606
+ vstrw.32 q3, [r5, #368]
607
+ vbic q7, q4, q1
608
+ veor q5, q5, q7
609
+ vldrw.u32 q6, [r4, #32]
610
+ vbic q3, q6, q2
611
+ vldrw.u32 q4, [r4, #48]
612
+ vbic q0, q4, q6
613
+ vldrw.u32 q1, [r4]
614
+ veor q0, q2, q0
615
+ vldrw.u32 q7, [r4, #64]
616
+ veor q3, q1, q3
617
+ vstrw.32 q5, [r5, #352]
618
+ vbic q5, q1, q7
619
+ vstrw.32 q0, [r2, #16]
620
+ veor q0, q4, q5
621
+ vstrw.32 q0, [r2, #48]
622
+ vbic q5, q2, q1
623
+ veor q2, q7, q5
624
+ vldrw.u32 q0, [r10, #16]
625
+ vbic q5, q7, q4
626
+ vldrw.u32 q4, [r10]
627
+ vbic q1, q0, q4
628
+ vldrw.u32 q7, [r10, #64]
629
+ veor q1, q7, q1
630
+ vstrw.32 q2, [r2, #64]
631
+ veor q2, q6, q5
632
+ vbic q6, q4, q7
633
+ vldrw.u32 q5, [r10, #48]
634
+ veor q6, q5, q6
635
+ ldrd r7, r8, [r6]
636
+ vbic q7, q7, q5
637
+ vstrw.32 q1, [r5, #64]
638
+ vdup.32 q1, r7
639
+ veor q1, q3, q1
640
+ vldrw.u32 q3, [r10, #32]
641
+ veor q7, q3, q7
642
+ add.w r6, r6, #0x8
643
+ vbic q5, q5, q3
644
+ vstrw.32 q6, [r5, #48]
645
+ vbic q6, q3, q0
646
+ vstrw.32 q1, [r2]
647
+ veor q5, q0, q5
648
+ vstrw.32 q7, [r5, #32]
649
+ veor q4, q4, q6
650
+ vstrw.32 q5, [r5, #16]
651
+ vdup.32 q6, r8
652
+ vstrw.32 q2, [r2, #32]
653
+ veor q0, q4, q6
654
+ vstrw.32 q0, [r5]
655
+
656
+ keccak_f1600_x4_mve_asm_roundend_pre:
657
+ le lr, keccak_f1600_x4_mve_asm_roundstart @ imm = #-0x8c0
658
+
659
+ keccak_f1600_x4_mve_asm_roundend:
660
+ add sp, #0x80
661
+ vpop {d8, d9, d10, d11, d12, d13, d14, d15}
662
+ pop.w {r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, pc}
663
+ nop
664
+
665
+ MLK_ASM_FN_SIZE(keccak_f1600_x4_mve_asm)
666
+
667
+ #endif /* MLK_FIPS202_ARMV81M_NEED_X4 && !MLK_CONFIG_MULTILEVEL_NO_SHARED */
@@ -0,0 +1,40 @@
1
+ /*
2
+ * Copyright (c) The mlkem-native project authors
3
+ * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT
4
+ */
5
+
6
+ #include "../../../../common.h"
7
+ #include "../../../../verify.h"
8
+
9
+ #if defined(MLK_FIPS202_ARMV81M_NEED_X4) && \
10
+ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED)
11
+
12
+ #include "fips202_native_armv81m.h"
13
+
14
+
15
+ /*
16
+ * Keccak-f1600 x4 permutation (on bit-interleaved state)
17
+ * State is expected to already be in bit-interleaved format.
18
+ */
19
+ #define mlk_keccak_f1600_x4_native_impl \
20
+ MLK_NAMESPACE(keccak_f1600_x4_native_impl)
21
+ int mlk_keccak_f1600_x4_native_impl(uint64_t *state)
22
+ {
23
+ MLK_ALIGN uint64_t state_tmp[100];
24
+ mlk_keccak_f1600_x4_mve_asm(state, state_tmp,
25
+ mlk_keccakf1600_round_constants);
26
+ mlk_zeroize(state_tmp, sizeof(state_tmp));
27
+ return MLK_NATIVE_FUNC_SUCCESS;
28
+ }
29
+
30
+ #else /* MLK_FIPS202_ARMV81M_NEED_X4 && !MLK_CONFIG_MULTILEVEL_NO_SHARED */
31
+
32
+ MLK_EMPTY_CU(keccak_f1600_x4_mve)
33
+
34
+ #endif /* !(MLK_FIPS202_ARMV81M_NEED_X4 && !MLK_CONFIG_MULTILEVEL_NO_SHARED) \
35
+ */
36
+
37
+ /* To facilitate single-compilation-unit (SCU) builds, undefine all macros.
38
+ * Don't modify by hand -- this is auto-generated by scripts/autogen. */
39
+ /* Some macros are kept because they are also defined in a header. */
40
+ /* Keep: mlk_keccak_f1600_x4_native_impl (mve.h) */