react-native-quick-crypto 1.1.0 → 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 (687) hide show
  1. package/android/build.gradle +5 -1
  2. package/cpp/argon2/HybridArgon2.cpp +10 -3
  3. package/cpp/blake3/HybridBlake3.cpp +5 -3
  4. package/cpp/cipher/CCMCipher.cpp +29 -16
  5. package/cpp/cipher/CCMCipher.hpp +2 -4
  6. package/cpp/cipher/ChaCha20Cipher.cpp +14 -18
  7. package/cpp/cipher/ChaCha20Cipher.hpp +2 -4
  8. package/cpp/cipher/ChaCha20Poly1305Cipher.cpp +34 -23
  9. package/cpp/cipher/ChaCha20Poly1305Cipher.hpp +2 -4
  10. package/cpp/cipher/GCMCipher.cpp +14 -15
  11. package/cpp/cipher/HybridCipher.cpp +39 -36
  12. package/cpp/cipher/HybridCipher.hpp +17 -1
  13. package/cpp/cipher/HybridRsaCipher.cpp +74 -29
  14. package/cpp/cipher/OCBCipher.cpp +4 -3
  15. package/cpp/cipher/XChaCha20Poly1305Cipher.cpp +14 -13
  16. package/cpp/cipher/XSalsa20Cipher.cpp +72 -6
  17. package/cpp/cipher/XSalsa20Cipher.hpp +25 -3
  18. package/cpp/cipher/XSalsa20Poly1305Cipher.cpp +21 -25
  19. package/cpp/dh/HybridDiffieHellman.cpp +29 -0
  20. package/cpp/ec/HybridEcKeyPair.cpp +35 -33
  21. package/cpp/ec/HybridEcKeyPair.hpp +3 -7
  22. package/cpp/ecdh/HybridECDH.cpp +23 -0
  23. package/cpp/ed25519/HybridEdKeyPair.cpp +73 -117
  24. package/cpp/ed25519/HybridEdKeyPair.hpp +5 -9
  25. package/cpp/hash/HybridHash.cpp +5 -7
  26. package/cpp/hkdf/HybridHkdf.cpp +6 -4
  27. package/cpp/hmac/HybridHmac.cpp +4 -6
  28. package/cpp/kmac/HybridKmac.cpp +4 -4
  29. package/cpp/mldsa/HybridMlDsaKeyPair.cpp +37 -49
  30. package/cpp/mlkem/HybridMlKemKeyPair.cpp +39 -43
  31. package/cpp/pbkdf2/HybridPbkdf2.cpp +7 -8
  32. package/cpp/rsa/HybridRsaKeyPair.cpp +5 -8
  33. package/cpp/rsa/HybridRsaKeyPair.hpp +4 -7
  34. package/cpp/scrypt/HybridScrypt.cpp +6 -4
  35. package/cpp/sign/HybridSignHandle.cpp +25 -68
  36. package/cpp/sign/HybridVerifyHandle.cpp +23 -60
  37. package/cpp/utils/HybridUtils.cpp +183 -43
  38. package/cpp/utils/HybridUtils.hpp +9 -2
  39. package/cpp/utils/QuickCryptoUtils.hpp +72 -0
  40. package/lib/commonjs/argon2.js +51 -2
  41. package/lib/commonjs/argon2.js.map +1 -1
  42. package/lib/commonjs/cipher.js +109 -11
  43. package/lib/commonjs/cipher.js.map +1 -1
  44. package/lib/commonjs/dsa.js +8 -2
  45. package/lib/commonjs/dsa.js.map +1 -1
  46. package/lib/commonjs/hash.js +15 -5
  47. package/lib/commonjs/hash.js.map +1 -1
  48. package/lib/commonjs/hkdf.js +33 -6
  49. package/lib/commonjs/hkdf.js.map +1 -1
  50. package/lib/commonjs/hmac.js +15 -5
  51. package/lib/commonjs/hmac.js.map +1 -1
  52. package/lib/commonjs/keys/publicCipher.js +10 -4
  53. package/lib/commonjs/keys/publicCipher.js.map +1 -1
  54. package/lib/commonjs/random.js +11 -2
  55. package/lib/commonjs/random.js.map +1 -1
  56. package/lib/commonjs/rsa.js +12 -5
  57. package/lib/commonjs/rsa.js.map +1 -1
  58. package/lib/commonjs/scrypt.js +47 -6
  59. package/lib/commonjs/scrypt.js.map +1 -1
  60. package/lib/commonjs/subtle.js +76 -5
  61. package/lib/commonjs/subtle.js.map +1 -1
  62. package/lib/commonjs/utils/cipher.js +18 -7
  63. package/lib/commonjs/utils/cipher.js.map +1 -1
  64. package/lib/commonjs/utils/conversion.js +33 -9
  65. package/lib/commonjs/utils/conversion.js.map +1 -1
  66. package/lib/commonjs/utils/timingSafeEqual.js +7 -2
  67. package/lib/commonjs/utils/timingSafeEqual.js.map +1 -1
  68. package/lib/commonjs/x509certificate.js +6 -6
  69. package/lib/commonjs/x509certificate.js.map +1 -1
  70. package/lib/module/argon2.js +51 -2
  71. package/lib/module/argon2.js.map +1 -1
  72. package/lib/module/cipher.js +109 -11
  73. package/lib/module/cipher.js.map +1 -1
  74. package/lib/module/dsa.js +8 -2
  75. package/lib/module/dsa.js.map +1 -1
  76. package/lib/module/hash.js +15 -5
  77. package/lib/module/hash.js.map +1 -1
  78. package/lib/module/hkdf.js +33 -6
  79. package/lib/module/hkdf.js.map +1 -1
  80. package/lib/module/hmac.js +15 -5
  81. package/lib/module/hmac.js.map +1 -1
  82. package/lib/module/keys/publicCipher.js +10 -4
  83. package/lib/module/keys/publicCipher.js.map +1 -1
  84. package/lib/module/random.js +11 -2
  85. package/lib/module/random.js.map +1 -1
  86. package/lib/module/rsa.js +11 -4
  87. package/lib/module/rsa.js.map +1 -1
  88. package/lib/module/scrypt.js +47 -6
  89. package/lib/module/scrypt.js.map +1 -1
  90. package/lib/module/subtle.js +76 -5
  91. package/lib/module/subtle.js.map +1 -1
  92. package/lib/module/utils/cipher.js +18 -7
  93. package/lib/module/utils/cipher.js.map +1 -1
  94. package/lib/module/utils/conversion.js +33 -9
  95. package/lib/module/utils/conversion.js.map +1 -1
  96. package/lib/module/utils/timingSafeEqual.js +8 -3
  97. package/lib/module/utils/timingSafeEqual.js.map +1 -1
  98. package/lib/module/x509certificate.js +6 -6
  99. package/lib/module/x509certificate.js.map +1 -1
  100. package/lib/typescript/argon2.d.ts.map +1 -1
  101. package/lib/typescript/cipher.d.ts +2 -2
  102. package/lib/typescript/cipher.d.ts.map +1 -1
  103. package/lib/typescript/dsa.d.ts.map +1 -1
  104. package/lib/typescript/hash.d.ts +2 -2
  105. package/lib/typescript/hash.d.ts.map +1 -1
  106. package/lib/typescript/hkdf.d.ts.map +1 -1
  107. package/lib/typescript/hmac.d.ts +2 -2
  108. package/lib/typescript/hmac.d.ts.map +1 -1
  109. package/lib/typescript/index.d.ts +1 -1
  110. package/lib/typescript/index.d.ts.map +1 -1
  111. package/lib/typescript/keys/publicCipher.d.ts.map +1 -1
  112. package/lib/typescript/random.d.ts.map +1 -1
  113. package/lib/typescript/rsa.d.ts.map +1 -1
  114. package/lib/typescript/scrypt.d.ts.map +1 -1
  115. package/lib/typescript/specs/utils.nitro.d.ts +0 -2
  116. package/lib/typescript/specs/utils.nitro.d.ts.map +1 -1
  117. package/lib/typescript/subtle.d.ts.map +1 -1
  118. package/lib/typescript/utils/cipher.d.ts +13 -1
  119. package/lib/typescript/utils/cipher.d.ts.map +1 -1
  120. package/lib/typescript/utils/conversion.d.ts +9 -6
  121. package/lib/typescript/utils/conversion.d.ts.map +1 -1
  122. package/lib/typescript/utils/timingSafeEqual.d.ts.map +1 -1
  123. package/lib/typescript/x509certificate.d.ts.map +1 -1
  124. package/nitrogen/generated/shared/c++/HybridUtilsSpec.cpp +0 -2
  125. package/nitrogen/generated/shared/c++/HybridUtilsSpec.hpp +0 -3
  126. package/package.json +37 -5
  127. package/src/argon2.ts +80 -2
  128. package/src/cipher.ts +139 -15
  129. package/src/dsa.ts +11 -2
  130. package/src/hash.ts +17 -7
  131. package/src/hkdf.ts +44 -6
  132. package/src/hmac.ts +17 -7
  133. package/src/keys/publicCipher.ts +10 -4
  134. package/src/random.ts +11 -2
  135. package/src/rsa.ts +18 -4
  136. package/src/scrypt.ts +73 -6
  137. package/src/specs/utils.nitro.ts +0 -2
  138. package/src/subtle.ts +90 -8
  139. package/src/utils/cipher.ts +30 -8
  140. package/src/utils/conversion.ts +58 -20
  141. package/src/utils/timingSafeEqual.ts +8 -3
  142. package/src/x509certificate.ts +5 -6
  143. package/deps/blake3/.cargo/config.toml +0 -2
  144. package/deps/blake3/.git-blame-ignore-revs +0 -2
  145. package/deps/blake3/.github/workflows/build_b3sum.py +0 -38
  146. package/deps/blake3/.github/workflows/ci.yml +0 -491
  147. package/deps/blake3/.github/workflows/tag.yml +0 -43
  148. package/deps/blake3/.github/workflows/upload_github_release_asset.py +0 -73
  149. package/deps/blake3/CONTRIBUTING.md +0 -31
  150. package/deps/blake3/Cargo.toml +0 -135
  151. package/deps/blake3/b3sum/Cargo.lock +0 -513
  152. package/deps/blake3/b3sum/Cargo.toml +0 -26
  153. package/deps/blake3/b3sum/README.md +0 -72
  154. package/deps/blake3/b3sum/src/main.rs +0 -564
  155. package/deps/blake3/b3sum/src/unit_tests.rs +0 -235
  156. package/deps/blake3/b3sum/tests/cli_tests.rs +0 -680
  157. package/deps/blake3/b3sum/what_does_check_do.md +0 -176
  158. package/deps/blake3/benches/bench.rs +0 -623
  159. package/deps/blake3/build.rs +0 -389
  160. package/deps/blake3/c/CMakeLists.txt +0 -383
  161. package/deps/blake3/c/CMakePresets.json +0 -73
  162. package/deps/blake3/c/Makefile.testing +0 -82
  163. package/deps/blake3/c/blake3-config.cmake.in +0 -14
  164. package/deps/blake3/c/blake3_avx2.c +0 -326
  165. package/deps/blake3/c/blake3_avx2_x86-64_unix.S +0 -1815
  166. package/deps/blake3/c/blake3_avx2_x86-64_windows_gnu.S +0 -1817
  167. package/deps/blake3/c/blake3_avx2_x86-64_windows_msvc.asm +0 -1828
  168. package/deps/blake3/c/blake3_avx512.c +0 -1388
  169. package/deps/blake3/c/blake3_avx512_x86-64_unix.S +0 -4824
  170. package/deps/blake3/c/blake3_avx512_x86-64_windows_gnu.S +0 -2615
  171. package/deps/blake3/c/blake3_avx512_x86-64_windows_msvc.asm +0 -2634
  172. package/deps/blake3/c/blake3_c_rust_bindings/Cargo.toml +0 -32
  173. package/deps/blake3/c/blake3_c_rust_bindings/README.md +0 -4
  174. package/deps/blake3/c/blake3_c_rust_bindings/benches/bench.rs +0 -477
  175. package/deps/blake3/c/blake3_c_rust_bindings/build.rs +0 -253
  176. package/deps/blake3/c/blake3_c_rust_bindings/cross_test.sh +0 -31
  177. package/deps/blake3/c/blake3_c_rust_bindings/src/lib.rs +0 -333
  178. package/deps/blake3/c/blake3_c_rust_bindings/src/test.rs +0 -696
  179. package/deps/blake3/c/blake3_sse2.c +0 -566
  180. package/deps/blake3/c/blake3_sse2_x86-64_unix.S +0 -2291
  181. package/deps/blake3/c/blake3_sse2_x86-64_windows_gnu.S +0 -2332
  182. package/deps/blake3/c/blake3_sse2_x86-64_windows_msvc.asm +0 -2350
  183. package/deps/blake3/c/blake3_sse41.c +0 -560
  184. package/deps/blake3/c/blake3_sse41_x86-64_unix.S +0 -2028
  185. package/deps/blake3/c/blake3_sse41_x86-64_windows_gnu.S +0 -2069
  186. package/deps/blake3/c/blake3_sse41_x86-64_windows_msvc.asm +0 -2089
  187. package/deps/blake3/c/blake3_tbb.cpp +0 -37
  188. package/deps/blake3/c/dependencies/CMakeLists.txt +0 -3
  189. package/deps/blake3/c/dependencies/tbb/CMakeLists.txt +0 -28
  190. package/deps/blake3/c/example.c +0 -36
  191. package/deps/blake3/c/example_tbb.c +0 -57
  192. package/deps/blake3/c/libblake3.pc.in +0 -12
  193. package/deps/blake3/c/main.c +0 -166
  194. package/deps/blake3/c/test.py +0 -97
  195. package/deps/blake3/media/B3.svg +0 -70
  196. package/deps/blake3/media/BLAKE3.svg +0 -85
  197. package/deps/blake3/media/speed.svg +0 -1474
  198. package/deps/blake3/reference_impl/Cargo.toml +0 -8
  199. package/deps/blake3/reference_impl/README.md +0 -14
  200. package/deps/blake3/reference_impl/reference_impl.rs +0 -374
  201. package/deps/blake3/src/ffi_avx2.rs +0 -65
  202. package/deps/blake3/src/ffi_avx512.rs +0 -169
  203. package/deps/blake3/src/ffi_neon.rs +0 -82
  204. package/deps/blake3/src/ffi_sse2.rs +0 -126
  205. package/deps/blake3/src/ffi_sse41.rs +0 -126
  206. package/deps/blake3/src/guts.rs +0 -60
  207. package/deps/blake3/src/hazmat.rs +0 -704
  208. package/deps/blake3/src/io.rs +0 -64
  209. package/deps/blake3/src/join.rs +0 -92
  210. package/deps/blake3/src/lib.rs +0 -1835
  211. package/deps/blake3/src/platform.rs +0 -587
  212. package/deps/blake3/src/portable.rs +0 -198
  213. package/deps/blake3/src/rust_avx2.rs +0 -474
  214. package/deps/blake3/src/rust_sse2.rs +0 -775
  215. package/deps/blake3/src/rust_sse41.rs +0 -766
  216. package/deps/blake3/src/test.rs +0 -1049
  217. package/deps/blake3/src/traits.rs +0 -227
  218. package/deps/blake3/src/wasm32_simd.rs +0 -794
  219. package/deps/blake3/test_vectors/Cargo.toml +0 -19
  220. package/deps/blake3/test_vectors/cross_test.sh +0 -25
  221. package/deps/blake3/test_vectors/src/bin/generate.rs +0 -4
  222. package/deps/blake3/test_vectors/src/lib.rs +0 -350
  223. package/deps/blake3/test_vectors/test_vectors.json +0 -217
  224. package/deps/blake3/tools/compiler_version/Cargo.toml +0 -7
  225. package/deps/blake3/tools/compiler_version/build.rs +0 -6
  226. package/deps/blake3/tools/compiler_version/src/main.rs +0 -27
  227. package/deps/blake3/tools/instruction_set_support/Cargo.toml +0 -6
  228. package/deps/blake3/tools/instruction_set_support/src/main.rs +0 -10
  229. package/deps/blake3/tools/release.md +0 -16
  230. package/deps/ncrypto/.bazelignore +0 -4
  231. package/deps/ncrypto/.bazelrc +0 -1
  232. package/deps/ncrypto/.bazelversion +0 -1
  233. package/deps/ncrypto/.clang-format +0 -111
  234. package/deps/ncrypto/.github/workflows/bazel.yml +0 -58
  235. package/deps/ncrypto/.github/workflows/commitlint.yml +0 -16
  236. package/deps/ncrypto/.github/workflows/linter.yml +0 -38
  237. package/deps/ncrypto/.github/workflows/macos.yml +0 -43
  238. package/deps/ncrypto/.github/workflows/release-please.yml +0 -16
  239. package/deps/ncrypto/.github/workflows/ubuntu.yml +0 -128
  240. package/deps/ncrypto/.github/workflows/visual-studio.yml +0 -49
  241. package/deps/ncrypto/.python-version +0 -1
  242. package/deps/ncrypto/.release-please-manifest.json +0 -3
  243. package/deps/ncrypto/BUILD.bazel +0 -44
  244. package/deps/ncrypto/CHANGELOG.md +0 -37
  245. package/deps/ncrypto/CMakeLists.txt +0 -79
  246. package/deps/ncrypto/MODULE.bazel +0 -16
  247. package/deps/ncrypto/MODULE.bazel.lock +0 -461
  248. package/deps/ncrypto/cmake/CPM.cmake +0 -1225
  249. package/deps/ncrypto/cmake/ncrypto-flags.cmake +0 -17
  250. package/deps/ncrypto/ncrypto.pc.in +0 -10
  251. package/deps/ncrypto/patches/0001-Expose-libdecrepit-so-NodeJS-can-use-it-for-ncrypto.patch +0 -28
  252. package/deps/ncrypto/pyproject.toml +0 -38
  253. package/deps/ncrypto/release-please-config.json +0 -11
  254. package/deps/ncrypto/src/CMakeLists.txt +0 -40
  255. package/deps/ncrypto/tests/BUILD.bazel +0 -11
  256. package/deps/ncrypto/tests/CMakeLists.txt +0 -7
  257. package/deps/ncrypto/tests/basic.cpp +0 -856
  258. package/deps/ncrypto/tools/run-clang-format.sh +0 -42
  259. package/deps/simdutf/.clang-format +0 -4
  260. package/deps/simdutf/.github/ISSUE_TEMPLATE/bug_report.md +0 -62
  261. package/deps/simdutf/.github/ISSUE_TEMPLATE/config.yml +0 -1
  262. package/deps/simdutf/.github/ISSUE_TEMPLATE/feature_request.md +0 -35
  263. package/deps/simdutf/.github/ISSUE_TEMPLATE/standard-issue-template.md +0 -29
  264. package/deps/simdutf/.github/pull_request_template.md +0 -51
  265. package/deps/simdutf/.github/workflows/aarch64.yml +0 -39
  266. package/deps/simdutf/.github/workflows/alpine.yml +0 -27
  267. package/deps/simdutf/.github/workflows/amalgamation_demos.yml +0 -34
  268. package/deps/simdutf/.github/workflows/armv7.yml +0 -32
  269. package/deps/simdutf/.github/workflows/atomic_fuzz.yml +0 -25
  270. package/deps/simdutf/.github/workflows/cifuzz.yml +0 -37
  271. package/deps/simdutf/.github/workflows/clangformat.yml +0 -36
  272. package/deps/simdutf/.github/workflows/debian-latestcxxstandards.yml +0 -40
  273. package/deps/simdutf/.github/workflows/debian.yml +0 -33
  274. package/deps/simdutf/.github/workflows/documentation.yml +0 -36
  275. package/deps/simdutf/.github/workflows/emscripten.yml +0 -19
  276. package/deps/simdutf/.github/workflows/loongarch64-gcc-14.2.yml +0 -39
  277. package/deps/simdutf/.github/workflows/macos-latest.yml +0 -29
  278. package/deps/simdutf/.github/workflows/msys2-clang.yml +0 -48
  279. package/deps/simdutf/.github/workflows/msys2.yml +0 -50
  280. package/deps/simdutf/.github/workflows/ppc64le.yml +0 -29
  281. package/deps/simdutf/.github/workflows/rvv-1024-clang-18.yml +0 -35
  282. package/deps/simdutf/.github/workflows/rvv-128-clang-17.yml +0 -35
  283. package/deps/simdutf/.github/workflows/rvv-256-gcc-14.yml +0 -31
  284. package/deps/simdutf/.github/workflows/s390x.yml +0 -29
  285. package/deps/simdutf/.github/workflows/selective-amalgamation.yml +0 -29
  286. package/deps/simdutf/.github/workflows/typos.yml +0 -19
  287. package/deps/simdutf/.github/workflows/ubuntu22-cxx20.yml +0 -30
  288. package/deps/simdutf/.github/workflows/ubuntu22.yml +0 -32
  289. package/deps/simdutf/.github/workflows/ubuntu22_gcc12.yml +0 -27
  290. package/deps/simdutf/.github/workflows/ubuntu22sani.yml +0 -29
  291. package/deps/simdutf/.github/workflows/ubuntu24-cxxstandards.yml +0 -34
  292. package/deps/simdutf/.github/workflows/ubuntu24-unsignedchar.yml +0 -34
  293. package/deps/simdutf/.github/workflows/ubuntu24.yml +0 -32
  294. package/deps/simdutf/.github/workflows/ubuntu24sani.yml +0 -36
  295. package/deps/simdutf/.github/workflows/ubuntu24sani_clang.yml +0 -29
  296. package/deps/simdutf/.github/workflows/vs17-arm-ci.yml +0 -21
  297. package/deps/simdutf/.github/workflows/vs17-ci-cxx20.yml +0 -41
  298. package/deps/simdutf/.github/workflows/vs17-ci.yml +0 -41
  299. package/deps/simdutf/.github/workflows/vs17-clang-ci.yml +0 -41
  300. package/deps/simdutf/.github/workflows/vs17-cxxstandards.yml +0 -36
  301. package/deps/simdutf/AI_USAGE_POLICY.md +0 -56
  302. package/deps/simdutf/AUTHORS +0 -6
  303. package/deps/simdutf/CMakeLists.txt +0 -231
  304. package/deps/simdutf/CONTRIBUTING.md +0 -214
  305. package/deps/simdutf/CONTRIBUTORS +0 -1
  306. package/deps/simdutf/Doxyfile +0 -2584
  307. package/deps/simdutf/Makefile.crosscompile +0 -54
  308. package/deps/simdutf/README-RVV.md +0 -16
  309. package/deps/simdutf/SECURITY.md +0 -8
  310. package/deps/simdutf/benchmarks/CMakeLists.txt +0 -101
  311. package/deps/simdutf/benchmarks/alignment.cpp +0 -150
  312. package/deps/simdutf/benchmarks/base64/CMakeLists.txt +0 -30
  313. package/deps/simdutf/benchmarks/base64/benchmark_base64.cpp +0 -875
  314. package/deps/simdutf/benchmarks/base64/libbase64_spaces.h +0 -49
  315. package/deps/simdutf/benchmarks/base64/node_base64.h +0 -227
  316. package/deps/simdutf/benchmarks/base64/openssl3_base64.h +0 -334
  317. package/deps/simdutf/benchmarks/benchmark.cpp +0 -65
  318. package/deps/simdutf/benchmarks/benchmark_to_well_formed_utf16.cpp +0 -347
  319. package/deps/simdutf/benchmarks/competition/.clang-format-ignore +0 -5
  320. package/deps/simdutf/benchmarks/competition/CppCon2018/utf_utils.cpp +0 -1276
  321. package/deps/simdutf/benchmarks/competition/CppCon2018/utf_utils.h +0 -595
  322. package/deps/simdutf/benchmarks/competition/README.md +0 -7
  323. package/deps/simdutf/benchmarks/competition/hoehrmann/hoehrmann.h +0 -91
  324. package/deps/simdutf/benchmarks/competition/inoue2008/inoue_utf8_to_utf16.h +0 -444
  325. package/deps/simdutf/benchmarks/competition/inoue2008/inoue_utf8_to_utf16_tables.h +0 -13183
  326. package/deps/simdutf/benchmarks/competition/inoue2008/script.py +0 -73
  327. package/deps/simdutf/benchmarks/competition/llvm/ConvertUTF.cpp +0 -738
  328. package/deps/simdutf/benchmarks/competition/llvm/ConvertUTF.h +0 -293
  329. package/deps/simdutf/benchmarks/competition/u8u16/COPYRIGHT +0 -8
  330. package/deps/simdutf/benchmarks/competition/u8u16/Makefile +0 -44
  331. package/deps/simdutf/benchmarks/competition/u8u16/OSL3.0.txt +0 -169
  332. package/deps/simdutf/benchmarks/competition/u8u16/Profiling/BOM_Profiler.h +0 -148
  333. package/deps/simdutf/benchmarks/competition/u8u16/Profiling/i386_timer.h +0 -45
  334. package/deps/simdutf/benchmarks/competition/u8u16/Profiling/ppc_timer.c +0 -34
  335. package/deps/simdutf/benchmarks/competition/u8u16/README +0 -56
  336. package/deps/simdutf/benchmarks/competition/u8u16/config/config_defs.h +0 -43
  337. package/deps/simdutf/benchmarks/competition/u8u16/config/g4_config.h +0 -27
  338. package/deps/simdutf/benchmarks/competition/u8u16/config/mmx_config.h +0 -16
  339. package/deps/simdutf/benchmarks/competition/u8u16/config/p4_config.h +0 -18
  340. package/deps/simdutf/benchmarks/competition/u8u16/config/p4_ideal_config.h +0 -16
  341. package/deps/simdutf/benchmarks/competition/u8u16/config/spu_config.h +0 -28
  342. package/deps/simdutf/benchmarks/competition/u8u16/config/ssse3_config.h +0 -20
  343. package/deps/simdutf/benchmarks/competition/u8u16/iconv_u8u16.c +0 -2
  344. package/deps/simdutf/benchmarks/competition/u8u16/lib/altivec_simd.h +0 -440
  345. package/deps/simdutf/benchmarks/competition/u8u16/lib/libgen/make_basic_ops.py +0 -121
  346. package/deps/simdutf/benchmarks/competition/u8u16/lib/libgen/make_half_operand_versions.py +0 -158
  347. package/deps/simdutf/benchmarks/competition/u8u16/lib/libgen/make_test.py +0 -270
  348. package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd.h +0 -141
  349. package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd_basic.h +0 -216
  350. package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd_built_in.h +0 -119
  351. package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd_modified.h +0 -2430
  352. package/deps/simdutf/benchmarks/competition/u8u16/lib/outline.txt +0 -39
  353. package/deps/simdutf/benchmarks/competition/u8u16/lib/spu_simd.h +0 -421
  354. package/deps/simdutf/benchmarks/competition/u8u16/lib/sse_simd.h +0 -836
  355. package/deps/simdutf/benchmarks/competition/u8u16/lib/stdint.h +0 -222
  356. package/deps/simdutf/benchmarks/competition/u8u16/libu8u16_BE.c +0 -4
  357. package/deps/simdutf/benchmarks/competition/u8u16/libu8u16_LE.c +0 -5
  358. package/deps/simdutf/benchmarks/competition/u8u16/proto/u8u16.py +0 -390
  359. package/deps/simdutf/benchmarks/competition/u8u16/src/Makefile +0 -18
  360. package/deps/simdutf/benchmarks/competition/u8u16/src/bytelex.h +0 -448
  361. package/deps/simdutf/benchmarks/competition/u8u16/src/charsets/ASCII_EBCDIC.h +0 -284
  362. package/deps/simdutf/benchmarks/competition/u8u16/src/libu8u16.c +0 -1975
  363. package/deps/simdutf/benchmarks/competition/u8u16/src/libu8u16.pdf +0 -0
  364. package/deps/simdutf/benchmarks/competition/u8u16/src/libu8u16.w +0 -2263
  365. package/deps/simdutf/benchmarks/competition/u8u16/src/multiliteral.h +0 -239
  366. package/deps/simdutf/benchmarks/competition/u8u16/src/u8u16.c +0 -232
  367. package/deps/simdutf/benchmarks/competition/u8u16/src/x8x16.c +0 -194
  368. package/deps/simdutf/benchmarks/competition/u8u16/src/xml_error.c +0 -193
  369. package/deps/simdutf/benchmarks/competition/u8u16/src/xml_error.h +0 -167
  370. package/deps/simdutf/benchmarks/competition/u8u16/src/xmldecl.c +0 -288
  371. package/deps/simdutf/benchmarks/competition/u8u16/src/xmldecl.h +0 -117
  372. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_g4.c +0 -2
  373. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_mmx.c +0 -2
  374. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_p4.c +0 -3
  375. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_p4_ideal.c +0 -2
  376. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_spu.c +0 -2
  377. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_ssse3.c +0 -3
  378. package/deps/simdutf/benchmarks/competition/u8u16/x8x16_p4.c +0 -2
  379. package/deps/simdutf/benchmarks/competition/utf8lut/LICENSE +0 -23
  380. package/deps/simdutf/benchmarks/competition/utf8lut/data/test_minimal.txt +0 -44
  381. package/deps/simdutf/benchmarks/competition/utf8lut/readme.md +0 -106
  382. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_clang_corr_tests.cmd +0 -11
  383. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_clang_corr_tests.sh +0 -13
  384. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_corr_tests.sh +0 -13
  385. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_example.sh +0 -13
  386. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_file_conv.sh +0 -14
  387. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_iconv_lib.sh +0 -11
  388. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_iconv_sample.sh +0 -8
  389. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_corr_tests.cmd +0 -12
  390. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_example.cmd +0 -13
  391. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_file_conv.cmd +0 -14
  392. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_iconv_lib.cmd +0 -11
  393. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_iconv_sample.cmd +0 -8
  394. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_corr_tests.cmd +0 -11
  395. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_example.cmd +0 -12
  396. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_file_conv.cmd +0 -13
  397. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_iconv_lib.cmd +0 -10
  398. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_iconv_sample.cmd +0 -9
  399. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/html_table.py +0 -25
  400. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/measure.py +0 -94
  401. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/resize.py +0 -20
  402. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/wipe_all.cmd +0 -2
  403. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/wipe_interm.cmd +0 -1
  404. package/deps/simdutf/benchmarks/competition/utf8lut/src/base/CustomMemcpy.h +0 -75
  405. package/deps/simdutf/benchmarks/competition/utf8lut/src/base/PerfDefs.h +0 -47
  406. package/deps/simdutf/benchmarks/competition/utf8lut/src/base/Timing.cpp +0 -17
  407. package/deps/simdutf/benchmarks/competition/utf8lut/src/base/Timing.h +0 -76
  408. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/AllProcessors.cpp +0 -35
  409. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BaseBufferProcessor.cpp +0 -117
  410. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BaseBufferProcessor.h +0 -210
  411. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BufferDecoder.h +0 -158
  412. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BufferEncoder.h +0 -104
  413. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/ProcessorPlugins.h +0 -334
  414. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/ProcessorSelector.h +0 -186
  415. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/DecoderLut.cpp +0 -140
  416. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/DecoderLut.h +0 -42
  417. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/DecoderProcess.h +0 -100
  418. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/Dfa.h +0 -57
  419. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/EncoderLut.cpp +0 -85
  420. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/EncoderLut.h +0 -27
  421. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/EncoderProcess.h +0 -126
  422. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/ProcessTrivial.h +0 -108
  423. package/deps/simdutf/benchmarks/competition/utf8lut/src/iconv/iconv.cpp +0 -139
  424. package/deps/simdutf/benchmarks/competition/utf8lut/src/iconv/iconv.h +0 -74
  425. package/deps/simdutf/benchmarks/competition/utf8lut/src/message/MessageConverter.cpp +0 -65
  426. package/deps/simdutf/benchmarks/competition/utf8lut/src/message/MessageConverter.h +0 -91
  427. package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/CorrectnessTests.cpp +0 -772
  428. package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/Example.cpp +0 -12
  429. package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/FileConverter.cpp +0 -486
  430. package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/iconv_sample.c +0 -162
  431. package/deps/simdutf/benchmarks/competition/utf8lut/src/utf8lut.h +0 -15
  432. package/deps/simdutf/benchmarks/competition/utf8sse4/fromutf8-sse.cpp +0 -292
  433. package/deps/simdutf/benchmarks/competition/utfcpp/LICENSE +0 -23
  434. package/deps/simdutf/benchmarks/competition/utfcpp/README.md +0 -1503
  435. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/checked.h +0 -335
  436. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/core.h +0 -338
  437. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/cpp11.h +0 -103
  438. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/cpp17.h +0 -103
  439. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/unchecked.h +0 -274
  440. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8.h +0 -34
  441. package/deps/simdutf/benchmarks/dataset/README.md +0 -155
  442. package/deps/simdutf/benchmarks/dataset/emoji.txt +0 -204
  443. package/deps/simdutf/benchmarks/dataset/scripts/utf8type.py +0 -40
  444. package/deps/simdutf/benchmarks/dataset/wikipedia_mars/Makefile +0 -80
  445. package/deps/simdutf/benchmarks/dataset/wikipedia_mars/convert_to_utf6.py +0 -20
  446. package/deps/simdutf/benchmarks/find/CMakeLists.txt +0 -6
  447. package/deps/simdutf/benchmarks/find/findbenchmark.cpp +0 -63
  448. package/deps/simdutf/benchmarks/find/findbenchmarker.h +0 -46
  449. package/deps/simdutf/benchmarks/shortbench.cpp +0 -555
  450. package/deps/simdutf/benchmarks/src/CMakeLists.txt +0 -52
  451. package/deps/simdutf/benchmarks/src/apple_arm_events.h +0 -1104
  452. package/deps/simdutf/benchmarks/src/benchmark.cpp +0 -3899
  453. package/deps/simdutf/benchmarks/src/benchmark.h +0 -317
  454. package/deps/simdutf/benchmarks/src/benchmark_base.cpp +0 -144
  455. package/deps/simdutf/benchmarks/src/benchmark_base.h +0 -98
  456. package/deps/simdutf/benchmarks/src/cmdline.cpp +0 -176
  457. package/deps/simdutf/benchmarks/src/cmdline.h +0 -35
  458. package/deps/simdutf/benchmarks/src/event_counter.h +0 -162
  459. package/deps/simdutf/benchmarks/src/linux-perf-events.h +0 -104
  460. package/deps/simdutf/benchmarks/stream.cpp +0 -209
  461. package/deps/simdutf/benchmarks/threaded.cpp +0 -123
  462. package/deps/simdutf/cmake/CPM.cmake +0 -1363
  463. package/deps/simdutf/cmake/JoinPaths.cmake +0 -23
  464. package/deps/simdutf/cmake/add_cpp_test.cmake +0 -68
  465. package/deps/simdutf/cmake/simdutf-config.cmake.in +0 -2
  466. package/deps/simdutf/cmake/simdutf-flags.cmake +0 -26
  467. package/deps/simdutf/cmake/toolchains-ci/riscv64-linux-gnu.cmake +0 -4
  468. package/deps/simdutf/cmake/toolchains-dev/README.md +0 -32
  469. package/deps/simdutf/cmake/toolchains-dev/aarch64.cmake +0 -14
  470. package/deps/simdutf/cmake/toolchains-dev/loongarch64.cmake +0 -22
  471. package/deps/simdutf/cmake/toolchains-dev/powerpc64.cmake +0 -16
  472. package/deps/simdutf/cmake/toolchains-dev/powerpc64le.cmake +0 -16
  473. package/deps/simdutf/cmake/toolchains-dev/riscv64.cmake +0 -16
  474. package/deps/simdutf/cmake/toolchains-dev/rvv-spike.cmake +0 -38
  475. package/deps/simdutf/doc/avx512.png +0 -0
  476. package/deps/simdutf/doc/logo.png +0 -0
  477. package/deps/simdutf/doc/logo.svg +0 -165
  478. package/deps/simdutf/doc/node2023.png +0 -0
  479. package/deps/simdutf/doc/shortinput.md +0 -78
  480. package/deps/simdutf/doc/utf16utf8.png +0 -0
  481. package/deps/simdutf/doc/utf8utf16.png +0 -0
  482. package/deps/simdutf/doc/widelogo.png +0 -0
  483. package/deps/simdutf/doxygen.py +0 -50
  484. package/deps/simdutf/fuzz/.clang-format +0 -9
  485. package/deps/simdutf/fuzz/CMakeLists.txt +0 -45
  486. package/deps/simdutf/fuzz/README.md +0 -168
  487. package/deps/simdutf/fuzz/atomic_base64.cpp +0 -448
  488. package/deps/simdutf/fuzz/base64.cpp +0 -278
  489. package/deps/simdutf/fuzz/build.sh +0 -83
  490. package/deps/simdutf/fuzz/conversion.cpp +0 -669
  491. package/deps/simdutf/fuzz/helpers/.clang-format-ignore +0 -1
  492. package/deps/simdutf/fuzz/helpers/common.h +0 -135
  493. package/deps/simdutf/fuzz/helpers/nameof.hpp +0 -1258
  494. package/deps/simdutf/fuzz/main.cpp +0 -72
  495. package/deps/simdutf/fuzz/minimize_and_cleanse.sh +0 -87
  496. package/deps/simdutf/fuzz/misc.cpp +0 -216
  497. package/deps/simdutf/fuzz/random_fuzz.sh +0 -154
  498. package/deps/simdutf/fuzz/roundtrip.cpp +0 -588
  499. package/deps/simdutf/fuzz/safe_conversion.cpp +0 -104
  500. package/deps/simdutf/riscv/Dockerfile +0 -16
  501. package/deps/simdutf/riscv/README.md +0 -24
  502. package/deps/simdutf/riscv/remove-docker-station +0 -8
  503. package/deps/simdutf/riscv/run-docker-station +0 -31
  504. package/deps/simdutf/scripts/.flake8 +0 -2
  505. package/deps/simdutf/scripts/Makefile +0 -2
  506. package/deps/simdutf/scripts/README_ADD_FUNCTION.md +0 -49
  507. package/deps/simdutf/scripts/add_function.py +0 -330
  508. package/deps/simdutf/scripts/amalgamation_tests.py +0 -156
  509. package/deps/simdutf/scripts/base64/Makefile +0 -2
  510. package/deps/simdutf/scripts/base64/README.md +0 -2
  511. package/deps/simdutf/scripts/base64/avx512.py +0 -76
  512. package/deps/simdutf/scripts/base64/neon_decode.py +0 -143
  513. package/deps/simdutf/scripts/base64/neon_generate_lut.py +0 -101
  514. package/deps/simdutf/scripts/base64/sse.py +0 -252
  515. package/deps/simdutf/scripts/base64/sseregular.py +0 -160
  516. package/deps/simdutf/scripts/base64/sseurl.py +0 -283
  517. package/deps/simdutf/scripts/base64/table.py +0 -59
  518. package/deps/simdutf/scripts/base64bench_print.py +0 -145
  519. package/deps/simdutf/scripts/benchmark-all.py +0 -119
  520. package/deps/simdutf/scripts/benchmark_print.py +0 -324
  521. package/deps/simdutf/scripts/check_feature_macros.py +0 -156
  522. package/deps/simdutf/scripts/check_typos.sh +0 -13
  523. package/deps/simdutf/scripts/clang_format.sh +0 -35
  524. package/deps/simdutf/scripts/clang_format_docker.sh +0 -38
  525. package/deps/simdutf/scripts/common.py +0 -24
  526. package/deps/simdutf/scripts/compilation_benchmark.py +0 -55
  527. package/deps/simdutf/scripts/compile_many_variations.sh +0 -64
  528. package/deps/simdutf/scripts/create_latex_table.py +0 -62
  529. package/deps/simdutf/scripts/docker/Dockerfile +0 -14
  530. package/deps/simdutf/scripts/docker/Makefile +0 -9
  531. package/deps/simdutf/scripts/docker/README.md +0 -30
  532. package/deps/simdutf/scripts/docker/llvm.gpg +0 -0
  533. package/deps/simdutf/scripts/ppc64_convert_utf16_to_utf8.py +0 -155
  534. package/deps/simdutf/scripts/prepare_doxygen.sh +0 -21
  535. package/deps/simdutf/scripts/release.py +0 -197
  536. package/deps/simdutf/scripts/shortinputplots.py +0 -97
  537. package/deps/simdutf/scripts/sse_convert_utf16_to_utf8.py +0 -422
  538. package/deps/simdutf/scripts/sse_convert_utf32_to_utf16.py +0 -105
  539. package/deps/simdutf/scripts/sse_utf8_utf16_decode.py +0 -186
  540. package/deps/simdutf/scripts/sse_validate_utf16le_proof.py +0 -137
  541. package/deps/simdutf/scripts/sse_validate_utf16le_testcases.py +0 -129
  542. package/deps/simdutf/scripts/table.py +0 -207
  543. package/deps/simdutf/scripts/tests/new.txt +0 -33
  544. package/deps/simdutf/scripts/tests/old.txt +0 -33
  545. package/deps/simdutf/scripts/tests/results.txt +0 -272
  546. package/deps/simdutf/simdutf.pc.in +0 -11
  547. package/deps/simdutf/singleheader/.flake8 +0 -2
  548. package/deps/simdutf/singleheader/CMakeLists.txt +0 -64
  549. package/deps/simdutf/singleheader/README-dev.md +0 -81
  550. package/deps/simdutf/singleheader/README.md +0 -19
  551. package/deps/simdutf/singleheader/amalgamate.py +0 -513
  552. package/deps/simdutf/singleheader/amalgamation_demo.c +0 -59
  553. package/deps/simdutf/singleheader/amalgamation_demo.cpp +0 -54
  554. package/deps/simdutf/singleheader/test-features.py +0 -262
  555. package/deps/simdutf/src/CMakeLists.txt +0 -78
  556. package/deps/simdutf/tests/CMakeLists.txt +0 -483
  557. package/deps/simdutf/tests/atomic_base64_tests.cpp +0 -2845
  558. package/deps/simdutf/tests/base64_tests.cpp +0 -3617
  559. package/deps/simdutf/tests/basic_fuzzer.cpp +0 -805
  560. package/deps/simdutf/tests/bele_tests.cpp +0 -182
  561. package/deps/simdutf/tests/constexpr_base64_tests.cpp +0 -387
  562. package/deps/simdutf/tests/convert_latin1_to_utf16be_tests.cpp +0 -52
  563. package/deps/simdutf/tests/convert_latin1_to_utf16le_tests.cpp +0 -80
  564. package/deps/simdutf/tests/convert_latin1_to_utf32_tests.cpp +0 -66
  565. package/deps/simdutf/tests/convert_latin1_to_utf8_tests.cpp +0 -120
  566. package/deps/simdutf/tests/convert_utf16_to_utf8_safe_tests.cpp +0 -203
  567. package/deps/simdutf/tests/convert_utf16_to_utf8_with_replacement_tests.cpp +0 -276
  568. package/deps/simdutf/tests/convert_utf16be_to_latin1_tests.cpp +0 -109
  569. package/deps/simdutf/tests/convert_utf16be_to_latin1_tests_with_errors.cpp +0 -136
  570. package/deps/simdutf/tests/convert_utf16be_to_utf32_tests.cpp +0 -193
  571. package/deps/simdutf/tests/convert_utf16be_to_utf32_with_errors_tests.cpp +0 -381
  572. package/deps/simdutf/tests/convert_utf16be_to_utf8_tests.cpp +0 -259
  573. package/deps/simdutf/tests/convert_utf16be_to_utf8_with_errors_tests.cpp +0 -266
  574. package/deps/simdutf/tests/convert_utf16le_to_latin1_tests.cpp +0 -148
  575. package/deps/simdutf/tests/convert_utf16le_to_latin1_tests_with_errors.cpp +0 -176
  576. package/deps/simdutf/tests/convert_utf16le_to_utf32_tests.cpp +0 -213
  577. package/deps/simdutf/tests/convert_utf16le_to_utf32_with_errors_tests.cpp +0 -318
  578. package/deps/simdutf/tests/convert_utf16le_to_utf8_tests.cpp +0 -343
  579. package/deps/simdutf/tests/convert_utf16le_to_utf8_with_errors_tests.cpp +0 -271
  580. package/deps/simdutf/tests/convert_utf32_to_latin1_tests.cpp +0 -111
  581. package/deps/simdutf/tests/convert_utf32_to_latin1_with_errors_tests.cpp +0 -96
  582. package/deps/simdutf/tests/convert_utf32_to_utf16be_tests.cpp +0 -148
  583. package/deps/simdutf/tests/convert_utf32_to_utf16be_with_errors_tests.cpp +0 -192
  584. package/deps/simdutf/tests/convert_utf32_to_utf16le_tests.cpp +0 -166
  585. package/deps/simdutf/tests/convert_utf32_to_utf16le_with_errors_tests.cpp +0 -215
  586. package/deps/simdutf/tests/convert_utf32_to_utf8_tests.cpp +0 -181
  587. package/deps/simdutf/tests/convert_utf32_to_utf8_with_errors_tests.cpp +0 -261
  588. package/deps/simdutf/tests/convert_utf8_to_latin1_tests.cpp +0 -516
  589. package/deps/simdutf/tests/convert_utf8_to_latin1_with_errors_tests.cpp +0 -579
  590. package/deps/simdutf/tests/convert_utf8_to_utf16be_tests.cpp +0 -412
  591. package/deps/simdutf/tests/convert_utf8_to_utf16be_with_errors_tests.cpp +0 -480
  592. package/deps/simdutf/tests/convert_utf8_to_utf16le_tests.cpp +0 -671
  593. package/deps/simdutf/tests/convert_utf8_to_utf16le_with_errors_tests.cpp +0 -455
  594. package/deps/simdutf/tests/convert_utf8_to_utf32_tests.cpp +0 -1204
  595. package/deps/simdutf/tests/convert_utf8_to_utf32_with_errors_tests.cpp +0 -337
  596. package/deps/simdutf/tests/convert_valid_utf16be_to_latin1_tests.cpp +0 -37
  597. package/deps/simdutf/tests/convert_valid_utf16be_to_utf32_tests.cpp +0 -97
  598. package/deps/simdutf/tests/convert_valid_utf16be_to_utf8_tests.cpp +0 -126
  599. package/deps/simdutf/tests/convert_valid_utf16le_to_latin1_tests.cpp +0 -71
  600. package/deps/simdutf/tests/convert_valid_utf16le_to_utf32_tests.cpp +0 -122
  601. package/deps/simdutf/tests/convert_valid_utf16le_to_utf8_tests.cpp +0 -244
  602. package/deps/simdutf/tests/convert_valid_utf32_to_latin1_tests.cpp +0 -49
  603. package/deps/simdutf/tests/convert_valid_utf32_to_utf16be_tests.cpp +0 -92
  604. package/deps/simdutf/tests/convert_valid_utf32_to_utf16le_tests.cpp +0 -114
  605. package/deps/simdutf/tests/convert_valid_utf32_to_utf8_tests.cpp +0 -109
  606. package/deps/simdutf/tests/convert_valid_utf8_to_latin1_tests.cpp +0 -84
  607. package/deps/simdutf/tests/convert_valid_utf8_to_utf16be_tests.cpp +0 -124
  608. package/deps/simdutf/tests/convert_valid_utf8_to_utf16le_tests.cpp +0 -221
  609. package/deps/simdutf/tests/convert_valid_utf8_to_utf32_tests.cpp +0 -155
  610. package/deps/simdutf/tests/count_utf16be.cpp +0 -64
  611. package/deps/simdutf/tests/count_utf16le.cpp +0 -61
  612. package/deps/simdutf/tests/count_utf8.cpp +0 -87
  613. package/deps/simdutf/tests/detect_encodings_tests.cpp +0 -312
  614. package/deps/simdutf/tests/embed/valid_utf8.txt +0 -1
  615. package/deps/simdutf/tests/embed_tests.cpp +0 -22
  616. package/deps/simdutf/tests/find_tests.cpp +0 -77
  617. package/deps/simdutf/tests/fixed_string_tests.cpp +0 -153
  618. package/deps/simdutf/tests/helpers/CMakeLists.txt +0 -25
  619. package/deps/simdutf/tests/helpers/compiletime_conversions.h +0 -222
  620. package/deps/simdutf/tests/helpers/fixed_string.h +0 -267
  621. package/deps/simdutf/tests/helpers/random_int.cpp +0 -30
  622. package/deps/simdutf/tests/helpers/random_int.h +0 -39
  623. package/deps/simdutf/tests/helpers/random_utf16.cpp +0 -123
  624. package/deps/simdutf/tests/helpers/random_utf16.h +0 -52
  625. package/deps/simdutf/tests/helpers/random_utf32.cpp +0 -41
  626. package/deps/simdutf/tests/helpers/random_utf32.h +0 -40
  627. package/deps/simdutf/tests/helpers/random_utf8.cpp +0 -93
  628. package/deps/simdutf/tests/helpers/random_utf8.h +0 -36
  629. package/deps/simdutf/tests/helpers/test.cpp +0 -231
  630. package/deps/simdutf/tests/helpers/test.h +0 -193
  631. package/deps/simdutf/tests/helpers/transcode_test_base.cpp +0 -1257
  632. package/deps/simdutf/tests/helpers/transcode_test_base.h +0 -683
  633. package/deps/simdutf/tests/helpers/utf16.h +0 -27
  634. package/deps/simdutf/tests/installation_tests/find/CMakeLists.txt +0 -43
  635. package/deps/simdutf/tests/installation_tests/from_fetch/CMakeLists.txt +0 -47
  636. package/deps/simdutf/tests/internal_tests.cpp +0 -27
  637. package/deps/simdutf/tests/null_safety_tests.cpp +0 -94
  638. package/deps/simdutf/tests/random_fuzzer.cpp +0 -779
  639. package/deps/simdutf/tests/readme_tests.cpp +0 -274
  640. package/deps/simdutf/tests/reference/CMakeLists.txt +0 -23
  641. package/deps/simdutf/tests/reference/decode_utf16.h +0 -81
  642. package/deps/simdutf/tests/reference/decode_utf32.h +0 -47
  643. package/deps/simdutf/tests/reference/encode_latin1.cpp +0 -1
  644. package/deps/simdutf/tests/reference/encode_latin1.h +0 -32
  645. package/deps/simdutf/tests/reference/encode_utf16.cpp +0 -49
  646. package/deps/simdutf/tests/reference/encode_utf16.h +0 -20
  647. package/deps/simdutf/tests/reference/encode_utf32.cpp +0 -1
  648. package/deps/simdutf/tests/reference/encode_utf32.h +0 -36
  649. package/deps/simdutf/tests/reference/encode_utf8.cpp +0 -1
  650. package/deps/simdutf/tests/reference/encode_utf8.h +0 -40
  651. package/deps/simdutf/tests/reference/validate_utf16.cpp +0 -60
  652. package/deps/simdutf/tests/reference/validate_utf16.h +0 -14
  653. package/deps/simdutf/tests/reference/validate_utf16_to_latin1.cpp +0 -35
  654. package/deps/simdutf/tests/reference/validate_utf16_to_latin1.h +0 -13
  655. package/deps/simdutf/tests/reference/validate_utf32.cpp +0 -27
  656. package/deps/simdutf/tests/reference/validate_utf32.h +0 -12
  657. package/deps/simdutf/tests/reference/validate_utf32_to_latin1.cpp +0 -27
  658. package/deps/simdutf/tests/reference/validate_utf32_to_latin1.h +0 -12
  659. package/deps/simdutf/tests/reference/validate_utf8.cpp +0 -82
  660. package/deps/simdutf/tests/reference/validate_utf8.h +0 -11
  661. package/deps/simdutf/tests/reference/validate_utf8_to_latin1.cpp +0 -43
  662. package/deps/simdutf/tests/reference/validate_utf8_to_latin1.h +0 -12
  663. package/deps/simdutf/tests/select_implementation.cpp +0 -43
  664. package/deps/simdutf/tests/simdutf_c_tests.cpp +0 -244
  665. package/deps/simdutf/tests/span_tests.cpp +0 -401
  666. package/deps/simdutf/tests/special_tests.cpp +0 -559
  667. package/deps/simdutf/tests/straight_c_test.c +0 -187
  668. package/deps/simdutf/tests/text_encoding_tests.cpp +0 -77
  669. package/deps/simdutf/tests/to_well_formed_utf16_tests.cpp +0 -377
  670. package/deps/simdutf/tests/utf8_length_from_utf16_tests.cpp +0 -202
  671. package/deps/simdutf/tests/validate_ascii_basic_tests.cpp +0 -165
  672. package/deps/simdutf/tests/validate_ascii_with_errors_tests.cpp +0 -77
  673. package/deps/simdutf/tests/validate_utf16be_basic_tests.cpp +0 -175
  674. package/deps/simdutf/tests/validate_utf16be_with_errors_tests.cpp +0 -188
  675. package/deps/simdutf/tests/validate_utf16le_basic_tests.cpp +0 -268
  676. package/deps/simdutf/tests/validate_utf16le_with_errors_tests.cpp +0 -274
  677. package/deps/simdutf/tests/validate_utf32_basic_tests.cpp +0 -92
  678. package/deps/simdutf/tests/validate_utf32_with_errors_tests.cpp +0 -114
  679. package/deps/simdutf/tests/validate_utf8_basic_tests.cpp +0 -178
  680. package/deps/simdutf/tests/validate_utf8_brute_force_tests.cpp +0 -88
  681. package/deps/simdutf/tests/validate_utf8_puzzler_tests.cpp +0 -33
  682. package/deps/simdutf/tests/validate_utf8_with_errors_tests.cpp +0 -228
  683. package/deps/simdutf/tools/CMakeLists.txt +0 -85
  684. package/deps/simdutf/tools/fastbase64.cpp +0 -250
  685. package/deps/simdutf/tools/sutf.cpp +0 -556
  686. package/deps/simdutf/tools/sutf.h +0 -40
  687. package/lib/tsconfig.tsbuildinfo +0 -1
package/src/dsa.ts CHANGED
@@ -25,6 +25,12 @@ export class Dsa {
25
25
  }
26
26
  }
27
27
 
28
+ // FIPS 186-4 §4.2: only L = 1024, 2048, 3072 are sanctioned. NIST has
29
+ // deprecated DSA-1024 for new applications, but we retain it for
30
+ // interop with legacy systems and match Node's permissive default. We
31
+ // reject anything below 1024 outright.
32
+ const DSA_MIN_MODULUS_LENGTH = 1024;
33
+
28
34
  function dsa_prepareKeyGenParams(
29
35
  options: GenerateKeyPairOptions | undefined,
30
36
  ): Dsa {
@@ -34,8 +40,11 @@ function dsa_prepareKeyGenParams(
34
40
 
35
41
  const { modulusLength, divisorLength } = options;
36
42
 
37
- if (!modulusLength || modulusLength <= 0) {
38
- throw new Error('Invalid or missing modulusLength for DSA key generation');
43
+ if (!modulusLength || modulusLength < DSA_MIN_MODULUS_LENGTH) {
44
+ throw new RangeError(
45
+ `DSA modulusLength must be at least ${DSA_MIN_MODULUS_LENGTH} bits ` +
46
+ `(got ${modulusLength ?? 0})`,
47
+ );
39
48
  }
40
49
 
41
50
  return new Dsa(modulusLength, divisorLength);
package/src/hash.ts CHANGED
@@ -183,18 +183,28 @@ class Hash extends Stream.Transform {
183
183
  return this.native.getOpenSSLVersion();
184
184
  }
185
185
 
186
- // stream interface
186
+ // Stream interface — surface synchronous errors via the callback so
187
+ // they emit as stream 'error' events instead of throwing out of the
188
+ // Transform plumbing (which would crash the host pipeline).
187
189
  _transform(
188
190
  chunk: BinaryLike,
189
191
  encoding: BufferEncoding,
190
- callback: () => void,
192
+ callback: (err?: Error | null) => void,
191
193
  ) {
192
- this.update(chunk, encoding as Encoding);
193
- callback();
194
+ try {
195
+ this.update(chunk, encoding as Encoding);
196
+ callback();
197
+ } catch (err) {
198
+ callback(err as Error);
199
+ }
194
200
  }
195
- _flush(callback: () => void) {
196
- this.push(this.digest());
197
- callback();
201
+ _flush(callback: (err?: Error | null) => void) {
202
+ try {
203
+ this.push(this.digest());
204
+ callback();
205
+ } catch (err) {
206
+ callback(err as Error);
207
+ }
198
208
  }
199
209
  }
200
210
 
package/src/hkdf.ts CHANGED
@@ -45,6 +45,46 @@ function sanitizeInput(input: BinaryLike, name: string): ArrayBuffer {
45
45
  }
46
46
  }
47
47
 
48
+ // Output byte-length of each fixed-length digest. HKDF requires a fixed-
49
+ // output hash (it builds on HMAC), so XOFs like SHAKE128/256 are not
50
+ // included even though `normalizeHashName` will accept them — passing
51
+ // SHAKE here is a caller bug we surface as `Unsupported HKDF digest`
52
+ // instead of letting the native side return an opaque error.
53
+ const HKDF_HASH_BYTES: Readonly<Record<string, number>> = {
54
+ sha1: 20,
55
+ sha224: 28,
56
+ sha256: 32,
57
+ sha384: 48,
58
+ sha512: 64,
59
+ 'sha3-256': 32,
60
+ 'sha3-384': 48,
61
+ 'sha3-512': 64,
62
+ ripemd160: 20,
63
+ };
64
+
65
+ function validateHkdfKeylen(digest: string, keylen: number): void {
66
+ if (
67
+ typeof keylen !== 'number' ||
68
+ !Number.isFinite(keylen) ||
69
+ !Number.isInteger(keylen) ||
70
+ keylen < 0 ||
71
+ keylen > 0x7fff_ffff
72
+ ) {
73
+ throw new TypeError('Bad key length');
74
+ }
75
+ const hashLen = HKDF_HASH_BYTES[digest.toLowerCase()];
76
+ if (hashLen === undefined) {
77
+ throw new TypeError(`Unsupported HKDF digest: ${digest}`);
78
+ }
79
+ // RFC 5869 §2.3: L ≤ 255 * HashLen.
80
+ if (keylen > 255 * hashLen) {
81
+ throw new RangeError(
82
+ `HKDF keylen ${keylen} exceeds RFC 5869 ceiling ` +
83
+ `255 * HashLen (${255 * hashLen}) for ${digest}`,
84
+ );
85
+ }
86
+ }
87
+
48
88
  export function hkdf(
49
89
  digest: string,
50
90
  key: KeyMaterial,
@@ -61,9 +101,7 @@ export function hkdf(
61
101
  const sanitizedSalt = sanitizeInput(salt, 'Salt');
62
102
  const sanitizedInfo = sanitizeInput(info, 'Info');
63
103
 
64
- if (keylen < 0) {
65
- throw new TypeError('Bad key length');
66
- }
104
+ validateHkdfKeylen(normalizedDigest, keylen);
67
105
 
68
106
  const nativeMod = getNative();
69
107
  nativeMod
@@ -99,9 +137,7 @@ export function hkdfSync(
99
137
  const sanitizedSalt = sanitizeInput(salt, 'Salt');
100
138
  const sanitizedInfo = sanitizeInput(info, 'Info');
101
139
 
102
- if (keylen < 0) {
103
- throw new TypeError('Bad key length');
104
- }
140
+ validateHkdfKeylen(normalizedDigest, keylen);
105
141
 
106
142
  const nativeMod = getNative();
107
143
  const result = nativeMod.deriveKeySync(
@@ -134,6 +170,8 @@ export function hkdfDeriveBits(
134
170
  const hashName = typeof hash === 'string' ? hash : hash.name;
135
171
  const normalizedDigest = normalizeHashName(hashName);
136
172
 
173
+ validateHkdfKeylen(normalizedDigest, keylen);
174
+
137
175
  const nativeMod = getNative();
138
176
  const result = nativeMod.deriveKeySync(
139
177
  normalizedDigest,
package/src/hmac.ts CHANGED
@@ -85,18 +85,28 @@ class Hmac extends Stream.Transform {
85
85
  return Buffer.from(nativeDigest);
86
86
  }
87
87
 
88
- // stream interface
88
+ // Stream interface — surface synchronous errors via the callback so
89
+ // they emit as stream 'error' events instead of throwing out of the
90
+ // Transform plumbing.
89
91
  _transform(
90
92
  chunk: BinaryLike,
91
93
  encoding: BufferEncoding,
92
- callback: () => void,
94
+ callback: (err?: Error | null) => void,
93
95
  ) {
94
- this.update(chunk, encoding as Encoding);
95
- callback();
96
+ try {
97
+ this.update(chunk, encoding as Encoding);
98
+ callback();
99
+ } catch (err) {
100
+ callback(err as Error);
101
+ }
96
102
  }
97
- _flush(callback: () => void) {
98
- this.push(this.digest());
99
- callback();
103
+ _flush(callback: (err?: Error | null) => void) {
104
+ try {
105
+ this.push(this.digest());
106
+ callback();
107
+ } catch (err) {
108
+ callback(err as Error);
109
+ }
100
110
  }
101
111
  }
102
112
 
@@ -144,8 +144,13 @@ export function publicDecrypt(
144
144
  paddingMode,
145
145
  );
146
146
  return Buffer.from(decrypted);
147
- } catch (error) {
148
- throw new Error(`publicDecrypt failed: ${(error as Error).message}`);
147
+ } catch {
148
+ // Bleichenbacher mitigation: surface a single, content-independent error
149
+ // for every decrypt failure so an attacker cannot use error-message
150
+ // differences as a padding oracle. The native side already collapses its
151
+ // OpenSSL error codes to the same opaque message; we drop it here too
152
+ // rather than re-leaking it via string interpolation.
153
+ throw new Error('publicDecrypt failed');
149
154
  }
150
155
  }
151
156
 
@@ -244,7 +249,8 @@ export function privateDecrypt(
244
249
  oaepLabel,
245
250
  );
246
251
  return Buffer.from(decrypted);
247
- } catch (error) {
248
- throw new Error(`privateDecrypt failed: ${(error as Error).message}`);
252
+ } catch {
253
+ // Bleichenbacher mitigation see publicDecrypt above.
254
+ throw new Error('privateDecrypt failed');
249
255
  }
250
256
  }
package/src/random.ts CHANGED
@@ -59,8 +59,17 @@ export function randomFill(buffer: ABV, ...rest: unknown[]): void {
59
59
  }
60
60
 
61
61
  getNative();
62
- random.randomFill(abvToArrayBuffer(buffer), viewOffset + offset, size).then(
62
+ const ab = abvToArrayBuffer(buffer);
63
+ const start = viewOffset + offset;
64
+ random.randomFill(ab, start, size).then(
63
65
  (res: ArrayBuffer) => {
66
+ // The native async path operates on a copy of the underlying buffer to
67
+ // avoid races with JS-owned memory on the worker thread, so the
68
+ // randomized bytes live in `res`, not in the caller's buffer. Copy them
69
+ // back to preserve Node's in-place randomFill semantics.
70
+ if (res !== ab) {
71
+ new Uint8Array(ab, start, size).set(new Uint8Array(res, start, size));
72
+ }
64
73
  callback(null, res);
65
74
  },
66
75
  (e: Error) => {
@@ -224,7 +233,7 @@ export function randomInt(
224
233
  if (x < randLimit) {
225
234
  const n = (x % range) + min;
226
235
  if (isSync) return n;
227
- process.nextTick(callback as RandomIntCallback, undefined, n);
236
+ process.nextTick(callback as RandomIntCallback, null, n);
228
237
  return;
229
238
  }
230
239
  }
package/src/rsa.ts CHANGED
@@ -60,6 +60,13 @@ export class Rsa {
60
60
  }
61
61
  }
62
62
 
63
+ // Modern best practice (NIST SP 800-131A Rev. 2, IETF RFC 8017): RSA keys
64
+ // shorter than 2048 bits are deprecated for both signing and encryption.
65
+ // 1024-bit moduli have been factored in academic settings; 768-bit keys
66
+ // have been factored on commodity hardware. Reject anything below 2048
67
+ // at the JS boundary so callers can't accidentally generate weak keys.
68
+ const RSA_MIN_MODULUS_LENGTH = 2048;
69
+
63
70
  // Node API
64
71
  export async function rsa_generateKeyPair(
65
72
  algorithm: SubtleAlgorithm,
@@ -70,8 +77,12 @@ export async function rsa_generateKeyPair(
70
77
  algorithm as RsaHashedKeyGenParams;
71
78
 
72
79
  // Validate parameters first
73
- if (!modulusLength || modulusLength < 256) {
74
- throw lazyDOMException('Invalid key length', 'OperationError');
80
+ if (!modulusLength || modulusLength < RSA_MIN_MODULUS_LENGTH) {
81
+ throw lazyDOMException(
82
+ `RSA modulusLength must be at least ${RSA_MIN_MODULUS_LENGTH} bits ` +
83
+ `(got ${modulusLength ?? 0})`,
84
+ 'OperationError',
85
+ );
75
86
  }
76
87
 
77
88
  if (!publicExponent || publicExponent.length === 0) {
@@ -198,8 +209,11 @@ function rsa_prepareKeyGenParams(
198
209
  hash?: string;
199
210
  };
200
211
 
201
- if (!modulusLength || modulusLength < 256) {
202
- throw new Error('Invalid modulus length');
212
+ if (!modulusLength || modulusLength < RSA_MIN_MODULUS_LENGTH) {
213
+ throw new RangeError(
214
+ `RSA modulusLength must be at least ${RSA_MIN_MODULUS_LENGTH} bits ` +
215
+ `(got ${modulusLength ?? 0})`,
216
+ );
203
217
  }
204
218
 
205
219
  const pubExp = publicExponent || 65537;
package/src/scrypt.ts CHANGED
@@ -35,12 +35,83 @@ const defaults = {
35
35
  maxmem: 32 * 1024 * 1024,
36
36
  };
37
37
 
38
+ // RFC 7914 § 2: scrypt parameters
39
+ // N — CPU/memory cost; must be a power of 2 > 1.
40
+ // r — block size; positive integer.
41
+ // p — parallelization factor; positive integer.
42
+ // r * p must be < 2^30 (otherwise the spec output is undefined).
43
+ // The work buffer is 128 * r * N bytes, which must fit in maxmem.
44
+ const SCRYPT_MAX_RP = 1 << 30; // 2^30 per RFC 7914
45
+
46
+ function isPositiveInteger(value: unknown): value is number {
47
+ return (
48
+ typeof value === 'number' &&
49
+ Number.isFinite(value) &&
50
+ Number.isInteger(value) &&
51
+ value > 0
52
+ );
53
+ }
54
+
55
+ function validateScryptParams(
56
+ N: number,
57
+ r: number,
58
+ p: number,
59
+ maxmem: number,
60
+ ): void {
61
+ if (!isPositiveInteger(N)) {
62
+ throw new RangeError(`Invalid scrypt cost (N): ${N}`);
63
+ }
64
+ // Power-of-two & > 1 check (RFC 7914 §6 step 1).
65
+ if (N <= 1 || (N & (N - 1)) !== 0) {
66
+ throw new RangeError(
67
+ `Invalid scrypt cost (N): ${N} — must be a power of 2 greater than 1`,
68
+ );
69
+ }
70
+ if (!isPositiveInteger(r)) {
71
+ throw new RangeError(`Invalid scrypt blockSize (r): ${r}`);
72
+ }
73
+ if (!isPositiveInteger(p)) {
74
+ throw new RangeError(`Invalid scrypt parallelization (p): ${p}`);
75
+ }
76
+ if (r * p >= SCRYPT_MAX_RP) {
77
+ throw new RangeError(
78
+ `Invalid scrypt parameters: r * p (${r * p}) must be < 2^30`,
79
+ );
80
+ }
81
+ if (!isPositiveInteger(maxmem)) {
82
+ throw new RangeError(`Invalid scrypt maxmem: ${maxmem}`);
83
+ }
84
+ // 128 * r * N is the minimum working memory. Reject early so we don't
85
+ // hand a doomed parameter set to native and OOM the device.
86
+ const required = 128 * r * N;
87
+ if (required > maxmem) {
88
+ throw new RangeError(
89
+ `Invalid scrypt parameters: working memory ${required} bytes ` +
90
+ `exceeds maxmem ${maxmem}`,
91
+ );
92
+ }
93
+ }
94
+
95
+ function validateScryptKeylen(keylen: number): void {
96
+ if (
97
+ typeof keylen !== 'number' ||
98
+ !Number.isFinite(keylen) ||
99
+ !Number.isInteger(keylen) ||
100
+ keylen < 0 ||
101
+ keylen > 0x7fff_ffff
102
+ ) {
103
+ throw new TypeError('Bad key length');
104
+ }
105
+ }
106
+
38
107
  function getScryptParams(options?: ScryptOptions) {
39
108
  const N = options?.N ?? options?.cost ?? defaults.N;
40
109
  const r = options?.r ?? options?.blockSize ?? defaults.r;
41
110
  const p = options?.p ?? options?.parallelization ?? defaults.p;
42
111
  const maxmem = options?.maxmem ?? defaults.maxmem;
43
112
 
113
+ validateScryptParams(N, r, p, maxmem);
114
+
44
115
  return { N, r, p, maxmem };
45
116
  }
46
117
 
@@ -85,9 +156,7 @@ export function scrypt(
85
156
  const sanitizedPassword = sanitizeInput(password, 'Password');
86
157
  const sanitizedSalt = sanitizeInput(salt, 'Salt');
87
158
 
88
- if (keylen < 0) {
89
- throw new TypeError('Bad key length');
90
- }
159
+ validateScryptKeylen(keylen);
91
160
 
92
161
  const nativeMod = getNative();
93
162
  nativeMod
@@ -115,9 +184,7 @@ export function scryptSync(
115
184
  const sanitizedPassword = sanitizeInput(password, 'Password');
116
185
  const sanitizedSalt = sanitizeInput(salt, 'Salt');
117
186
 
118
- if (keylen < 0) {
119
- throw new TypeError('Bad key length');
120
- }
187
+ validateScryptKeylen(keylen);
121
188
 
122
189
  const nativeMod = getNative();
123
190
  const result = nativeMod.deriveKeySync(
@@ -2,6 +2,4 @@ import { type HybridObject } from 'react-native-nitro-modules';
2
2
 
3
3
  export interface Utils extends HybridObject<{ ios: 'c++'; android: 'c++' }> {
4
4
  timingSafeEqual(a: ArrayBuffer, b: ArrayBuffer): boolean;
5
- bufferToString(buffer: ArrayBuffer, encoding: string): string;
6
- stringToBuffer(str: string, encoding: string): ArrayBuffer;
7
5
  }
package/src/subtle.ts CHANGED
@@ -83,16 +83,78 @@ function hasAnyNotIn(usages: KeyUsage[], allowed: KeyUsage[]): boolean {
83
83
  return usages.some(usage => !allowed.includes(usage));
84
84
  }
85
85
 
86
+ // WebCrypto §18.4.4: algorithm name lookup is case-insensitive, but the
87
+ // canonical mixed-case form is preserved in the resulting `name` field
88
+ // (e.g. "aes-gcm" → "AES-GCM"). This map is built lazily on first call so
89
+ // the registry of canonical names below can stay declared after the
90
+ // function. Without this, callers who pass lowercase strings bypass the
91
+ // downstream `SUPPORTED_ALGORITHMS` set comparisons silently.
92
+ //
93
+ // The map's value type is `AnyAlgorithm` so callers can use the lookup
94
+ // result directly without re-asserting. The `as AnyAlgorithm` at insertion
95
+ // is the single contract boundary: every name in `SUPPORTED_ALGORITHMS` is
96
+ // already a member of `AnyAlgorithm` by construction.
97
+ let _canonicalAlgorithmNames: Map<string, AnyAlgorithm> | null = null;
98
+ function getCanonicalAlgorithmNames(): Map<string, AnyAlgorithm> {
99
+ if (_canonicalAlgorithmNames === null) {
100
+ const map = new Map<string, AnyAlgorithm>();
101
+ for (const set of Object.values(SUPPORTED_ALGORITHMS)) {
102
+ if (!set) continue;
103
+ for (const name of set) {
104
+ map.set(name.toLowerCase(), name as AnyAlgorithm);
105
+ }
106
+ }
107
+ _canonicalAlgorithmNames = map;
108
+ }
109
+ return _canonicalAlgorithmNames;
110
+ }
111
+
86
112
  function normalizeAlgorithm(
87
113
  algorithm: SubtleAlgorithm | AnyAlgorithm,
88
114
  _operation: Operation,
89
115
  ): SubtleAlgorithm {
116
+ const map = getCanonicalAlgorithmNames();
90
117
  if (typeof algorithm === 'string') {
91
- return { name: algorithm };
118
+ return { name: map.get(algorithm.toLowerCase()) ?? algorithm };
119
+ }
120
+ if (typeof algorithm.name === 'string') {
121
+ const canonical = map.get(algorithm.name.toLowerCase()) ?? algorithm.name;
122
+ return { ...algorithm, name: canonical };
92
123
  }
93
124
  return algorithm as SubtleAlgorithm;
94
125
  }
95
126
 
127
+ // WebCrypto §25.7.6 (JWK import): if the JWK's `ext` member is present and
128
+ // false, the requested `extractable` parameter must also be false. If the
129
+ // JWK's `key_ops` member is present, every requested usage must appear in
130
+ // it. We centralize the check here so every importKey path that accepts
131
+ // `format === 'jwk'` can reuse it.
132
+ function validateJwkExtAndKeyOps(
133
+ jwk: JWK,
134
+ extractable: boolean,
135
+ keyUsages: KeyUsage[],
136
+ ): void {
137
+ if (jwk.ext === false && extractable) {
138
+ throw lazyDOMException(
139
+ 'JWK "ext" is false but extractable was requested',
140
+ 'DataError',
141
+ );
142
+ }
143
+ if (jwk.key_ops !== undefined) {
144
+ if (!Array.isArray(jwk.key_ops)) {
145
+ throw lazyDOMException('JWK "key_ops" must be an array', 'DataError');
146
+ }
147
+ for (const usage of keyUsages) {
148
+ if (!jwk.key_ops.includes(usage)) {
149
+ throw lazyDOMException(
150
+ `JWK "key_ops" does not include requested usage "${usage}"`,
151
+ 'DataError',
152
+ );
153
+ }
154
+ }
155
+ }
156
+ }
157
+
96
158
  function getAlgorithmName(name: string, length: number): string {
97
159
  switch (name) {
98
160
  case 'AES-CBC':
@@ -816,6 +878,8 @@ async function kmacImportKey(
816
878
  throw lazyDOMException('Invalid keyData', 'DataError');
817
879
  }
818
880
 
881
+ validateJwkExtAndKeyOps(jwk, extractable, keyUsages);
882
+
819
883
  if (jwk.kty !== 'oct') {
820
884
  throw lazyDOMException('Invalid JWK format for KMAC key', 'DataError');
821
885
  }
@@ -902,6 +966,8 @@ function rsaImportKey(
902
966
  throw new Error('Invalid JWK format for RSA key');
903
967
  }
904
968
 
969
+ validateJwkExtAndKeyOps(jwk, extractable, keyUsages);
970
+
905
971
  const handle =
906
972
  NitroModules.createHybridObject<KeyObjectHandle>('KeyObjectHandle');
907
973
  const keyType = handle.initJwk(jwk, undefined);
@@ -992,6 +1058,8 @@ async function hmacImportKey(
992
1058
  throw new Error('Invalid keyData');
993
1059
  }
994
1060
 
1061
+ validateJwkExtAndKeyOps(jwk, extractable, keyUsages);
1062
+
995
1063
  if (jwk.kty !== 'oct') {
996
1064
  throw new Error('Invalid JWK format for HMAC key');
997
1065
  }
@@ -1069,6 +1137,8 @@ async function aesImportKey(
1069
1137
  throw new Error('Invalid JWK format for AES key');
1070
1138
  }
1071
1139
 
1140
+ validateJwkExtAndKeyOps(jwk, extractable, keyUsages);
1141
+
1072
1142
  const handle =
1073
1143
  NitroModules.createHybridObject<KeyObjectHandle>('KeyObjectHandle');
1074
1144
  const keyType = handle.initJwk(jwk, undefined);
@@ -1164,6 +1234,7 @@ function edImportKey(
1164
1234
  keyObject = new PublicKeyObject(handle);
1165
1235
  } else if (format === 'jwk') {
1166
1236
  const jwkData = data as JWK;
1237
+ validateJwkExtAndKeyOps(jwkData, extractable, keyUsages);
1167
1238
  const handle =
1168
1239
  NitroModules.createHybridObject<KeyObjectHandle>('KeyObjectHandle');
1169
1240
  const keyType = handle.initJwk(jwkData);
@@ -1588,6 +1659,13 @@ const hkdfImportKey = async (
1588
1659
  keyUsages: KeyUsage[],
1589
1660
  ): Promise<CryptoKey> => {
1590
1661
  const { name } = algorithm;
1662
+ // WebCrypto §28.7.6: HKDF keys are never extractable. The previous
1663
+ // implementation passed `extractable` through verbatim, allowing callers
1664
+ // to round-trip the input keying material via `exportKey` — defeating
1665
+ // the whole point of the deriveBits-only usage.
1666
+ if (extractable) {
1667
+ throw lazyDOMException(`${name} keys are not extractable`, 'SyntaxError');
1668
+ }
1591
1669
  if (hasAnyNotIn(keyUsages, ['deriveKey', 'deriveBits'])) {
1592
1670
  throw new Error(`Unsupported key usage for a ${name} key`);
1593
1671
  }
@@ -1595,7 +1673,7 @@ const hkdfImportKey = async (
1595
1673
  switch (format) {
1596
1674
  case 'raw': {
1597
1675
  const keyObject = createSecretKey(keyData as BinaryLike);
1598
- return new CryptoKey(keyObject, { name }, keyUsages, extractable);
1676
+ return new CryptoKey(keyObject, { name }, keyUsages, false);
1599
1677
  }
1600
1678
  default:
1601
1679
  throw new Error(`Unable to import ${name} key with format ${format}`);
@@ -2161,12 +2239,16 @@ export class Subtle {
2161
2239
  baseKey: CryptoKey,
2162
2240
  length: number,
2163
2241
  ): Promise<ArrayBuffer> {
2164
- // Allow either deriveBits OR deriveKey usage (WebCrypto spec allows both)
2165
- if (
2166
- !baseKey.keyUsages.includes('deriveBits') &&
2167
- !baseKey.keyUsages.includes('deriveKey')
2168
- ) {
2169
- throw new Error('baseKey does not have deriveBits or deriveKey usage');
2242
+ // WebCrypto §SubtleCrypto.deriveBits step 11: throw InvalidAccessError
2243
+ // unless `baseKey.[[usages]]` contains "deriveBits" specifically. The
2244
+ // previous `deriveBits || deriveKey` accept-either branch silently
2245
+ // promoted deriveKey-only keys into deriveBits use, contradicting the
2246
+ // spec usage gate.
2247
+ if (!baseKey.keyUsages.includes('deriveBits')) {
2248
+ throw lazyDOMException(
2249
+ 'baseKey does not have deriveBits usage',
2250
+ 'InvalidAccessError',
2251
+ );
2170
2252
  }
2171
2253
  if (baseKey.algorithm.name !== algorithm.name)
2172
2254
  throw new Error('Key algorithm mismatch');
@@ -48,13 +48,35 @@ export function validateEncoding(data: string, encoding: string) {
48
48
  }
49
49
  }
50
50
 
51
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
52
- export function getUIntOption(options: Record<string, any>, key: string) {
53
- let value;
54
- if (options && (value = options[key]) != null) {
55
- // >>> Turns any type into a positive integer (also sets the sign bit to 0)
56
- if (value >>> 0 !== value) throw new Error(`options.${key}: ${value}`);
57
- return value;
51
+ /**
52
+ * Reads an unsigned-integer option from an options-like object.
53
+ *
54
+ * Returns `undefined` if the option is missing, `null`, or `undefined`.
55
+ * Throws `RangeError` if the value is present but not a non-negative
56
+ * 32-bit integer (NaN, Infinity, fractional, negative, or > 2^32 - 1).
57
+ *
58
+ * Replaces the previous `Record<string, any>` + sentinel-`-1` signature,
59
+ * which defeated the type checker (audit Phase 1.4). Callers that used
60
+ * `getUIntOption(opts ?? {}, key) !== -1 ? getUIntOption(...) : default`
61
+ * collapse to `getUIntOption(opts, key) ?? default`.
62
+ */
63
+ export function getUIntOption(
64
+ options: Readonly<Record<string, unknown>> | undefined,
65
+ key: string,
66
+ ): number | undefined {
67
+ if (options == null) return undefined;
68
+ const value = options[key];
69
+ if (value == null) return undefined;
70
+ if (
71
+ typeof value !== 'number' ||
72
+ !Number.isFinite(value) ||
73
+ !Number.isInteger(value) ||
74
+ value < 0 ||
75
+ value > 0xffff_ffff
76
+ ) {
77
+ throw new RangeError(
78
+ `options.${key} must be a non-negative 32-bit integer, got ${String(value)}`,
79
+ );
58
80
  }
59
- return -1;
81
+ return value;
60
82
  }