react-native-quick-crypto 1.0.19 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (561) hide show
  1. package/QuickCrypto.podspec +12 -38
  2. package/README.md +2 -0
  3. package/android/CMakeLists.txt +3 -0
  4. package/android/build.gradle +5 -1
  5. package/cpp/argon2/HybridArgon2.cpp +10 -3
  6. package/cpp/blake3/HybridBlake3.cpp +5 -3
  7. package/cpp/cipher/CCMCipher.cpp +29 -16
  8. package/cpp/cipher/CCMCipher.hpp +2 -4
  9. package/cpp/cipher/ChaCha20Cipher.cpp +14 -18
  10. package/cpp/cipher/ChaCha20Cipher.hpp +2 -4
  11. package/cpp/cipher/ChaCha20Poly1305Cipher.cpp +34 -23
  12. package/cpp/cipher/ChaCha20Poly1305Cipher.hpp +2 -4
  13. package/cpp/cipher/GCMCipher.cpp +14 -15
  14. package/cpp/cipher/HybridCipher.cpp +39 -36
  15. package/cpp/cipher/HybridCipher.hpp +17 -1
  16. package/cpp/cipher/HybridRsaCipher.cpp +74 -29
  17. package/cpp/cipher/OCBCipher.cpp +4 -3
  18. package/cpp/cipher/XChaCha20Poly1305Cipher.cpp +14 -13
  19. package/cpp/cipher/XSalsa20Cipher.cpp +72 -6
  20. package/cpp/cipher/XSalsa20Cipher.hpp +25 -3
  21. package/cpp/cipher/XSalsa20Poly1305Cipher.cpp +21 -25
  22. package/cpp/dh/HybridDiffieHellman.cpp +29 -0
  23. package/cpp/ec/HybridEcKeyPair.cpp +35 -33
  24. package/cpp/ec/HybridEcKeyPair.hpp +3 -7
  25. package/cpp/ecdh/HybridECDH.cpp +23 -0
  26. package/cpp/ed25519/HybridEdKeyPair.cpp +73 -117
  27. package/cpp/ed25519/HybridEdKeyPair.hpp +5 -9
  28. package/cpp/hash/HybridHash.cpp +5 -7
  29. package/cpp/hkdf/HybridHkdf.cpp +6 -4
  30. package/cpp/hmac/HybridHmac.cpp +4 -6
  31. package/cpp/kmac/HybridKmac.cpp +4 -4
  32. package/cpp/mldsa/HybridMlDsaKeyPair.cpp +37 -49
  33. package/cpp/mlkem/HybridMlKemKeyPair.cpp +39 -43
  34. package/cpp/pbkdf2/HybridPbkdf2.cpp +7 -8
  35. package/cpp/rsa/HybridRsaKeyPair.cpp +5 -8
  36. package/cpp/rsa/HybridRsaKeyPair.hpp +4 -7
  37. package/cpp/scrypt/HybridScrypt.cpp +6 -4
  38. package/cpp/sign/HybridSignHandle.cpp +25 -68
  39. package/cpp/sign/HybridVerifyHandle.cpp +23 -60
  40. package/cpp/utils/HybridUtils.cpp +213 -111
  41. package/cpp/utils/HybridUtils.hpp +9 -2
  42. package/cpp/utils/QuickCryptoUtils.hpp +72 -0
  43. package/deps/simdutf/LICENSE-APACHE +201 -0
  44. package/deps/simdutf/LICENSE-MIT +18 -0
  45. package/deps/simdutf/README.md +2782 -0
  46. package/deps/simdutf/include/simdutf/avx512.h +79 -0
  47. package/deps/simdutf/include/simdutf/base64_implementation.h +158 -0
  48. package/deps/simdutf/include/simdutf/base64_tables.h +887 -0
  49. package/deps/simdutf/include/simdutf/common_defs.h +186 -0
  50. package/deps/simdutf/include/simdutf/compiler_check.h +50 -0
  51. package/deps/simdutf/include/simdutf/constexpr_ptr.h +138 -0
  52. package/deps/simdutf/include/simdutf/encoding_types.h +189 -0
  53. package/deps/simdutf/include/simdutf/error.h +126 -0
  54. package/deps/simdutf/include/simdutf/implementation.h +7081 -0
  55. package/deps/simdutf/include/simdutf/internal/isadetection.h +325 -0
  56. package/deps/simdutf/include/simdutf/portability.h +285 -0
  57. package/deps/simdutf/include/simdutf/scalar/ascii.h +86 -0
  58. package/deps/simdutf/include/simdutf/scalar/atomic_util.h +105 -0
  59. package/deps/simdutf/include/simdutf/scalar/base64.h +911 -0
  60. package/deps/simdutf/include/simdutf/scalar/latin1.h +26 -0
  61. package/deps/simdutf/include/simdutf/scalar/latin1_to_utf16/latin1_to_utf16.h +52 -0
  62. package/deps/simdutf/include/simdutf/scalar/latin1_to_utf32/latin1_to_utf32.h +27 -0
  63. package/deps/simdutf/include/simdutf/scalar/latin1_to_utf8/latin1_to_utf8.h +191 -0
  64. package/deps/simdutf/include/simdutf/scalar/swap_bytes.h +35 -0
  65. package/deps/simdutf/include/simdutf/scalar/utf16.h +226 -0
  66. package/deps/simdutf/include/simdutf/scalar/utf16_to_latin1/utf16_to_latin1.h +108 -0
  67. package/deps/simdutf/include/simdutf/scalar/utf16_to_latin1/valid_utf16_to_latin1.h +40 -0
  68. package/deps/simdutf/include/simdutf/scalar/utf16_to_utf32/utf16_to_utf32.h +86 -0
  69. package/deps/simdutf/include/simdutf/scalar/utf16_to_utf32/valid_utf16_to_utf32.h +44 -0
  70. package/deps/simdutf/include/simdutf/scalar/utf16_to_utf8/utf16_to_utf8.h +295 -0
  71. package/deps/simdutf/include/simdutf/scalar/utf16_to_utf8/valid_utf16_to_utf8.h +91 -0
  72. package/deps/simdutf/include/simdutf/scalar/utf32.h +82 -0
  73. package/deps/simdutf/include/simdutf/scalar/utf32_to_latin1/utf32_to_latin1.h +68 -0
  74. package/deps/simdutf/include/simdutf/scalar/utf32_to_latin1/valid_utf32_to_latin1.h +67 -0
  75. package/deps/simdutf/include/simdutf/scalar/utf32_to_utf16/utf32_to_utf16.h +84 -0
  76. package/deps/simdutf/include/simdutf/scalar/utf32_to_utf16/valid_utf32_to_utf16.h +44 -0
  77. package/deps/simdutf/include/simdutf/scalar/utf32_to_utf8/utf32_to_utf8.h +142 -0
  78. package/deps/simdutf/include/simdutf/scalar/utf32_to_utf8/valid_utf32_to_utf8.h +72 -0
  79. package/deps/simdutf/include/simdutf/scalar/utf8.h +326 -0
  80. package/deps/simdutf/include/simdutf/scalar/utf8_to_latin1/utf8_to_latin1.h +225 -0
  81. package/deps/simdutf/include/simdutf/scalar/utf8_to_latin1/valid_utf8_to_latin1.h +87 -0
  82. package/deps/simdutf/include/simdutf/scalar/utf8_to_utf16/utf8_to_utf16.h +342 -0
  83. package/deps/simdutf/include/simdutf/scalar/utf8_to_utf16/valid_utf8_to_utf16.h +106 -0
  84. package/deps/simdutf/include/simdutf/scalar/utf8_to_utf32/utf8_to_utf32.h +299 -0
  85. package/deps/simdutf/include/simdutf/scalar/utf8_to_utf32/valid_utf8_to_utf32.h +83 -0
  86. package/deps/simdutf/include/simdutf/simdutf_version.h +26 -0
  87. package/deps/simdutf/include/simdutf.h +26 -0
  88. package/deps/simdutf/include/simdutf_c.h +342 -0
  89. package/deps/simdutf/src/arm64/arm_base64.cpp +791 -0
  90. package/deps/simdutf/src/arm64/arm_convert_latin1_to_utf16.cpp +24 -0
  91. package/deps/simdutf/src/arm64/arm_convert_latin1_to_utf32.cpp +24 -0
  92. package/deps/simdutf/src/arm64/arm_convert_latin1_to_utf8.cpp +70 -0
  93. package/deps/simdutf/src/arm64/arm_convert_utf16_to_latin1.cpp +61 -0
  94. package/deps/simdutf/src/arm64/arm_convert_utf16_to_utf32.cpp +185 -0
  95. package/deps/simdutf/src/arm64/arm_convert_utf16_to_utf8.cpp +780 -0
  96. package/deps/simdutf/src/arm64/arm_convert_utf32_to_latin1.cpp +60 -0
  97. package/deps/simdutf/src/arm64/arm_convert_utf32_to_utf16.cpp +208 -0
  98. package/deps/simdutf/src/arm64/arm_convert_utf32_to_utf8.cpp +505 -0
  99. package/deps/simdutf/src/arm64/arm_convert_utf8_to_latin1.cpp +69 -0
  100. package/deps/simdutf/src/arm64/arm_convert_utf8_to_utf16.cpp +313 -0
  101. package/deps/simdutf/src/arm64/arm_convert_utf8_to_utf32.cpp +179 -0
  102. package/deps/simdutf/src/arm64/arm_find.cpp +199 -0
  103. package/deps/simdutf/src/arm64/arm_utf16fix.cpp +185 -0
  104. package/deps/simdutf/src/arm64/arm_validate_utf16.cpp +165 -0
  105. package/deps/simdutf/src/arm64/arm_validate_utf32le.cpp +65 -0
  106. package/deps/simdutf/src/arm64/implementation.cpp +1442 -0
  107. package/deps/simdutf/src/encoding_types.cpp +67 -0
  108. package/deps/simdutf/src/error.cpp +3 -0
  109. package/deps/simdutf/src/fallback/implementation.cpp +589 -0
  110. package/deps/simdutf/src/generic/ascii_validation.h +50 -0
  111. package/deps/simdutf/src/generic/base64.h +233 -0
  112. package/deps/simdutf/src/generic/base64lengths.h +63 -0
  113. package/deps/simdutf/src/generic/buf_block_reader.h +109 -0
  114. package/deps/simdutf/src/generic/find.h +75 -0
  115. package/deps/simdutf/src/generic/utf16/change_endianness.h +24 -0
  116. package/deps/simdutf/src/generic/utf16/count_code_points_bytemask.h +58 -0
  117. package/deps/simdutf/src/generic/utf16/to_well_formed.h +93 -0
  118. package/deps/simdutf/src/generic/utf16/utf32_length_from_utf16.h +15 -0
  119. package/deps/simdutf/src/generic/utf16/utf8_length_from_utf16.h +35 -0
  120. package/deps/simdutf/src/generic/utf16/utf8_length_from_utf16_bytemask.h +199 -0
  121. package/deps/simdutf/src/generic/utf16.h +73 -0
  122. package/deps/simdutf/src/generic/utf32.h +136 -0
  123. package/deps/simdutf/src/generic/utf8/utf16_length_from_utf8_bytemask.h +53 -0
  124. package/deps/simdutf/src/generic/utf8.h +92 -0
  125. package/deps/simdutf/src/generic/utf8_to_latin1/utf8_to_latin1.h +316 -0
  126. package/deps/simdutf/src/generic/utf8_to_latin1/valid_utf8_to_latin1.h +78 -0
  127. package/deps/simdutf/src/generic/utf8_to_utf16/utf8_to_utf16.h +332 -0
  128. package/deps/simdutf/src/generic/utf8_to_utf16/valid_utf8_to_utf16.h +74 -0
  129. package/deps/simdutf/src/generic/utf8_to_utf32/utf8_to_utf32.h +318 -0
  130. package/deps/simdutf/src/generic/utf8_to_utf32/valid_utf8_to_utf32.h +42 -0
  131. package/deps/simdutf/src/generic/utf8_validation/utf8_lookup4_algorithm.h +223 -0
  132. package/deps/simdutf/src/generic/utf8_validation/utf8_validator.h +84 -0
  133. package/deps/simdutf/src/generic/validate_utf16.h +164 -0
  134. package/deps/simdutf/src/generic/validate_utf32.h +99 -0
  135. package/deps/simdutf/src/haswell/avx2_base64.cpp +837 -0
  136. package/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf16.cpp +28 -0
  137. package/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf32.cpp +20 -0
  138. package/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf8.cpp +83 -0
  139. package/deps/simdutf/src/haswell/avx2_convert_utf16_to_latin1.cpp +83 -0
  140. package/deps/simdutf/src/haswell/avx2_convert_utf16_to_utf32.cpp +210 -0
  141. package/deps/simdutf/src/haswell/avx2_convert_utf16_to_utf8.cpp +602 -0
  142. package/deps/simdutf/src/haswell/avx2_convert_utf32_to_latin1.cpp +116 -0
  143. package/deps/simdutf/src/haswell/avx2_convert_utf32_to_utf16.cpp +164 -0
  144. package/deps/simdutf/src/haswell/avx2_convert_utf32_to_utf8.cpp +569 -0
  145. package/deps/simdutf/src/haswell/avx2_convert_utf8_to_latin1.cpp +60 -0
  146. package/deps/simdutf/src/haswell/avx2_convert_utf8_to_utf16.cpp +195 -0
  147. package/deps/simdutf/src/haswell/avx2_convert_utf8_to_utf32.cpp +135 -0
  148. package/deps/simdutf/src/haswell/avx2_utf16fix.cpp +173 -0
  149. package/deps/simdutf/src/haswell/avx2_validate_utf16.cpp +17 -0
  150. package/deps/simdutf/src/haswell/implementation.cpp +1447 -0
  151. package/deps/simdutf/src/icelake/icelake_ascii_validation.inl.cpp +19 -0
  152. package/deps/simdutf/src/icelake/icelake_base64.inl.cpp +630 -0
  153. package/deps/simdutf/src/icelake/icelake_common.inl.cpp +37 -0
  154. package/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf16.inl.cpp +36 -0
  155. package/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf32.inl.cpp +23 -0
  156. package/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf8.inl.cpp +107 -0
  157. package/deps/simdutf/src/icelake/icelake_convert_utf16_to_latin1.inl.cpp +103 -0
  158. package/deps/simdutf/src/icelake/icelake_convert_utf16_to_utf32.inl.cpp +136 -0
  159. package/deps/simdutf/src/icelake/icelake_convert_utf16_to_utf8.inl.cpp +206 -0
  160. package/deps/simdutf/src/icelake/icelake_convert_utf32_to_latin1.inl.cpp +74 -0
  161. package/deps/simdutf/src/icelake/icelake_convert_utf32_to_utf16.inl.cpp +338 -0
  162. package/deps/simdutf/src/icelake/icelake_convert_utf32_to_utf8.inl.cpp +574 -0
  163. package/deps/simdutf/src/icelake/icelake_convert_utf8_to_latin1.inl.cpp +104 -0
  164. package/deps/simdutf/src/icelake/icelake_convert_utf8_to_utf16.inl.cpp +75 -0
  165. package/deps/simdutf/src/icelake/icelake_convert_valid_utf8_to_latin1.inl.cpp +69 -0
  166. package/deps/simdutf/src/icelake/icelake_find.inl.cpp +146 -0
  167. package/deps/simdutf/src/icelake/icelake_from_utf8.inl.cpp +266 -0
  168. package/deps/simdutf/src/icelake/icelake_from_valid_utf8.inl.cpp +136 -0
  169. package/deps/simdutf/src/icelake/icelake_macros.inl.cpp +143 -0
  170. package/deps/simdutf/src/icelake/icelake_utf16fix.cpp +138 -0
  171. package/deps/simdutf/src/icelake/icelake_utf32_validation.inl.cpp +63 -0
  172. package/deps/simdutf/src/icelake/icelake_utf8_common.inl.cpp +753 -0
  173. package/deps/simdutf/src/icelake/icelake_utf8_length_from_utf16.inl.cpp +269 -0
  174. package/deps/simdutf/src/icelake/icelake_utf8_validation.inl.cpp +116 -0
  175. package/deps/simdutf/src/icelake/implementation.cpp +1903 -0
  176. package/deps/simdutf/src/implementation.cpp +2526 -0
  177. package/deps/simdutf/src/lasx/implementation.cpp +1531 -0
  178. package/deps/simdutf/src/lasx/lasx_base64.cpp +695 -0
  179. package/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf16.cpp +76 -0
  180. package/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf32.cpp +55 -0
  181. package/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf8.cpp +65 -0
  182. package/deps/simdutf/src/lasx/lasx_convert_utf16_to_latin1.cpp +64 -0
  183. package/deps/simdutf/src/lasx/lasx_convert_utf16_to_utf32.cpp +183 -0
  184. package/deps/simdutf/src/lasx/lasx_convert_utf16_to_utf8.cpp +550 -0
  185. package/deps/simdutf/src/lasx/lasx_convert_utf32_to_latin1.cpp +73 -0
  186. package/deps/simdutf/src/lasx/lasx_convert_utf32_to_utf16.cpp +218 -0
  187. package/deps/simdutf/src/lasx/lasx_convert_utf32_to_utf8.cpp +589 -0
  188. package/deps/simdutf/src/lasx/lasx_convert_utf8_to_latin1.cpp +72 -0
  189. package/deps/simdutf/src/lasx/lasx_convert_utf8_to_utf16.cpp +296 -0
  190. package/deps/simdutf/src/lasx/lasx_convert_utf8_to_utf32.cpp +190 -0
  191. package/deps/simdutf/src/lasx/lasx_find.cpp +64 -0
  192. package/deps/simdutf/src/lasx/lasx_validate_utf16.cpp +13 -0
  193. package/deps/simdutf/src/lasx/lasx_validate_utf32le.cpp +84 -0
  194. package/deps/simdutf/src/lsx/implementation.cpp +1417 -0
  195. package/deps/simdutf/src/lsx/lsx_base64.cpp +675 -0
  196. package/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf16.cpp +39 -0
  197. package/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf32.cpp +27 -0
  198. package/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf8.cpp +56 -0
  199. package/deps/simdutf/src/lsx/lsx_convert_utf16_to_latin1.cpp +64 -0
  200. package/deps/simdutf/src/lsx/lsx_convert_utf16_to_utf32.cpp +133 -0
  201. package/deps/simdutf/src/lsx/lsx_convert_utf16_to_utf8.cpp +518 -0
  202. package/deps/simdutf/src/lsx/lsx_convert_utf32_to_latin1.cpp +66 -0
  203. package/deps/simdutf/src/lsx/lsx_convert_utf32_to_utf16.cpp +155 -0
  204. package/deps/simdutf/src/lsx/lsx_convert_utf32_to_utf8.cpp +459 -0
  205. package/deps/simdutf/src/lsx/lsx_convert_utf8_to_latin1.cpp +75 -0
  206. package/deps/simdutf/src/lsx/lsx_convert_utf8_to_utf16.cpp +291 -0
  207. package/deps/simdutf/src/lsx/lsx_convert_utf8_to_utf32.cpp +179 -0
  208. package/deps/simdutf/src/lsx/lsx_find.cpp +60 -0
  209. package/deps/simdutf/src/lsx/lsx_validate_utf16.cpp +13 -0
  210. package/deps/simdutf/src/lsx/lsx_validate_utf32le.cpp +68 -0
  211. package/deps/simdutf/src/ppc64/implementation.cpp +992 -0
  212. package/deps/simdutf/src/ppc64/ppc64_base64.cpp +480 -0
  213. package/deps/simdutf/src/ppc64/ppc64_base64_internal_tests.cpp +401 -0
  214. package/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf16.cpp +12 -0
  215. package/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf32.cpp +12 -0
  216. package/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf8.cpp +149 -0
  217. package/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_latin1.cpp +67 -0
  218. package/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_utf32.cpp +87 -0
  219. package/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_utf8.cpp +296 -0
  220. package/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_latin1.cpp +57 -0
  221. package/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_utf16.cpp +117 -0
  222. package/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_utf8.cpp +166 -0
  223. package/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_latin1.cpp +69 -0
  224. package/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_utf16.cpp +211 -0
  225. package/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_utf32.cpp +153 -0
  226. package/deps/simdutf/src/ppc64/ppc64_utf16_to_utf8_tables.h +1011 -0
  227. package/deps/simdutf/src/ppc64/ppc64_utf8_length_from_latin1.cpp +37 -0
  228. package/deps/simdutf/src/ppc64/ppc64_validate_utf16.cpp +19 -0
  229. package/deps/simdutf/src/ppc64/templates.cpp +91 -0
  230. package/deps/simdutf/src/rvv/implementation.cpp +138 -0
  231. package/deps/simdutf/src/rvv/rvv_find.cpp +27 -0
  232. package/deps/simdutf/src/rvv/rvv_helpers.inl.cpp +23 -0
  233. package/deps/simdutf/src/rvv/rvv_latin1_to.inl.cpp +71 -0
  234. package/deps/simdutf/src/rvv/rvv_length_from.inl.cpp +164 -0
  235. package/deps/simdutf/src/rvv/rvv_utf16_to.inl.cpp +399 -0
  236. package/deps/simdutf/src/rvv/rvv_utf16fix.cpp +110 -0
  237. package/deps/simdutf/src/rvv/rvv_utf32_to.inl.cpp +307 -0
  238. package/deps/simdutf/src/rvv/rvv_utf8_to.inl.cpp +435 -0
  239. package/deps/simdutf/src/rvv/rvv_validate.inl.cpp +275 -0
  240. package/deps/simdutf/src/simdutf/arm64/begin.h +2 -0
  241. package/deps/simdutf/src/simdutf/arm64/bitmanipulation.h +34 -0
  242. package/deps/simdutf/src/simdutf/arm64/end.h +2 -0
  243. package/deps/simdutf/src/simdutf/arm64/implementation.h +307 -0
  244. package/deps/simdutf/src/simdutf/arm64/intrinsics.h +10 -0
  245. package/deps/simdutf/src/simdutf/arm64/simd.h +547 -0
  246. package/deps/simdutf/src/simdutf/arm64/simd16-inl.h +403 -0
  247. package/deps/simdutf/src/simdutf/arm64/simd32-inl.h +129 -0
  248. package/deps/simdutf/src/simdutf/arm64/simd64-inl.h +28 -0
  249. package/deps/simdutf/src/simdutf/arm64.h +43 -0
  250. package/deps/simdutf/src/simdutf/fallback/begin.h +1 -0
  251. package/deps/simdutf/src/simdutf/fallback/bitmanipulation.h +13 -0
  252. package/deps/simdutf/src/simdutf/fallback/end.h +1 -0
  253. package/deps/simdutf/src/simdutf/fallback/implementation.h +331 -0
  254. package/deps/simdutf/src/simdutf/fallback.h +42 -0
  255. package/deps/simdutf/src/simdutf/haswell/begin.h +15 -0
  256. package/deps/simdutf/src/simdutf/haswell/bitmanipulation.h +35 -0
  257. package/deps/simdutf/src/simdutf/haswell/end.h +13 -0
  258. package/deps/simdutf/src/simdutf/haswell/implementation.h +338 -0
  259. package/deps/simdutf/src/simdutf/haswell/intrinsics.h +67 -0
  260. package/deps/simdutf/src/simdutf/haswell/simd.h +363 -0
  261. package/deps/simdutf/src/simdutf/haswell/simd16-inl.h +261 -0
  262. package/deps/simdutf/src/simdutf/haswell/simd32-inl.h +111 -0
  263. package/deps/simdutf/src/simdutf/haswell/simd64-inl.h +34 -0
  264. package/deps/simdutf/src/simdutf/haswell.h +63 -0
  265. package/deps/simdutf/src/simdutf/icelake/begin.h +14 -0
  266. package/deps/simdutf/src/simdutf/icelake/bitmanipulation.h +44 -0
  267. package/deps/simdutf/src/simdutf/icelake/end.h +12 -0
  268. package/deps/simdutf/src/simdutf/icelake/implementation.h +346 -0
  269. package/deps/simdutf/src/simdutf/icelake/intrinsics.h +138 -0
  270. package/deps/simdutf/src/simdutf/icelake/simd.h +17 -0
  271. package/deps/simdutf/src/simdutf/icelake/simd16-inl.h +90 -0
  272. package/deps/simdutf/src/simdutf/icelake/simd32-inl.h +47 -0
  273. package/deps/simdutf/src/simdutf/icelake.h +81 -0
  274. package/deps/simdutf/src/simdutf/lasx/begin.h +8 -0
  275. package/deps/simdutf/src/simdutf/lasx/bitmanipulation.h +25 -0
  276. package/deps/simdutf/src/simdutf/lasx/end.h +8 -0
  277. package/deps/simdutf/src/simdutf/lasx/implementation.h +310 -0
  278. package/deps/simdutf/src/simdutf/lasx/intrinsics.h +319 -0
  279. package/deps/simdutf/src/simdutf/lasx/simd.h +551 -0
  280. package/deps/simdutf/src/simdutf/lasx/simd16-inl.h +234 -0
  281. package/deps/simdutf/src/simdutf/lasx/simd32-inl.h +74 -0
  282. package/deps/simdutf/src/simdutf/lasx/simd64-inl.h +52 -0
  283. package/deps/simdutf/src/simdutf/lasx.h +49 -0
  284. package/deps/simdutf/src/simdutf/lsx/begin.h +2 -0
  285. package/deps/simdutf/src/simdutf/lsx/bitmanipulation.h +25 -0
  286. package/deps/simdutf/src/simdutf/lsx/end.h +2 -0
  287. package/deps/simdutf/src/simdutf/lsx/implementation.h +309 -0
  288. package/deps/simdutf/src/simdutf/lsx/intrinsics.h +196 -0
  289. package/deps/simdutf/src/simdutf/lsx/simd.h +421 -0
  290. package/deps/simdutf/src/simdutf/lsx/simd16-inl.h +242 -0
  291. package/deps/simdutf/src/simdutf/lsx/simd32-inl.h +69 -0
  292. package/deps/simdutf/src/simdutf/lsx/simd64-inl.h +50 -0
  293. package/deps/simdutf/src/simdutf/lsx.h +52 -0
  294. package/deps/simdutf/src/simdutf/ppc64/begin.h +1 -0
  295. package/deps/simdutf/src/simdutf/ppc64/bitmanipulation.h +29 -0
  296. package/deps/simdutf/src/simdutf/ppc64/end.h +1 -0
  297. package/deps/simdutf/src/simdutf/ppc64/implementation.h +348 -0
  298. package/deps/simdutf/src/simdutf/ppc64/intrinsics.h +19 -0
  299. package/deps/simdutf/src/simdutf/ppc64/simd.h +177 -0
  300. package/deps/simdutf/src/simdutf/ppc64/simd16-inl.h +327 -0
  301. package/deps/simdutf/src/simdutf/ppc64/simd32-inl.h +247 -0
  302. package/deps/simdutf/src/simdutf/ppc64/simd8-inl.h +618 -0
  303. package/deps/simdutf/src/simdutf/ppc64.h +40 -0
  304. package/deps/simdutf/src/simdutf/rvv/begin.h +7 -0
  305. package/deps/simdutf/src/simdutf/rvv/end.h +7 -0
  306. package/deps/simdutf/src/simdutf/rvv/implementation.h +321 -0
  307. package/deps/simdutf/src/simdutf/rvv/intrinsics.h +131 -0
  308. package/deps/simdutf/src/simdutf/rvv.h +41 -0
  309. package/deps/simdutf/src/simdutf/westmere/begin.h +8 -0
  310. package/deps/simdutf/src/simdutf/westmere/bitmanipulation.h +37 -0
  311. package/deps/simdutf/src/simdutf/westmere/end.h +8 -0
  312. package/deps/simdutf/src/simdutf/westmere/implementation.h +338 -0
  313. package/deps/simdutf/src/simdutf/westmere/intrinsics.h +38 -0
  314. package/deps/simdutf/src/simdutf/westmere/simd.h +379 -0
  315. package/deps/simdutf/src/simdutf/westmere/simd16-inl.h +242 -0
  316. package/deps/simdutf/src/simdutf/westmere/simd32-inl.h +151 -0
  317. package/deps/simdutf/src/simdutf/westmere/simd64-inl.h +33 -0
  318. package/deps/simdutf/src/simdutf/westmere.h +59 -0
  319. package/deps/simdutf/src/simdutf.cpp +152 -0
  320. package/deps/simdutf/src/simdutf_c.cpp +525 -0
  321. package/deps/simdutf/src/tables/utf16_to_utf8_tables.h +768 -0
  322. package/deps/simdutf/src/tables/utf32_to_utf16_tables.h +53 -0
  323. package/deps/simdutf/src/tables/utf8_to_utf16_tables.h +826 -0
  324. package/deps/simdutf/src/westmere/implementation.cpp +1479 -0
  325. package/deps/simdutf/src/westmere/internal/loader.cpp +7 -0
  326. package/deps/simdutf/src/westmere/internal/write_v_u16_11bits_to_utf8.cpp +66 -0
  327. package/deps/simdutf/src/westmere/sse_base64.cpp +672 -0
  328. package/deps/simdutf/src/westmere/sse_convert_latin1_to_utf16.cpp +21 -0
  329. package/deps/simdutf/src/westmere/sse_convert_latin1_to_utf32.cpp +31 -0
  330. package/deps/simdutf/src/westmere/sse_convert_latin1_to_utf8.cpp +71 -0
  331. package/deps/simdutf/src/westmere/sse_convert_utf16_to_latin1.cpp +70 -0
  332. package/deps/simdutf/src/westmere/sse_convert_utf16_to_utf32.cpp +206 -0
  333. package/deps/simdutf/src/westmere/sse_convert_utf16_to_utf8.cpp +504 -0
  334. package/deps/simdutf/src/westmere/sse_convert_utf32_to_latin1.cpp +82 -0
  335. package/deps/simdutf/src/westmere/sse_convert_utf32_to_utf16.cpp +209 -0
  336. package/deps/simdutf/src/westmere/sse_convert_utf32_to_utf8.cpp +589 -0
  337. package/deps/simdutf/src/westmere/sse_convert_utf8_to_latin1.cpp +58 -0
  338. package/deps/simdutf/src/westmere/sse_convert_utf8_to_utf16.cpp +197 -0
  339. package/deps/simdutf/src/westmere/sse_convert_utf8_to_utf32.cpp +141 -0
  340. package/deps/simdutf/src/westmere/sse_utf16fix.cpp +82 -0
  341. package/deps/simdutf/src/westmere/sse_validate_utf16.cpp +17 -0
  342. package/lib/commonjs/argon2.js +51 -2
  343. package/lib/commonjs/argon2.js.map +1 -1
  344. package/lib/commonjs/cipher.js +109 -11
  345. package/lib/commonjs/cipher.js.map +1 -1
  346. package/lib/commonjs/dsa.js +8 -2
  347. package/lib/commonjs/dsa.js.map +1 -1
  348. package/lib/commonjs/hash.js +15 -5
  349. package/lib/commonjs/hash.js.map +1 -1
  350. package/lib/commonjs/hkdf.js +33 -6
  351. package/lib/commonjs/hkdf.js.map +1 -1
  352. package/lib/commonjs/hmac.js +15 -5
  353. package/lib/commonjs/hmac.js.map +1 -1
  354. package/lib/commonjs/keys/publicCipher.js +10 -4
  355. package/lib/commonjs/keys/publicCipher.js.map +1 -1
  356. package/lib/commonjs/random.js +11 -2
  357. package/lib/commonjs/random.js.map +1 -1
  358. package/lib/commonjs/rsa.js +12 -5
  359. package/lib/commonjs/rsa.js.map +1 -1
  360. package/lib/commonjs/scrypt.js +47 -6
  361. package/lib/commonjs/scrypt.js.map +1 -1
  362. package/lib/commonjs/subtle.js +76 -5
  363. package/lib/commonjs/subtle.js.map +1 -1
  364. package/lib/commonjs/utils/cipher.js +18 -7
  365. package/lib/commonjs/utils/cipher.js.map +1 -1
  366. package/lib/commonjs/utils/conversion.js +33 -9
  367. package/lib/commonjs/utils/conversion.js.map +1 -1
  368. package/lib/commonjs/utils/timingSafeEqual.js +7 -2
  369. package/lib/commonjs/utils/timingSafeEqual.js.map +1 -1
  370. package/lib/commonjs/x509certificate.js +6 -6
  371. package/lib/commonjs/x509certificate.js.map +1 -1
  372. package/lib/module/argon2.js +51 -2
  373. package/lib/module/argon2.js.map +1 -1
  374. package/lib/module/cipher.js +109 -11
  375. package/lib/module/cipher.js.map +1 -1
  376. package/lib/module/dsa.js +8 -2
  377. package/lib/module/dsa.js.map +1 -1
  378. package/lib/module/hash.js +15 -5
  379. package/lib/module/hash.js.map +1 -1
  380. package/lib/module/hkdf.js +33 -6
  381. package/lib/module/hkdf.js.map +1 -1
  382. package/lib/module/hmac.js +15 -5
  383. package/lib/module/hmac.js.map +1 -1
  384. package/lib/module/keys/publicCipher.js +10 -4
  385. package/lib/module/keys/publicCipher.js.map +1 -1
  386. package/lib/module/random.js +11 -2
  387. package/lib/module/random.js.map +1 -1
  388. package/lib/module/rsa.js +11 -4
  389. package/lib/module/rsa.js.map +1 -1
  390. package/lib/module/scrypt.js +47 -6
  391. package/lib/module/scrypt.js.map +1 -1
  392. package/lib/module/subtle.js +76 -5
  393. package/lib/module/subtle.js.map +1 -1
  394. package/lib/module/utils/cipher.js +18 -7
  395. package/lib/module/utils/cipher.js.map +1 -1
  396. package/lib/module/utils/conversion.js +33 -9
  397. package/lib/module/utils/conversion.js.map +1 -1
  398. package/lib/module/utils/timingSafeEqual.js +8 -3
  399. package/lib/module/utils/timingSafeEqual.js.map +1 -1
  400. package/lib/module/x509certificate.js +6 -6
  401. package/lib/module/x509certificate.js.map +1 -1
  402. package/lib/typescript/argon2.d.ts.map +1 -1
  403. package/lib/typescript/cipher.d.ts +2 -2
  404. package/lib/typescript/cipher.d.ts.map +1 -1
  405. package/lib/typescript/dsa.d.ts.map +1 -1
  406. package/lib/typescript/hash.d.ts +2 -2
  407. package/lib/typescript/hash.d.ts.map +1 -1
  408. package/lib/typescript/hkdf.d.ts.map +1 -1
  409. package/lib/typescript/hmac.d.ts +2 -2
  410. package/lib/typescript/hmac.d.ts.map +1 -1
  411. package/lib/typescript/index.d.ts +1 -1
  412. package/lib/typescript/index.d.ts.map +1 -1
  413. package/lib/typescript/keys/publicCipher.d.ts.map +1 -1
  414. package/lib/typescript/random.d.ts.map +1 -1
  415. package/lib/typescript/rsa.d.ts.map +1 -1
  416. package/lib/typescript/scrypt.d.ts.map +1 -1
  417. package/lib/typescript/specs/utils.nitro.d.ts +0 -2
  418. package/lib/typescript/specs/utils.nitro.d.ts.map +1 -1
  419. package/lib/typescript/subtle.d.ts.map +1 -1
  420. package/lib/typescript/utils/cipher.d.ts +13 -1
  421. package/lib/typescript/utils/cipher.d.ts.map +1 -1
  422. package/lib/typescript/utils/conversion.d.ts +9 -6
  423. package/lib/typescript/utils/conversion.d.ts.map +1 -1
  424. package/lib/typescript/utils/timingSafeEqual.d.ts.map +1 -1
  425. package/lib/typescript/x509certificate.d.ts.map +1 -1
  426. package/nitrogen/generated/shared/c++/HybridUtilsSpec.cpp +0 -2
  427. package/nitrogen/generated/shared/c++/HybridUtilsSpec.hpp +0 -3
  428. package/package.json +38 -6
  429. package/src/argon2.ts +80 -2
  430. package/src/cipher.ts +139 -15
  431. package/src/dsa.ts +11 -2
  432. package/src/hash.ts +17 -7
  433. package/src/hkdf.ts +44 -6
  434. package/src/hmac.ts +17 -7
  435. package/src/keys/publicCipher.ts +10 -4
  436. package/src/random.ts +11 -2
  437. package/src/rsa.ts +18 -4
  438. package/src/scrypt.ts +73 -6
  439. package/src/specs/utils.nitro.ts +0 -2
  440. package/src/subtle.ts +90 -8
  441. package/src/utils/cipher.ts +30 -8
  442. package/src/utils/conversion.ts +58 -20
  443. package/src/utils/timingSafeEqual.ts +8 -3
  444. package/src/x509certificate.ts +5 -6
  445. package/deps/blake3/.cargo/config.toml +0 -2
  446. package/deps/blake3/.git-blame-ignore-revs +0 -2
  447. package/deps/blake3/.github/workflows/build_b3sum.py +0 -38
  448. package/deps/blake3/.github/workflows/ci.yml +0 -491
  449. package/deps/blake3/.github/workflows/tag.yml +0 -43
  450. package/deps/blake3/.github/workflows/upload_github_release_asset.py +0 -73
  451. package/deps/blake3/CONTRIBUTING.md +0 -31
  452. package/deps/blake3/Cargo.toml +0 -135
  453. package/deps/blake3/b3sum/Cargo.lock +0 -513
  454. package/deps/blake3/b3sum/Cargo.toml +0 -26
  455. package/deps/blake3/b3sum/README.md +0 -72
  456. package/deps/blake3/b3sum/src/main.rs +0 -564
  457. package/deps/blake3/b3sum/src/unit_tests.rs +0 -235
  458. package/deps/blake3/b3sum/tests/cli_tests.rs +0 -680
  459. package/deps/blake3/b3sum/what_does_check_do.md +0 -176
  460. package/deps/blake3/benches/bench.rs +0 -623
  461. package/deps/blake3/build.rs +0 -389
  462. package/deps/blake3/c/CMakeLists.txt +0 -383
  463. package/deps/blake3/c/CMakePresets.json +0 -73
  464. package/deps/blake3/c/Makefile.testing +0 -82
  465. package/deps/blake3/c/blake3-config.cmake.in +0 -14
  466. package/deps/blake3/c/blake3_avx2.c +0 -326
  467. package/deps/blake3/c/blake3_avx2_x86-64_unix.S +0 -1815
  468. package/deps/blake3/c/blake3_avx2_x86-64_windows_gnu.S +0 -1817
  469. package/deps/blake3/c/blake3_avx2_x86-64_windows_msvc.asm +0 -1828
  470. package/deps/blake3/c/blake3_avx512.c +0 -1388
  471. package/deps/blake3/c/blake3_avx512_x86-64_unix.S +0 -4824
  472. package/deps/blake3/c/blake3_avx512_x86-64_windows_gnu.S +0 -2615
  473. package/deps/blake3/c/blake3_avx512_x86-64_windows_msvc.asm +0 -2634
  474. package/deps/blake3/c/blake3_c_rust_bindings/Cargo.toml +0 -32
  475. package/deps/blake3/c/blake3_c_rust_bindings/README.md +0 -4
  476. package/deps/blake3/c/blake3_c_rust_bindings/benches/bench.rs +0 -477
  477. package/deps/blake3/c/blake3_c_rust_bindings/build.rs +0 -253
  478. package/deps/blake3/c/blake3_c_rust_bindings/cross_test.sh +0 -31
  479. package/deps/blake3/c/blake3_c_rust_bindings/src/lib.rs +0 -333
  480. package/deps/blake3/c/blake3_c_rust_bindings/src/test.rs +0 -696
  481. package/deps/blake3/c/blake3_sse2.c +0 -566
  482. package/deps/blake3/c/blake3_sse2_x86-64_unix.S +0 -2291
  483. package/deps/blake3/c/blake3_sse2_x86-64_windows_gnu.S +0 -2332
  484. package/deps/blake3/c/blake3_sse2_x86-64_windows_msvc.asm +0 -2350
  485. package/deps/blake3/c/blake3_sse41.c +0 -560
  486. package/deps/blake3/c/blake3_sse41_x86-64_unix.S +0 -2028
  487. package/deps/blake3/c/blake3_sse41_x86-64_windows_gnu.S +0 -2069
  488. package/deps/blake3/c/blake3_sse41_x86-64_windows_msvc.asm +0 -2089
  489. package/deps/blake3/c/blake3_tbb.cpp +0 -37
  490. package/deps/blake3/c/dependencies/CMakeLists.txt +0 -3
  491. package/deps/blake3/c/dependencies/tbb/CMakeLists.txt +0 -28
  492. package/deps/blake3/c/example.c +0 -36
  493. package/deps/blake3/c/example_tbb.c +0 -57
  494. package/deps/blake3/c/libblake3.pc.in +0 -12
  495. package/deps/blake3/c/main.c +0 -166
  496. package/deps/blake3/c/test.py +0 -97
  497. package/deps/blake3/media/B3.svg +0 -70
  498. package/deps/blake3/media/BLAKE3.svg +0 -85
  499. package/deps/blake3/media/speed.svg +0 -1474
  500. package/deps/blake3/reference_impl/Cargo.toml +0 -8
  501. package/deps/blake3/reference_impl/README.md +0 -14
  502. package/deps/blake3/reference_impl/reference_impl.rs +0 -374
  503. package/deps/blake3/src/ffi_avx2.rs +0 -65
  504. package/deps/blake3/src/ffi_avx512.rs +0 -169
  505. package/deps/blake3/src/ffi_neon.rs +0 -82
  506. package/deps/blake3/src/ffi_sse2.rs +0 -126
  507. package/deps/blake3/src/ffi_sse41.rs +0 -126
  508. package/deps/blake3/src/guts.rs +0 -60
  509. package/deps/blake3/src/hazmat.rs +0 -704
  510. package/deps/blake3/src/io.rs +0 -64
  511. package/deps/blake3/src/join.rs +0 -92
  512. package/deps/blake3/src/lib.rs +0 -1835
  513. package/deps/blake3/src/platform.rs +0 -587
  514. package/deps/blake3/src/portable.rs +0 -198
  515. package/deps/blake3/src/rust_avx2.rs +0 -474
  516. package/deps/blake3/src/rust_sse2.rs +0 -775
  517. package/deps/blake3/src/rust_sse41.rs +0 -766
  518. package/deps/blake3/src/test.rs +0 -1049
  519. package/deps/blake3/src/traits.rs +0 -227
  520. package/deps/blake3/src/wasm32_simd.rs +0 -794
  521. package/deps/blake3/test_vectors/Cargo.toml +0 -19
  522. package/deps/blake3/test_vectors/cross_test.sh +0 -25
  523. package/deps/blake3/test_vectors/src/bin/generate.rs +0 -4
  524. package/deps/blake3/test_vectors/src/lib.rs +0 -350
  525. package/deps/blake3/test_vectors/test_vectors.json +0 -217
  526. package/deps/blake3/tools/compiler_version/Cargo.toml +0 -7
  527. package/deps/blake3/tools/compiler_version/build.rs +0 -6
  528. package/deps/blake3/tools/compiler_version/src/main.rs +0 -27
  529. package/deps/blake3/tools/instruction_set_support/Cargo.toml +0 -6
  530. package/deps/blake3/tools/instruction_set_support/src/main.rs +0 -10
  531. package/deps/blake3/tools/release.md +0 -16
  532. package/deps/ncrypto/.bazelignore +0 -4
  533. package/deps/ncrypto/.bazelrc +0 -1
  534. package/deps/ncrypto/.bazelversion +0 -1
  535. package/deps/ncrypto/.clang-format +0 -111
  536. package/deps/ncrypto/.github/workflows/bazel.yml +0 -58
  537. package/deps/ncrypto/.github/workflows/commitlint.yml +0 -16
  538. package/deps/ncrypto/.github/workflows/linter.yml +0 -38
  539. package/deps/ncrypto/.github/workflows/macos.yml +0 -43
  540. package/deps/ncrypto/.github/workflows/release-please.yml +0 -16
  541. package/deps/ncrypto/.github/workflows/ubuntu.yml +0 -128
  542. package/deps/ncrypto/.github/workflows/visual-studio.yml +0 -49
  543. package/deps/ncrypto/.python-version +0 -1
  544. package/deps/ncrypto/.release-please-manifest.json +0 -3
  545. package/deps/ncrypto/BUILD.bazel +0 -44
  546. package/deps/ncrypto/CHANGELOG.md +0 -37
  547. package/deps/ncrypto/CMakeLists.txt +0 -79
  548. package/deps/ncrypto/MODULE.bazel +0 -16
  549. package/deps/ncrypto/MODULE.bazel.lock +0 -461
  550. package/deps/ncrypto/cmake/CPM.cmake +0 -1225
  551. package/deps/ncrypto/cmake/ncrypto-flags.cmake +0 -17
  552. package/deps/ncrypto/ncrypto.pc.in +0 -10
  553. package/deps/ncrypto/patches/0001-Expose-libdecrepit-so-NodeJS-can-use-it-for-ncrypto.patch +0 -28
  554. package/deps/ncrypto/pyproject.toml +0 -38
  555. package/deps/ncrypto/release-please-config.json +0 -11
  556. package/deps/ncrypto/src/CMakeLists.txt +0 -40
  557. package/deps/ncrypto/tests/BUILD.bazel +0 -11
  558. package/deps/ncrypto/tests/CMakeLists.txt +0 -7
  559. package/deps/ncrypto/tests/basic.cpp +0 -856
  560. package/deps/ncrypto/tools/run-clang-format.sh +0 -42
  561. package/lib/tsconfig.tsbuildinfo +0 -1
@@ -1,253 +0,0 @@
1
- use std::env;
2
-
3
- fn defined(var: &str) -> bool {
4
- env::var_os(var).is_some()
5
- }
6
-
7
- fn target_components() -> Vec<String> {
8
- let target = env::var("TARGET").unwrap();
9
- target.split("-").map(|s| s.to_string()).collect()
10
- }
11
-
12
- fn is_x86_64() -> bool {
13
- target_components()[0] == "x86_64"
14
- }
15
-
16
- fn is_windows_target() -> bool {
17
- env::var("CARGO_CFG_TARGET_OS").unwrap() == "windows"
18
- }
19
-
20
- fn use_msvc_asm() -> bool {
21
- const MSVC_NAMES: &[&str] = &["", "cl", "cl.exe"];
22
- let target_os = env::var("CARGO_CFG_TARGET_OS").unwrap_or_default();
23
- let target_env = env::var("CARGO_CFG_TARGET_ENV").unwrap_or_default();
24
- let target_windows_msvc = target_os == "windows" && target_env == "msvc";
25
- let host_triple = env::var("HOST").unwrap_or_default();
26
- let target_triple = env::var("TARGET").unwrap_or_default();
27
- let cross_compiling = host_triple != target_triple;
28
- let cc = env::var("CC").unwrap_or_default().to_ascii_lowercase();
29
- if !target_windows_msvc {
30
- // We are not building for Windows with the MSVC toolchain.
31
- false
32
- } else if !cross_compiling && MSVC_NAMES.contains(&&*cc) {
33
- // We are building on Windows with the MSVC toolchain (and not cross-compiling for another architecture or target).
34
- true
35
- } else {
36
- // We are cross-compiling to Windows with the MSVC toolchain.
37
- let target_arch = env::var("CARGO_CFG_TARGET_ARCH").unwrap_or_default();
38
- let target_vendor = env::var("CARGO_CFG_TARGET_VENDOR").unwrap_or_default();
39
- let cc = env::var(format!("CC_{target_arch}_{target_vendor}_windows_msvc"))
40
- .unwrap_or_default()
41
- .to_ascii_lowercase();
42
- // Check if we are using the MSVC compiler.
43
- MSVC_NAMES.contains(&&*cc)
44
- }
45
- }
46
-
47
- fn is_x86_32() -> bool {
48
- let arch = &target_components()[0];
49
- arch == "i386" || arch == "i586" || arch == "i686"
50
- }
51
-
52
- fn is_armv7() -> bool {
53
- target_components()[0] == "armv7"
54
- }
55
-
56
- fn is_aarch64() -> bool {
57
- target_components()[0] == "aarch64"
58
- }
59
-
60
- // Windows targets may be using the MSVC toolchain or the GNU toolchain. The
61
- // right compiler flags to use depend on the toolchain. (And we don't want to
62
- // use flag_if_supported, because we don't want features to be silently
63
- // disabled by old compilers.)
64
- fn is_windows_msvc() -> bool {
65
- // Some targets are only two components long, so check in steps.
66
- target_components()[1] == "pc"
67
- && target_components()[2] == "windows"
68
- && target_components()[3] == "msvc"
69
- }
70
-
71
- fn new_build() -> cc::Build {
72
- let mut build = cc::Build::new();
73
- if !is_windows_msvc() {
74
- build.flag("-std=c11");
75
- }
76
- build
77
- }
78
-
79
- fn new_cpp_build() -> cc::Build {
80
- let mut build = cc::Build::new();
81
- build.cpp(true);
82
- if is_windows_msvc() {
83
- build.flag("/std:c++20");
84
- build.flag("/EHs-c-");
85
- build.flag("/GR-");
86
- } else {
87
- build.flag("-std=c++20");
88
- build.flag("-fno-exceptions");
89
- build.flag("-fno-rtti");
90
- }
91
- build
92
- }
93
-
94
- fn c_dir_path(filename: &str) -> String {
95
- // The `cross` tool doesn't support reading files in parent directories. As a hacky workaround
96
- // in `cross_test.sh`, we move the c/ directory around and set BLAKE3_C_DIR_OVERRIDE. Regular
97
- // building and testing doesn't require this.
98
- if let Ok(c_dir_override) = env::var("BLAKE3_C_DIR_OVERRIDE") {
99
- c_dir_override + "/" + filename
100
- } else {
101
- "../".to_string() + filename
102
- }
103
- }
104
-
105
- fn main() -> Result<(), Box<dyn std::error::Error>> {
106
- let mut base_build = new_build();
107
- base_build.file(c_dir_path("blake3.c"));
108
- base_build.file(c_dir_path("blake3_dispatch.c"));
109
- base_build.file(c_dir_path("blake3_portable.c"));
110
- if cfg!(feature = "tbb") {
111
- base_build.define("BLAKE3_USE_TBB", "1");
112
- }
113
- base_build.compile("blake3_base");
114
-
115
- if cfg!(feature = "tbb") {
116
- let mut tbb_build = new_cpp_build();
117
- tbb_build.define("BLAKE3_USE_TBB", "1");
118
- tbb_build.file(c_dir_path("blake3_tbb.cpp"));
119
- tbb_build.compile("blake3_tbb");
120
- println!("cargo::rustc-link-lib=tbb");
121
- }
122
-
123
- if is_x86_64() && !defined("CARGO_FEATURE_PREFER_INTRINSICS") {
124
- // On 64-bit, use the assembly implementations, unless the
125
- // "prefer_intrinsics" feature is enabled.
126
- if is_windows_target() {
127
- if use_msvc_asm() {
128
- let mut build = new_build();
129
- build.file(c_dir_path("blake3_sse2_x86-64_windows_msvc.asm"));
130
- build.file(c_dir_path("blake3_sse41_x86-64_windows_msvc.asm"));
131
- build.file(c_dir_path("blake3_avx2_x86-64_windows_msvc.asm"));
132
- build.file(c_dir_path("blake3_avx512_x86-64_windows_msvc.asm"));
133
- build.compile("blake3_asm");
134
- } else {
135
- let mut build = new_build();
136
- build.file(c_dir_path("blake3_sse2_x86-64_windows_gnu.S"));
137
- build.file(c_dir_path("blake3_sse41_x86-64_windows_gnu.S"));
138
- build.file(c_dir_path("blake3_avx2_x86-64_windows_gnu.S"));
139
- build.file(c_dir_path("blake3_avx512_x86-64_windows_gnu.S"));
140
- build.compile("blake3_asm");
141
- }
142
- } else {
143
- // All non-Windows implementations are assumed to support
144
- // Linux-style assembly. These files do contain a small
145
- // explicit workaround for macOS also.
146
- let mut build = new_build();
147
- build.file(c_dir_path("blake3_sse2_x86-64_unix.S"));
148
- build.file(c_dir_path("blake3_sse41_x86-64_unix.S"));
149
- build.file(c_dir_path("blake3_avx2_x86-64_unix.S"));
150
- build.file(c_dir_path("blake3_avx512_x86-64_unix.S"));
151
- build.compile("blake3_asm");
152
- }
153
- } else if is_x86_64() || is_x86_32() {
154
- // Assembly implementations are only for 64-bit. On 32-bit, or if
155
- // the "prefer_intrinsics" feature is enabled, use the
156
- // intrinsics-based C implementations. These each need to be
157
- // compiled separately, with the corresponding instruction set
158
- // extension explicitly enabled in the compiler.
159
-
160
- let mut sse2_build = new_build();
161
- sse2_build.file(c_dir_path("blake3_sse2.c"));
162
- if is_windows_msvc() {
163
- // /arch:SSE2 is the default on x86 and undefined on x86_64:
164
- // https://docs.microsoft.com/en-us/cpp/build/reference/arch-x86
165
- // It also includes SSE4.1 intrinsics:
166
- // https://stackoverflow.com/a/32183222/823869
167
- } else {
168
- sse2_build.flag("-msse2");
169
- }
170
- sse2_build.compile("blake3_sse2");
171
-
172
- let mut sse41_build = new_build();
173
- sse41_build.file(c_dir_path("blake3_sse41.c"));
174
- if is_windows_msvc() {
175
- // /arch:SSE2 is the default on x86 and undefined on x86_64:
176
- // https://docs.microsoft.com/en-us/cpp/build/reference/arch-x86
177
- // It also includes SSE4.1 intrinsics:
178
- // https://stackoverflow.com/a/32183222/823869
179
- } else {
180
- sse41_build.flag("-msse4.1");
181
- }
182
- sse41_build.compile("blake3_sse41");
183
-
184
- let mut avx2_build = new_build();
185
- avx2_build.file(c_dir_path("blake3_avx2.c"));
186
- if is_windows_msvc() {
187
- avx2_build.flag("/arch:AVX2");
188
- } else {
189
- avx2_build.flag("-mavx2");
190
- }
191
- avx2_build.compile("blake3_avx2");
192
-
193
- let mut avx512_build = new_build();
194
- avx512_build.file(c_dir_path("blake3_avx512.c"));
195
- if is_windows_msvc() {
196
- // Note that a lot of versions of MSVC don't support /arch:AVX512,
197
- // and they'll discard it with a warning, hopefully leading to a
198
- // build error.
199
- avx512_build.flag("/arch:AVX512");
200
- } else {
201
- avx512_build.flag("-mavx512f");
202
- avx512_build.flag("-mavx512vl");
203
- }
204
- avx512_build.compile("blake3_avx512");
205
- }
206
-
207
- // We only build NEON code here if
208
- // 1) it's requested
209
- // and 2) the root crate is not already building it.
210
- // The only time this will really happen is if you build this
211
- // crate by hand with the "neon" feature for some reason.
212
- //
213
- // In addition, 3) if the target is aarch64, NEON is on by default.
214
- if defined("CARGO_FEATURE_NEON") || is_aarch64() {
215
- let mut neon_build = new_build();
216
- neon_build.file(c_dir_path("blake3_neon.c"));
217
- // ARMv7 platforms that support NEON generally need the following
218
- // flags. AArch64 supports NEON by default and does not support -mpfu.
219
- if is_armv7() {
220
- neon_build.flag("-mfpu=neon-vfpv4");
221
- neon_build.flag("-mfloat-abi=hard");
222
- }
223
- neon_build.compile("blake3_neon");
224
- }
225
-
226
- // The `cc` crate does not automatically emit rerun-if directives for the
227
- // environment variables it supports, in particular for $CC. We expect to
228
- // do a lot of benchmarking across different compilers, so we explicitly
229
- // add the variables that we're likely to need.
230
- println!("cargo:rerun-if-env-changed=CC");
231
- println!("cargo:rerun-if-env-changed=CFLAGS");
232
-
233
- // Ditto for source files, though these shouldn't change as often. `ignore::Walk` respects
234
- // .gitignore, so this doesn't traverse target/.
235
- for result in ignore::Walk::new("..") {
236
- let result = result?;
237
- let path = result.path();
238
- if path.is_file() {
239
- println!("cargo:rerun-if-changed={}", path.to_str().unwrap());
240
- }
241
- }
242
-
243
- // When compiling with clang-cl for windows, it adds .asm files to the root
244
- // which we need to delete so cargo doesn't get angry
245
- if is_windows_target() && !use_msvc_asm() {
246
- let _ = std::fs::remove_file("blake3_avx2_x86-64_windows_gnu.asm");
247
- let _ = std::fs::remove_file("blake3_avx512_x86-64_windows_gnu.asm");
248
- let _ = std::fs::remove_file("blake3_sse2_x86-64_windows_gnu.asm");
249
- let _ = std::fs::remove_file("blake3_sse41_x86-64_windows_gnu.asm");
250
- }
251
-
252
- Ok(())
253
- }
@@ -1,31 +0,0 @@
1
- #! /usr/bin/env bash
2
-
3
- # This hacky script works around the fact that `cross test` does not support
4
- # path dependencies. (It uses a docker shared folder to let the guest access
5
- # project files, so parent directories aren't available.) Solve this problem by
6
- # copying the entire project to a temp dir and rearranging paths to put "c" and
7
- # "reference_impl" underneath "blake3_c_rust_bindings", so that everything is
8
- # accessible. Hopefully this will just run on CI forever and no one will ever
9
- # read this and discover my deep shame.
10
-
11
- set -e -u -o pipefail
12
-
13
- project_root="$(realpath "$(dirname "$BASH_SOURCE")/../..")"
14
- tmpdir="$(mktemp -d)"
15
- echo "Running cross tests in $tmpdir"
16
- cd "$tmpdir"
17
- git clone "$project_root" blake3
18
- mv blake3/c/blake3_c_rust_bindings .
19
- mv blake3/reference_impl blake3_c_rust_bindings
20
- mv blake3/c blake3_c_rust_bindings
21
- cd blake3_c_rust_bindings
22
- sed -i 's|reference_impl = { path = "../../reference_impl" }|reference_impl = { path = "reference_impl" }|' Cargo.toml
23
-
24
- export BLAKE3_C_DIR_OVERRIDE="./c"
25
- cat > Cross.toml << EOF
26
- [build.env]
27
- passthrough = [
28
- "BLAKE3_C_DIR_OVERRIDE",
29
- ]
30
- EOF
31
- cross test "$@"
@@ -1,333 +0,0 @@
1
- //! These are Rust bindings for the C implementation of BLAKE3. As there is a
2
- //! native (and faster) Rust implementation of BLAKE3 provided in this same
3
- //! repo, these bindings are not expected to be used in production. They're
4
- //! intended for testing and benchmarking.
5
-
6
- use std::ffi::{c_void, CString};
7
- use std::mem::MaybeUninit;
8
-
9
- #[cfg(test)]
10
- mod test;
11
-
12
- pub const BLOCK_LEN: usize = 64;
13
- pub const CHUNK_LEN: usize = 1024;
14
- pub const OUT_LEN: usize = 32;
15
-
16
- // Feature detection functions for tests and benchmarks. Note that the C code
17
- // does its own feature detection in blake3_dispatch.c.
18
- #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
19
- pub fn sse2_detected() -> bool {
20
- is_x86_feature_detected!("sse2")
21
- }
22
-
23
- #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
24
- pub fn sse41_detected() -> bool {
25
- is_x86_feature_detected!("sse4.1")
26
- }
27
-
28
- #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
29
- pub fn avx2_detected() -> bool {
30
- is_x86_feature_detected!("avx2")
31
- }
32
-
33
- #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
34
- pub fn avx512_detected() -> bool {
35
- is_x86_feature_detected!("avx512f") && is_x86_feature_detected!("avx512vl")
36
- }
37
-
38
- #[derive(Clone)]
39
- pub struct Hasher(ffi::blake3_hasher);
40
-
41
- impl Hasher {
42
- pub fn new() -> Self {
43
- let mut c_state = MaybeUninit::uninit();
44
- unsafe {
45
- ffi::blake3_hasher_init(c_state.as_mut_ptr());
46
- Self(c_state.assume_init())
47
- }
48
- }
49
-
50
- pub fn new_keyed(key: &[u8; 32]) -> Self {
51
- let mut c_state = MaybeUninit::uninit();
52
- unsafe {
53
- ffi::blake3_hasher_init_keyed(c_state.as_mut_ptr(), key.as_ptr());
54
- Self(c_state.assume_init())
55
- }
56
- }
57
-
58
- pub fn new_derive_key(context: &str) -> Self {
59
- let mut c_state = MaybeUninit::uninit();
60
- let context_c_string = CString::new(context).expect("valid C string, no null bytes");
61
- unsafe {
62
- ffi::blake3_hasher_init_derive_key(c_state.as_mut_ptr(), context_c_string.as_ptr());
63
- Self(c_state.assume_init())
64
- }
65
- }
66
-
67
- pub fn new_derive_key_raw(context: &[u8]) -> Self {
68
- let mut c_state = MaybeUninit::uninit();
69
- unsafe {
70
- ffi::blake3_hasher_init_derive_key_raw(
71
- c_state.as_mut_ptr(),
72
- context.as_ptr() as *const _,
73
- context.len(),
74
- );
75
- Self(c_state.assume_init())
76
- }
77
- }
78
-
79
- pub fn update(&mut self, input: &[u8]) {
80
- unsafe {
81
- ffi::blake3_hasher_update(&mut self.0, input.as_ptr() as *const c_void, input.len());
82
- }
83
- }
84
-
85
- #[cfg(feature = "tbb")]
86
- pub fn update_tbb(&mut self, input: &[u8]) {
87
- unsafe {
88
- ffi::blake3_hasher_update_tbb(
89
- &mut self.0,
90
- input.as_ptr() as *const c_void,
91
- input.len(),
92
- );
93
- }
94
- }
95
-
96
- pub fn finalize(&self, output: &mut [u8]) {
97
- unsafe {
98
- ffi::blake3_hasher_finalize(&self.0, output.as_mut_ptr(), output.len());
99
- }
100
- }
101
-
102
- pub fn finalize_seek(&self, seek: u64, output: &mut [u8]) {
103
- unsafe {
104
- ffi::blake3_hasher_finalize_seek(&self.0, seek, output.as_mut_ptr(), output.len());
105
- }
106
- }
107
-
108
- pub fn reset(&mut self) {
109
- unsafe {
110
- ffi::blake3_hasher_reset(&mut self.0);
111
- }
112
- }
113
- }
114
-
115
- pub mod ffi {
116
- #[repr(C)]
117
- #[derive(Copy, Clone)]
118
- pub struct blake3_chunk_state {
119
- pub cv: [u32; 8usize],
120
- pub chunk_counter: u64,
121
- pub buf: [u8; 64usize],
122
- pub buf_len: u8,
123
- pub blocks_compressed: u8,
124
- pub flags: u8,
125
- }
126
-
127
- #[repr(C)]
128
- #[derive(Copy, Clone)]
129
- pub struct blake3_hasher {
130
- pub key: [u32; 8usize],
131
- pub chunk: blake3_chunk_state,
132
- pub cv_stack_len: u8,
133
- pub cv_stack: [u8; 1728usize],
134
- }
135
-
136
- extern "C" {
137
- // public interface
138
- pub fn blake3_hasher_init(self_: *mut blake3_hasher);
139
- pub fn blake3_hasher_init_keyed(self_: *mut blake3_hasher, key: *const u8);
140
- pub fn blake3_hasher_init_derive_key(
141
- self_: *mut blake3_hasher,
142
- context: *const ::std::os::raw::c_char,
143
- );
144
- pub fn blake3_hasher_init_derive_key_raw(
145
- self_: *mut blake3_hasher,
146
- context: *const ::std::os::raw::c_void,
147
- context_len: usize,
148
- );
149
- pub fn blake3_hasher_update(
150
- self_: *mut blake3_hasher,
151
- input: *const ::std::os::raw::c_void,
152
- input_len: usize,
153
- );
154
- #[cfg(feature = "tbb")]
155
- pub fn blake3_hasher_update_tbb(
156
- self_: *mut blake3_hasher,
157
- input: *const ::std::os::raw::c_void,
158
- input_len: usize,
159
- );
160
- pub fn blake3_hasher_finalize(self_: *const blake3_hasher, out: *mut u8, out_len: usize);
161
- pub fn blake3_hasher_finalize_seek(
162
- self_: *const blake3_hasher,
163
- seek: u64,
164
- out: *mut u8,
165
- out_len: usize,
166
- );
167
- pub fn blake3_hasher_reset(self_: *mut blake3_hasher);
168
-
169
- // portable low-level functions
170
- pub fn blake3_compress_in_place_portable(
171
- cv: *mut u32,
172
- block: *const u8,
173
- block_len: u8,
174
- counter: u64,
175
- flags: u8,
176
- );
177
- pub fn blake3_compress_xof_portable(
178
- cv: *const u32,
179
- block: *const u8,
180
- block_len: u8,
181
- counter: u64,
182
- flags: u8,
183
- out: *mut u8,
184
- );
185
- pub fn blake3_hash_many_portable(
186
- inputs: *const *const u8,
187
- num_inputs: usize,
188
- blocks: usize,
189
- key: *const u32,
190
- counter: u64,
191
- increment_counter: bool,
192
- flags: u8,
193
- flags_start: u8,
194
- flags_end: u8,
195
- out: *mut u8,
196
- );
197
- }
198
-
199
- #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
200
- pub mod x86 {
201
- extern "C" {
202
- // SSE2 low level functions
203
- pub fn blake3_compress_in_place_sse2(
204
- cv: *mut u32,
205
- block: *const u8,
206
- block_len: u8,
207
- counter: u64,
208
- flags: u8,
209
- );
210
- pub fn blake3_compress_xof_sse2(
211
- cv: *const u32,
212
- block: *const u8,
213
- block_len: u8,
214
- counter: u64,
215
- flags: u8,
216
- out: *mut u8,
217
- );
218
- pub fn blake3_hash_many_sse2(
219
- inputs: *const *const u8,
220
- num_inputs: usize,
221
- blocks: usize,
222
- key: *const u32,
223
- counter: u64,
224
- increment_counter: bool,
225
- flags: u8,
226
- flags_start: u8,
227
- flags_end: u8,
228
- out: *mut u8,
229
- );
230
-
231
- // SSE4.1 low level functions
232
- pub fn blake3_compress_in_place_sse41(
233
- cv: *mut u32,
234
- block: *const u8,
235
- block_len: u8,
236
- counter: u64,
237
- flags: u8,
238
- );
239
- pub fn blake3_compress_xof_sse41(
240
- cv: *const u32,
241
- block: *const u8,
242
- block_len: u8,
243
- counter: u64,
244
- flags: u8,
245
- out: *mut u8,
246
- );
247
- pub fn blake3_hash_many_sse41(
248
- inputs: *const *const u8,
249
- num_inputs: usize,
250
- blocks: usize,
251
- key: *const u32,
252
- counter: u64,
253
- increment_counter: bool,
254
- flags: u8,
255
- flags_start: u8,
256
- flags_end: u8,
257
- out: *mut u8,
258
- );
259
-
260
- // AVX2 low level functions
261
- pub fn blake3_hash_many_avx2(
262
- inputs: *const *const u8,
263
- num_inputs: usize,
264
- blocks: usize,
265
- key: *const u32,
266
- counter: u64,
267
- increment_counter: bool,
268
- flags: u8,
269
- flags_start: u8,
270
- flags_end: u8,
271
- out: *mut u8,
272
- );
273
-
274
- // AVX-512 low level functions
275
- pub fn blake3_compress_xof_avx512(
276
- cv: *const u32,
277
- block: *const u8,
278
- block_len: u8,
279
- counter: u64,
280
- flags: u8,
281
- out: *mut u8,
282
- );
283
- pub fn blake3_compress_in_place_avx512(
284
- cv: *mut u32,
285
- block: *const u8,
286
- block_len: u8,
287
- counter: u64,
288
- flags: u8,
289
- );
290
- pub fn blake3_hash_many_avx512(
291
- inputs: *const *const u8,
292
- num_inputs: usize,
293
- blocks: usize,
294
- key: *const u32,
295
- counter: u64,
296
- increment_counter: bool,
297
- flags: u8,
298
- flags_start: u8,
299
- flags_end: u8,
300
- out: *mut u8,
301
- );
302
- #[cfg(unix)]
303
- pub fn blake3_xof_many_avx512(
304
- cv: *const u32,
305
- block: *const u8,
306
- block_len: u8,
307
- counter: u64,
308
- flags: u8,
309
- out: *mut u8,
310
- outblocks: usize,
311
- );
312
- }
313
- }
314
-
315
- #[cfg(feature = "neon")]
316
- pub mod neon {
317
- extern "C" {
318
- // NEON low level functions
319
- pub fn blake3_hash_many_neon(
320
- inputs: *const *const u8,
321
- num_inputs: usize,
322
- blocks: usize,
323
- key: *const u32,
324
- counter: u64,
325
- increment_counter: bool,
326
- flags: u8,
327
- flags_start: u8,
328
- flags_end: u8,
329
- out: *mut u8,
330
- );
331
- }
332
- }
333
- }