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,638 @@
1
+ /*
2
+ * Copyright (c) The mlkem-native project authors
3
+ * Copyright (c) The mldsa-native project authors
4
+ * Copyright (c) 2025 Arm Limited
5
+ * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT
6
+ */
7
+
8
+ /*yaml
9
+ Name: keccak_f1600_x4_mve_asm
10
+ Description: Armv8.1-M MVE implementation of 4-way parallel Keccak-f[1600] permutation using bit-interleaved state
11
+ Signature: void mld_keccak_f1600_x4_mve_asm(void *state, void *tmpstate, const uint32_t *rc)
12
+ ABI:
13
+ r0:
14
+ type: buffer
15
+ size_bytes: 800
16
+ permissions: read/write
17
+ c_parameter: void *state
18
+ description: Four bit-interleaved Keccak states (low halves followed by high halves)
19
+ r1:
20
+ type: buffer
21
+ size_bytes: 800
22
+ permissions: read/write
23
+ c_parameter: void *tmpstate
24
+ description: Temporary storage for intermediate state
25
+ r2:
26
+ type: buffer
27
+ size_bytes: 192
28
+ permissions: read
29
+ c_parameter: const uint32_t *rc
30
+ description: Keccak round constants in bit-interleaved form (24 pairs of 32-bit words)
31
+ Stack:
32
+ bytes: 236
33
+ description: register preservation (44) + SIMD registers (64) + temporary storage (128)
34
+ */
35
+
36
+ #include "../../../../common.h"
37
+ #if defined(MLD_FIPS202_ARMV81M_NEED_X4) && \
38
+ !defined(MLD_CONFIG_MULTILEVEL_NO_SHARED)
39
+
40
+ /*
41
+ * WARNING: This file is auto-derived from the mldsa-native source file
42
+ * dev/fips202/armv81m/src/keccak_f1600_x4_mve.S using scripts/simpasm. Do not modify it directly.
43
+ */
44
+
45
+ .thumb
46
+ .syntax unified
47
+
48
+ .text
49
+ .balign 4
50
+ .global MLD_ASM_NAMESPACE(keccak_f1600_x4_mve_asm)
51
+ MLD_ASM_FN_SYMBOL(keccak_f1600_x4_mve_asm)
52
+
53
+ push.w {r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, lr}
54
+ vpush {d8, d9, d10, d11, d12, d13, d14, d15}
55
+ sub sp, #0x80
56
+ mov r6, r2
57
+ mov.w lr, #0x18
58
+ mov r2, r0
59
+ mov r4, r1
60
+ add.w r3, r2, #0x190
61
+ vldrw.u32 q0, [r3]
62
+ vldrw.u32 q1, [r2]
63
+ vldrw.u32 q2, [r2, #32]
64
+ wls lr, lr, keccak_f1600_x4_mve_asm_roundend @ imm = #0x8c0
65
+
66
+ keccak_f1600_x4_mve_asm_roundstart:
67
+ vldrw.u32 q6, [r2, #112]
68
+ veor q7, q6, q2
69
+ vldrw.u32 q2, [r2, #80]
70
+ veor q1, q2, q1
71
+ add.w r5, r2, #0x190
72
+ vldrw.u32 q5, [r5, #80]
73
+ veor q4, q5, q0
74
+ vldrw.u32 q0, [r2, #192]
75
+ veor q3, q7, q0
76
+ vldrw.u32 q0, [r2, #160]
77
+ veor q1, q1, q0
78
+ vldrw.u32 q0, [r5, #160]
79
+ veor q0, q4, q0
80
+ vldrw.u32 q6, [r2, #272]
81
+ veor q2, q3, q6
82
+ vldrw.u32 q7, [r2, #240]
83
+ veor q5, q1, q7
84
+ vldrw.u32 q4, [r5, #240]
85
+ veor q4, q0, q4
86
+ vldrw.u32 q6, [r2, #352]
87
+ veor q3, q2, q6
88
+ vldrw.u32 q0, [r2, #320]
89
+ veor q2, q5, q0
90
+ vldrw.u32 q1, [r5, #320]
91
+ veor q5, q4, q1
92
+ vldrw.u32 q4, [r5, #32]
93
+ veor q0, q3, q5
94
+ vldrw.u32 q1, [r5, #16]
95
+ veor q6, q1, q0
96
+ vstrw.32 q5, [sp]
97
+ vshr.u32 q7, q6, #0x1f
98
+ add.w r10, r4, #0x190
99
+ vsli.32 q7, q6, #0x1
100
+ vldrw.u32 q6, [r5, #112]
101
+ veor q6, q4, q6
102
+ vldrw.u32 q4, [r5, #192]
103
+ veor q4, q6, q4
104
+ vldrw.u32 q6, [r5, #272]
105
+ veor q4, q4, q6
106
+ vldrw.u32 q6, [r5, #352]
107
+ veor q5, q4, q6
108
+ vstrw.32 q7, [r4, #160]
109
+ vshr.u32 q4, q5, #0x1f
110
+ vsli.32 q4, q5, #0x1
111
+ vldrw.u32 q6, [r2, #16]
112
+ veor q7, q4, q2
113
+ veor q1, q6, q7
114
+ vldrw.u32 q6, [r5, #96]
115
+ veor q6, q6, q0
116
+ vstrw.32 q1, [r10, #160]
117
+ vshr.u32 q1, q6, #0xa
118
+ vsli.32 q1, q6, #0x16
119
+ vldrw.u32 q6, [r2, #96]
120
+ veor q4, q6, q7
121
+ vstrw.32 q1, [r10, #16]
122
+ vshr.u32 q6, q4, #0xa
123
+ vsli.32 q6, q4, #0x16
124
+ vldrw.u32 q1, [r5, #336]
125
+ veor q4, q1, q0
126
+ vldrw.u32 q1, [r2, #176]
127
+ veor q1, q1, q7
128
+ vstrw.32 q6, [r4, #16]
129
+ vshr.u32 q6, q1, #0x1b
130
+ vsli.32 q6, q1, #0x5
131
+ vldrw.u32 q1, [r2, #256]
132
+ veor q1, q1, q7
133
+ vstrw.32 q6, [r4, #272]
134
+ vshr.u32 q6, q1, #0xa
135
+ vsli.32 q6, q1, #0x16
136
+ vldrw.u32 q1, [r2, #336]
137
+ veor q1, q1, q7
138
+ vstrw.32 q6, [r10, #128]
139
+ vshr.u32 q6, q1, #0x1f
140
+ vsli.32 q6, q1, #0x1
141
+ vldrw.u32 q7, [r5, #176]
142
+ veor q7, q7, q0
143
+ vstrw.32 q6, [r4, #384]
144
+ vshr.u32 q1, q7, #0x1b
145
+ vsli.32 q1, q7, #0x5
146
+ vldrw.u32 q6, [r5, #256]
147
+ veor q0, q6, q0
148
+ vstrw.32 q1, [r10, #272]
149
+ vshr.u32 q1, q4, #0x1f
150
+ vldrw.u32 q7, [r5, #64]
151
+ vsli.32 q1, q4, #0x1
152
+ vldrw.u32 q4, [r5, #144]
153
+ vshr.u32 q6, q0, #0x9
154
+ vstrw.32 q1, [r10, #384]
155
+ vsli.32 q6, q0, #0x17
156
+ veor q7, q7, q4
157
+ vldrw.u32 q1, [r5, #224]
158
+ veor q4, q7, q1
159
+ vldrw.u32 q7, [r5, #304]
160
+ veor q1, q4, q7
161
+ vldrw.u32 q0, [r5, #384]
162
+ veor q7, q1, q0
163
+ vstrw.32 q6, [r4, #128]
164
+ vshr.u32 q1, q7, #0x1f
165
+ vsli.32 q1, q7, #0x1
166
+ vldrw.u32 q6, [r2, #144]
167
+ veor q0, q1, q3
168
+ vldrw.u32 q3, [r2, #64]
169
+ veor q1, q3, q6
170
+ vldrw.u32 q6, [r2, #224]
171
+ veor q1, q1, q6
172
+ vldrw.u32 q3, [r2, #304]
173
+ veor q6, q1, q3
174
+ vldrw.u32 q4, [r2, #384]
175
+ veor q3, q6, q4
176
+ vldrw.u32 q4, [r2, #48]
177
+ veor q5, q3, q5
178
+ vldrw.u32 q1, [r5, #48]
179
+ veor q1, q1, q5
180
+ vshr.u32 q6, q1, #0x12
181
+ vsli.32 q6, q1, #0xe
182
+ vldrw.u32 q1, [r2, #128]
183
+ veor q1, q1, q0
184
+ vstrw.32 q6, [r10, #80]
185
+ vshr.u32 q6, q1, #0x5
186
+ vsli.32 q6, q1, #0x1b
187
+ vldrw.u32 q1, [r5, #128]
188
+ veor q1, q1, q5
189
+ vstrw.32 q6, [r10, #336]
190
+ vshr.u32 q6, q1, #0x4
191
+ vsli.32 q6, q1, #0x1c
192
+ veor q1, q4, q0
193
+ vstrw.32 q6, [r4, #336]
194
+ vshr.u32 q4, q1, #0x12
195
+ vsli.32 q4, q1, #0xe
196
+ vldrw.u32 q6, [r2, #208]
197
+ veor q6, q6, q0
198
+ vstrw.32 q4, [r4, #80]
199
+ vshr.u32 q1, q6, #0x14
200
+ vsli.32 q1, q6, #0xc
201
+ vldrw.u32 q4, [r2, #288]
202
+ veor q4, q4, q0
203
+ vldrw.u32 q6, [r2, #368]
204
+ veor q0, q6, q0
205
+ vshr.u32 q6, q0, #0x4
206
+ vstrw.32 q1, [r10, #192]
207
+ vsli.32 q6, q0, #0x1c
208
+ vshr.u32 q0, q4, #0x16
209
+ vldrw.u32 q1, [r5, #368]
210
+ vsli.32 q0, q4, #0xa
211
+ vstrw.32 q6, [r4, #304]
212
+ veor q4, q1, q5
213
+ vstrw.32 q0, [r10, #48]
214
+ vshr.u32 q1, q4, #0x4
215
+ vsli.32 q1, q4, #0x1c
216
+ vldrw.u32 q6, [r5, #208]
217
+ veor q6, q6, q5
218
+ vldrw.u32 q0, [r5, #288]
219
+ veor q5, q0, q5
220
+ vstrw.32 q1, [r10, #304]
221
+ vshr.u32 q0, q6, #0x13
222
+ vsli.32 q0, q6, #0xd
223
+ vldrw.u32 q1, [r5, #96]
224
+ vshr.u32 q6, q5, #0x15
225
+ vldrw.u32 q4, [r5, #16]
226
+ vsli.32 q6, q5, #0xb
227
+ vldrw.u32 q5, [r5, #176]
228
+ veor q1, q4, q1
229
+ vldrw.u32 q4, [r5, #256]
230
+ veor q5, q1, q5
231
+ vldrw.u32 q1, [r5, #336]
232
+ veor q5, q5, q4
233
+ vstrw.32 q0, [r4, #192]
234
+ veor q0, q5, q1
235
+ vstrw.32 q6, [r4, #48]
236
+ vshr.u32 q5, q0, #0x1f
237
+ vsli.32 q5, q0, #0x1
238
+ vldrw.u32 q4, [r2, #16]
239
+ veor q3, q5, q3
240
+ vldrw.u32 q6, [r2, #96]
241
+ veor q4, q4, q6
242
+ vldrw.u32 q1, [r2, #176]
243
+ veor q5, q4, q1
244
+ vldrw.u32 q6, [r2, #256]
245
+ veor q6, q5, q6
246
+ vldrw.u32 q4, [r2, #336]
247
+ veor q5, q6, q4
248
+ vldrw.u32 q1, [r5]
249
+ veor q7, q5, q7
250
+ vldrw.u32 q4, [r2]
251
+ veor q1, q1, q7
252
+ veor q4, q4, q3
253
+ vshr.u32 q6, q1, #0x20
254
+ vsli.32 q6, q1, #0x0
255
+ vldrw.u32 q1, [r2, #80]
256
+ veor q1, q1, q3
257
+ vstrw.32 q6, [r10]
258
+ vshr.u32 q6, q4, #0x20
259
+ vsli.32 q6, q4, #0x0
260
+ vldrw.u32 q4, [r5, #80]
261
+ veor q4, q4, q7
262
+ vstrw.32 q6, [r4]
263
+ vshr.u32 q6, q1, #0xe
264
+ vsli.32 q6, q1, #0x12
265
+ vldrw.u32 q1, [r2, #160]
266
+ veor q1, q1, q3
267
+ vstrw.32 q6, [r4, #256]
268
+ vshr.u32 q6, q4, #0xe
269
+ vsli.32 q6, q4, #0x12
270
+ vldrw.u32 q4, [r2, #240]
271
+ veor q4, q4, q3
272
+ vstrw.32 q6, [r10, #256]
273
+ vshr.u32 q6, q1, #0x1f
274
+ vsli.32 q6, q1, #0x1
275
+ vldrw.u32 q1, [r2, #320]
276
+ veor q1, q1, q3
277
+ vstrw.32 q6, [r10, #112]
278
+ vshr.u32 q6, q4, #0xc
279
+ vsli.32 q6, q4, #0x14
280
+ vldrw.u32 q3, [r5, #240]
281
+ veor q3, q3, q7
282
+ vstrw.32 q6, [r10, #368]
283
+ vshr.u32 q4, q3, #0xb
284
+ vsli.32 q4, q3, #0x15
285
+ vldrw.u32 q3, [r5, #160]
286
+ veor q6, q3, q7
287
+ vstrw.32 q4, [r4, #368]
288
+ vshr.u32 q3, q6, #0x1e
289
+ vsli.32 q3, q6, #0x2
290
+ vldrw.u32 q6, [r5, #320]
291
+ veor q7, q6, q7
292
+ vldrw.u32 q4, [r2, #368]
293
+ vshr.u32 q6, q1, #0x17
294
+ vstrw.32 q3, [r4, #112]
295
+ vsli.32 q6, q1, #0x9
296
+ vshr.u32 q1, q7, #0x17
297
+ vldrw.u32 q3, [r2, #48]
298
+ vsli.32 q1, q7, #0x9
299
+ vldrw.u32 q7, [r2, #128]
300
+ veor q3, q3, q7
301
+ vldrw.u32 q7, [r2, #208]
302
+ veor q7, q3, q7
303
+ vldrw.u32 q3, [r2, #288]
304
+ veor q3, q7, q3
305
+ vldrw.u32 q7, [r5, #128]
306
+ veor q3, q3, q4
307
+ vldrw.u32 q4, [r5, #48]
308
+ veor q0, q3, q0
309
+ veor q4, q4, q7
310
+ vldrw.u32 q7, [r5, #208]
311
+ veor q4, q4, q7
312
+ vldrw.u32 q7, [r5, #288]
313
+ veor q4, q4, q7
314
+ vldrw.u32 q7, [r5, #368]
315
+ veor q7, q4, q7
316
+ vstrw.32 q6, [r4, #224]
317
+ vshr.u32 q4, q7, #0x1f
318
+ vstrw.32 q1, [r10, #224]
319
+ vsli.32 q4, q7, #0x1
320
+ veor q5, q4, q5
321
+ vldrw.u32 q6, [r2, #192]
322
+ veor q1, q6, q5
323
+ vldrw.u32 q4, [r5, #112]
324
+ veor q7, q2, q7
325
+ vldrw.u32 q6, [r5, #32]
326
+ vshr.u32 q2, q1, #0xb
327
+ vsli.32 q2, q1, #0x15
328
+ veor q1, q6, q0
329
+ vstrw.32 q2, [r10, #32]
330
+ vshr.u32 q6, q1, #0x1
331
+ vsli.32 q6, q1, #0x1f
332
+ vldrw.u32 q2, [r2, #112]
333
+ veor q2, q2, q5
334
+ vstrw.32 q6, [r10, #320]
335
+ vshr.u32 q1, q2, #0x1d
336
+ vsli.32 q1, q2, #0x3
337
+ vldrw.u32 q6, [r2, #32]
338
+ veor q4, q4, q0
339
+ vstrw.32 q1, [r4, #176]
340
+ veor q2, q6, q5
341
+ vshr.u32 q6, q2, #0x1
342
+ vldrw.u32 q1, [r5, #352]
343
+ vsli.32 q6, q2, #0x1f
344
+ veor q1, q1, q0
345
+ vstrw.32 q6, [r4, #320]
346
+ vshr.u32 q6, q1, #0x1
347
+ vsli.32 q6, q1, #0x1f
348
+ vldrw.u32 q2, [r5, #192]
349
+ vshr.u32 q1, q4, #0x1d
350
+ vstrw.32 q6, [r4, #144]
351
+ vsli.32 q1, q4, #0x3
352
+ veor q2, q2, q0
353
+ vldrw.u32 q6, [r5, #272]
354
+ veor q0, q6, q0
355
+ vldrw.u32 q4, [r2, #352]
356
+ veor q6, q4, q5
357
+ vldrw.u32 q4, [r2, #272]
358
+ veor q4, q4, q5
359
+ vstrw.32 q1, [r10, #176]
360
+ vshr.u32 q1, q2, #0xa
361
+ vsli.32 q1, q2, #0x16
362
+ vldrw.u32 q5, [sp]
363
+ vshr.u32 q2, q0, #0x18
364
+ vstrw.32 q1, [r4, #32]
365
+ vsli.32 q2, q0, #0x8
366
+ vshr.u32 q1, q6, #0x2
367
+ vstrw.32 q2, [r4, #288]
368
+ vsli.32 q1, q6, #0x1e
369
+ vshr.u32 q6, q4, #0x19
370
+ vstrw.32 q1, [r10, #144]
371
+ vsli.32 q6, q4, #0x7
372
+ vshr.u32 q0, q5, #0x1f
373
+ vstrw.32 q6, [r10, #288]
374
+ vsli.32 q0, q5, #0x1
375
+ veor q5, q0, q3
376
+ vldrw.u32 q6, [r2, #64]
377
+ veor q3, q6, q5
378
+ vldrw.u32 q1, [r5, #64]
379
+ vshr.u32 q4, q3, #0x13
380
+ vldrw.u32 q2, [r2, #384]
381
+ vsli.32 q4, q3, #0xd
382
+ vldrw.u32 q0, [r5, #224]
383
+ veor q6, q1, q7
384
+ vstrw.32 q4, [r10, #240]
385
+ veor q2, q2, q5
386
+ veor q3, q0, q7
387
+ vldrw.u32 q0, [r2, #224]
388
+ vshr.u32 q4, q6, #0x12
389
+ vldrw.u32 q1, [r5, #384]
390
+ vsli.32 q4, q6, #0xe
391
+ vshr.u32 q6, q2, #0x19
392
+ vstrw.32 q4, [r4, #240]
393
+ vsli.32 q6, q2, #0x7
394
+ vshr.u32 q2, q3, #0xc
395
+ vstrw.32 q6, [r4, #64]
396
+ vsli.32 q2, q3, #0x14
397
+ veor q0, q0, q5
398
+ vldrw.u32 q6, [r2, #144]
399
+ veor q4, q1, q7
400
+ veor q6, q6, q5
401
+ vstrw.32 q2, [r4, #352]
402
+ vshr.u32 q2, q4, #0x19
403
+ vsli.32 q2, q4, #0x7
404
+ vldrw.u32 q1, [r2, #304]
405
+ veor q5, q1, q5
406
+ vldrw.u32 q1, [r5, #144]
407
+ veor q4, q1, q7
408
+ vldrw.u32 q3, [r5, #304]
409
+ veor q1, q3, q7
410
+ vstrw.32 q2, [r10, #64]
411
+ vshr.u32 q3, q0, #0xd
412
+ vsli.32 q3, q0, #0x13
413
+ vldrw.u32 q7, [r4, #80]
414
+ vshr.u32 q0, q6, #0x16
415
+ vstrw.32 q3, [r10, #352]
416
+ vsli.32 q0, q6, #0xa
417
+ vshr.u32 q2, q5, #0x1c
418
+ vsli.32 q2, q5, #0x4
419
+ vldrw.u32 q5, [r4, #112]
420
+ vshr.u32 q3, q1, #0x1c
421
+ vsli.32 q3, q1, #0x4
422
+ vldrw.u32 q1, [r4, #128]
423
+ vbic q6, q5, q0
424
+ vstrw.32 q3, [r10, #208]
425
+ vbic q3, q1, q5
426
+ veor q3, q0, q3
427
+ vstrw.32 q3, [r2, #96]
428
+ vbic q3, q0, q7
429
+ veor q0, q7, q6
430
+ vldrw.u32 q6, [r4, #144]
431
+ vbic q7, q7, q6
432
+ vstrw.32 q0, [r2, #80]
433
+ veor q3, q6, q3
434
+ vstrw.32 q3, [r2, #144]
435
+ veor q0, q1, q7
436
+ vstrw.32 q0, [r2, #128]
437
+ vbic q1, q6, q1
438
+ vshr.u32 q6, q4, #0x16
439
+ vldrw.u32 q3, [r10, #112]
440
+ vsli.32 q6, q4, #0xa
441
+ vldrw.u32 q4, [r10, #80]
442
+ veor q1, q5, q1
443
+ vldrw.u32 q0, [r10, #144]
444
+ vbic q7, q4, q0
445
+ vldrw.u32 q5, [r10, #128]
446
+ veor q7, q5, q7
447
+ vstrw.32 q1, [r2, #112]
448
+ vbic q1, q0, q5
449
+ vstrw.32 q7, [r5, #128]
450
+ veor q7, q3, q1
451
+ vstrw.32 q7, [r5, #112]
452
+ vbic q7, q5, q3
453
+ vbic q1, q3, q6
454
+ vldrw.u32 q3, [r4, #176]
455
+ veor q5, q4, q1
456
+ vbic q4, q6, q4
457
+ vldrw.u32 q1, [r4, #160]
458
+ veor q0, q0, q4
459
+ vldrw.u32 q4, [r4, #224]
460
+ veor q7, q6, q7
461
+ vstrw.32 q0, [r5, #144]
462
+ vbic q0, q1, q4
463
+ vstrw.32 q7, [r5, #96]
464
+ veor q0, q2, q0
465
+ vstrw.32 q0, [r2, #208]
466
+ vbic q6, q3, q1
467
+ vstrw.32 q5, [r5, #80]
468
+ vbic q7, q4, q2
469
+ vldrw.u32 q0, [r10, #160]
470
+ veor q6, q4, q6
471
+ vldrw.u32 q5, [r4, #192]
472
+ vbic q4, q2, q5
473
+ vldrw.u32 q2, [r10, #224]
474
+ veor q4, q3, q4
475
+ vstrw.32 q4, [r2, #176]
476
+ vbic q4, q5, q3
477
+ vstrw.32 q6, [r2, #224]
478
+ veor q4, q1, q4
479
+ vldrw.u32 q1, [r10, #208]
480
+ veor q3, q5, q7
481
+ vldrw.u32 q5, [r10, #192]
482
+ vbic q6, q1, q5
483
+ vldrw.u32 q7, [r10, #176]
484
+ veor q6, q7, q6
485
+ vstrw.32 q3, [r2, #192]
486
+ vbic q3, q0, q2
487
+ vstrw.32 q6, [r5, #176]
488
+ veor q3, q1, q3
489
+ vstrw.32 q3, [r5, #208]
490
+ vbic q3, q5, q7
491
+ vstrw.32 q4, [r2, #160]
492
+ veor q3, q0, q3
493
+ vstrw.32 q3, [r5, #160]
494
+ vbic q6, q2, q1
495
+ vldrw.u32 q1, [r4, #288]
496
+ vbic q7, q7, q0
497
+ vldrw.u32 q3, [r4, #272]
498
+ veor q0, q5, q6
499
+ vldrw.u32 q4, [r4, #304]
500
+ veor q6, q2, q7
501
+ vldrw.u32 q7, [r4, #256]
502
+ vbic q5, q4, q1
503
+ vstrw.32 q0, [r5, #192]
504
+ veor q5, q3, q5
505
+ vstrw.32 q6, [r5, #224]
506
+ vbic q0, q3, q7
507
+ vstrw.32 q5, [r2, #272]
508
+ vbic q6, q1, q3
509
+ veor q5, q7, q6
510
+ vldrw.u32 q3, [r4, #240]
511
+ veor q6, q3, q0
512
+ vldrw.u32 q2, [r10, #288]
513
+ vbic q0, q3, q4
514
+ vstrw.32 q6, [r2, #240]
515
+ vbic q7, q7, q3
516
+ vstrw.32 q5, [r2, #256]
517
+ veor q7, q4, q7
518
+ vstrw.32 q7, [r2, #304]
519
+ veor q7, q1, q0
520
+ vstrw.32 q7, [r2, #288]
521
+ vldrw.u32 q5, [r10, #304]
522
+ vbic q7, q5, q2
523
+ vldrw.u32 q3, [r10, #272]
524
+ veor q1, q3, q7
525
+ vldrw.u32 q7, [r4, #336]
526
+ vbic q4, q2, q3
527
+ vldrw.u32 q6, [r10, #256]
528
+ vbic q3, q3, q6
529
+ vldrw.u32 q0, [r10, #240]
530
+ veor q3, q0, q3
531
+ vstrw.32 q1, [r5, #272]
532
+ vbic q1, q0, q5
533
+ vstrw.32 q3, [r5, #240]
534
+ veor q1, q2, q1
535
+ vldrw.u32 q3, [r4, #384]
536
+ vbic q2, q6, q0
537
+ vldrw.u32 q0, [r4, #320]
538
+ veor q2, q5, q2
539
+ vldrw.u32 q5, [r4, #352]
540
+ veor q4, q6, q4
541
+ vstrw.32 q2, [r5, #304]
542
+ vbic q2, q7, q0
543
+ vstrw.32 q1, [r5, #288]
544
+ veor q1, q3, q2
545
+ vstrw.32 q1, [r2, #384]
546
+ vbic q2, q5, q7
547
+ vstrw.32 q4, [r5, #256]
548
+ veor q4, q0, q2
549
+ vstrw.32 q4, [r2, #320]
550
+ vbic q2, q0, q3
551
+ vldrw.u32 q4, [r4, #368]
552
+ vbic q3, q3, q4
553
+ vldrw.u32 q0, [r10, #320]
554
+ veor q1, q5, q3
555
+ vldrw.u32 q6, [r10, #336]
556
+ vbic q5, q4, q5
557
+ vstrw.32 q1, [r2, #352]
558
+ veor q5, q7, q5
559
+ vstrw.32 q5, [r2, #336]
560
+ veor q3, q4, q2
561
+ vstrw.32 q3, [r2, #368]
562
+ vbic q7, q6, q0
563
+ vldrw.u32 q5, [r10, #352]
564
+ vbic q3, q5, q6
565
+ vldrw.u32 q1, [r10, #368]
566
+ vbic q4, q1, q5
567
+ vldrw.u32 q2, [r4, #16]
568
+ veor q6, q6, q4
569
+ vldrw.u32 q4, [r10, #384]
570
+ veor q3, q0, q3
571
+ vstrw.32 q3, [r5, #320]
572
+ veor q3, q4, q7
573
+ vstrw.32 q3, [r5, #384]
574
+ vbic q0, q0, q4
575
+ vstrw.32 q6, [r5, #336]
576
+ veor q3, q1, q0
577
+ vstrw.32 q3, [r5, #368]
578
+ vbic q7, q4, q1
579
+ veor q5, q5, q7
580
+ vldrw.u32 q6, [r4, #32]
581
+ vbic q3, q6, q2
582
+ vldrw.u32 q4, [r4, #48]
583
+ vbic q0, q4, q6
584
+ vldrw.u32 q1, [r4]
585
+ veor q0, q2, q0
586
+ vldrw.u32 q7, [r4, #64]
587
+ veor q3, q1, q3
588
+ vstrw.32 q5, [r5, #352]
589
+ vbic q5, q1, q7
590
+ vstrw.32 q0, [r2, #16]
591
+ veor q0, q4, q5
592
+ vstrw.32 q0, [r2, #48]
593
+ vbic q5, q2, q1
594
+ veor q2, q7, q5
595
+ vldrw.u32 q0, [r10, #16]
596
+ vbic q5, q7, q4
597
+ vldrw.u32 q4, [r10]
598
+ vbic q1, q0, q4
599
+ vldrw.u32 q7, [r10, #64]
600
+ veor q1, q7, q1
601
+ vstrw.32 q2, [r2, #64]
602
+ veor q2, q6, q5
603
+ vbic q6, q4, q7
604
+ vldrw.u32 q5, [r10, #48]
605
+ veor q6, q5, q6
606
+ ldrd r7, r8, [r6]
607
+ vbic q7, q7, q5
608
+ vstrw.32 q1, [r5, #64]
609
+ vdup.32 q1, r7
610
+ veor q1, q3, q1
611
+ vldrw.u32 q3, [r10, #32]
612
+ veor q7, q3, q7
613
+ add.w r6, r6, #0x8
614
+ vbic q5, q5, q3
615
+ vstrw.32 q6, [r5, #48]
616
+ vbic q6, q3, q0
617
+ vstrw.32 q1, [r2]
618
+ veor q5, q0, q5
619
+ vstrw.32 q7, [r5, #32]
620
+ veor q4, q4, q6
621
+ vstrw.32 q5, [r5, #16]
622
+ vdup.32 q6, r8
623
+ vstrw.32 q2, [r2, #32]
624
+ veor q0, q4, q6
625
+ vstrw.32 q0, [r5]
626
+
627
+ keccak_f1600_x4_mve_asm_roundend_pre:
628
+ le lr, keccak_f1600_x4_mve_asm_roundstart @ imm = #-0x8c0
629
+
630
+ keccak_f1600_x4_mve_asm_roundend:
631
+ add sp, #0x80
632
+ vpop {d8, d9, d10, d11, d12, d13, d14, d15}
633
+ pop.w {r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, pc}
634
+ nop
635
+
636
+ MLD_ASM_FN_SIZE(keccak_f1600_x4_mve_asm)
637
+
638
+ #endif /* MLD_FIPS202_ARMV81M_NEED_X4 && !MLD_CONFIG_MULTILEVEL_NO_SHARED */