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.
- package/android/build.gradle +5 -1
- package/cpp/argon2/HybridArgon2.cpp +10 -3
- package/cpp/blake3/HybridBlake3.cpp +5 -3
- package/cpp/cipher/CCMCipher.cpp +29 -16
- package/cpp/cipher/CCMCipher.hpp +2 -4
- package/cpp/cipher/ChaCha20Cipher.cpp +14 -18
- package/cpp/cipher/ChaCha20Cipher.hpp +2 -4
- package/cpp/cipher/ChaCha20Poly1305Cipher.cpp +34 -23
- package/cpp/cipher/ChaCha20Poly1305Cipher.hpp +2 -4
- package/cpp/cipher/GCMCipher.cpp +14 -15
- package/cpp/cipher/HybridCipher.cpp +39 -36
- package/cpp/cipher/HybridCipher.hpp +17 -1
- package/cpp/cipher/HybridRsaCipher.cpp +74 -29
- package/cpp/cipher/OCBCipher.cpp +4 -3
- package/cpp/cipher/XChaCha20Poly1305Cipher.cpp +14 -13
- package/cpp/cipher/XSalsa20Cipher.cpp +72 -6
- package/cpp/cipher/XSalsa20Cipher.hpp +25 -3
- package/cpp/cipher/XSalsa20Poly1305Cipher.cpp +21 -25
- package/cpp/dh/HybridDiffieHellman.cpp +29 -0
- package/cpp/ec/HybridEcKeyPair.cpp +35 -33
- package/cpp/ec/HybridEcKeyPair.hpp +3 -7
- package/cpp/ecdh/HybridECDH.cpp +23 -0
- package/cpp/ed25519/HybridEdKeyPair.cpp +73 -117
- package/cpp/ed25519/HybridEdKeyPair.hpp +5 -9
- package/cpp/hash/HybridHash.cpp +5 -7
- package/cpp/hkdf/HybridHkdf.cpp +6 -4
- package/cpp/hmac/HybridHmac.cpp +4 -6
- package/cpp/kmac/HybridKmac.cpp +4 -4
- package/cpp/mldsa/HybridMlDsaKeyPair.cpp +37 -49
- package/cpp/mlkem/HybridMlKemKeyPair.cpp +39 -43
- package/cpp/pbkdf2/HybridPbkdf2.cpp +7 -8
- package/cpp/rsa/HybridRsaKeyPair.cpp +5 -8
- package/cpp/rsa/HybridRsaKeyPair.hpp +4 -7
- package/cpp/scrypt/HybridScrypt.cpp +6 -4
- package/cpp/sign/HybridSignHandle.cpp +25 -68
- package/cpp/sign/HybridVerifyHandle.cpp +23 -60
- package/cpp/utils/HybridUtils.cpp +183 -43
- package/cpp/utils/HybridUtils.hpp +9 -2
- package/cpp/utils/QuickCryptoUtils.hpp +72 -0
- package/lib/commonjs/argon2.js +51 -2
- package/lib/commonjs/argon2.js.map +1 -1
- package/lib/commonjs/cipher.js +109 -11
- package/lib/commonjs/cipher.js.map +1 -1
- package/lib/commonjs/dsa.js +8 -2
- package/lib/commonjs/dsa.js.map +1 -1
- package/lib/commonjs/hash.js +15 -5
- package/lib/commonjs/hash.js.map +1 -1
- package/lib/commonjs/hkdf.js +33 -6
- package/lib/commonjs/hkdf.js.map +1 -1
- package/lib/commonjs/hmac.js +15 -5
- package/lib/commonjs/hmac.js.map +1 -1
- package/lib/commonjs/keys/publicCipher.js +10 -4
- package/lib/commonjs/keys/publicCipher.js.map +1 -1
- package/lib/commonjs/random.js +11 -2
- package/lib/commonjs/random.js.map +1 -1
- package/lib/commonjs/rsa.js +12 -5
- package/lib/commonjs/rsa.js.map +1 -1
- package/lib/commonjs/scrypt.js +47 -6
- package/lib/commonjs/scrypt.js.map +1 -1
- package/lib/commonjs/subtle.js +76 -5
- package/lib/commonjs/subtle.js.map +1 -1
- package/lib/commonjs/utils/cipher.js +18 -7
- package/lib/commonjs/utils/cipher.js.map +1 -1
- package/lib/commonjs/utils/conversion.js +33 -9
- package/lib/commonjs/utils/conversion.js.map +1 -1
- package/lib/commonjs/utils/timingSafeEqual.js +7 -2
- package/lib/commonjs/utils/timingSafeEqual.js.map +1 -1
- package/lib/commonjs/x509certificate.js +6 -6
- package/lib/commonjs/x509certificate.js.map +1 -1
- package/lib/module/argon2.js +51 -2
- package/lib/module/argon2.js.map +1 -1
- package/lib/module/cipher.js +109 -11
- package/lib/module/cipher.js.map +1 -1
- package/lib/module/dsa.js +8 -2
- package/lib/module/dsa.js.map +1 -1
- package/lib/module/hash.js +15 -5
- package/lib/module/hash.js.map +1 -1
- package/lib/module/hkdf.js +33 -6
- package/lib/module/hkdf.js.map +1 -1
- package/lib/module/hmac.js +15 -5
- package/lib/module/hmac.js.map +1 -1
- package/lib/module/keys/publicCipher.js +10 -4
- package/lib/module/keys/publicCipher.js.map +1 -1
- package/lib/module/random.js +11 -2
- package/lib/module/random.js.map +1 -1
- package/lib/module/rsa.js +11 -4
- package/lib/module/rsa.js.map +1 -1
- package/lib/module/scrypt.js +47 -6
- package/lib/module/scrypt.js.map +1 -1
- package/lib/module/subtle.js +76 -5
- package/lib/module/subtle.js.map +1 -1
- package/lib/module/utils/cipher.js +18 -7
- package/lib/module/utils/cipher.js.map +1 -1
- package/lib/module/utils/conversion.js +33 -9
- package/lib/module/utils/conversion.js.map +1 -1
- package/lib/module/utils/timingSafeEqual.js +8 -3
- package/lib/module/utils/timingSafeEqual.js.map +1 -1
- package/lib/module/x509certificate.js +6 -6
- package/lib/module/x509certificate.js.map +1 -1
- package/lib/typescript/argon2.d.ts.map +1 -1
- package/lib/typescript/cipher.d.ts +2 -2
- package/lib/typescript/cipher.d.ts.map +1 -1
- package/lib/typescript/dsa.d.ts.map +1 -1
- package/lib/typescript/hash.d.ts +2 -2
- package/lib/typescript/hash.d.ts.map +1 -1
- package/lib/typescript/hkdf.d.ts.map +1 -1
- package/lib/typescript/hmac.d.ts +2 -2
- package/lib/typescript/hmac.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +1 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/keys/publicCipher.d.ts.map +1 -1
- package/lib/typescript/random.d.ts.map +1 -1
- package/lib/typescript/rsa.d.ts.map +1 -1
- package/lib/typescript/scrypt.d.ts.map +1 -1
- package/lib/typescript/specs/utils.nitro.d.ts +0 -2
- package/lib/typescript/specs/utils.nitro.d.ts.map +1 -1
- package/lib/typescript/subtle.d.ts.map +1 -1
- package/lib/typescript/utils/cipher.d.ts +13 -1
- package/lib/typescript/utils/cipher.d.ts.map +1 -1
- package/lib/typescript/utils/conversion.d.ts +9 -6
- package/lib/typescript/utils/conversion.d.ts.map +1 -1
- package/lib/typescript/utils/timingSafeEqual.d.ts.map +1 -1
- package/lib/typescript/x509certificate.d.ts.map +1 -1
- package/nitrogen/generated/shared/c++/HybridUtilsSpec.cpp +0 -2
- package/nitrogen/generated/shared/c++/HybridUtilsSpec.hpp +0 -3
- package/package.json +37 -5
- package/src/argon2.ts +80 -2
- package/src/cipher.ts +139 -15
- package/src/dsa.ts +11 -2
- package/src/hash.ts +17 -7
- package/src/hkdf.ts +44 -6
- package/src/hmac.ts +17 -7
- package/src/keys/publicCipher.ts +10 -4
- package/src/random.ts +11 -2
- package/src/rsa.ts +18 -4
- package/src/scrypt.ts +73 -6
- package/src/specs/utils.nitro.ts +0 -2
- package/src/subtle.ts +90 -8
- package/src/utils/cipher.ts +30 -8
- package/src/utils/conversion.ts +58 -20
- package/src/utils/timingSafeEqual.ts +8 -3
- package/src/x509certificate.ts +5 -6
- package/deps/blake3/.cargo/config.toml +0 -2
- package/deps/blake3/.git-blame-ignore-revs +0 -2
- package/deps/blake3/.github/workflows/build_b3sum.py +0 -38
- package/deps/blake3/.github/workflows/ci.yml +0 -491
- package/deps/blake3/.github/workflows/tag.yml +0 -43
- package/deps/blake3/.github/workflows/upload_github_release_asset.py +0 -73
- package/deps/blake3/CONTRIBUTING.md +0 -31
- package/deps/blake3/Cargo.toml +0 -135
- package/deps/blake3/b3sum/Cargo.lock +0 -513
- package/deps/blake3/b3sum/Cargo.toml +0 -26
- package/deps/blake3/b3sum/README.md +0 -72
- package/deps/blake3/b3sum/src/main.rs +0 -564
- package/deps/blake3/b3sum/src/unit_tests.rs +0 -235
- package/deps/blake3/b3sum/tests/cli_tests.rs +0 -680
- package/deps/blake3/b3sum/what_does_check_do.md +0 -176
- package/deps/blake3/benches/bench.rs +0 -623
- package/deps/blake3/build.rs +0 -389
- package/deps/blake3/c/CMakeLists.txt +0 -383
- package/deps/blake3/c/CMakePresets.json +0 -73
- package/deps/blake3/c/Makefile.testing +0 -82
- package/deps/blake3/c/blake3-config.cmake.in +0 -14
- package/deps/blake3/c/blake3_avx2.c +0 -326
- package/deps/blake3/c/blake3_avx2_x86-64_unix.S +0 -1815
- package/deps/blake3/c/blake3_avx2_x86-64_windows_gnu.S +0 -1817
- package/deps/blake3/c/blake3_avx2_x86-64_windows_msvc.asm +0 -1828
- package/deps/blake3/c/blake3_avx512.c +0 -1388
- package/deps/blake3/c/blake3_avx512_x86-64_unix.S +0 -4824
- package/deps/blake3/c/blake3_avx512_x86-64_windows_gnu.S +0 -2615
- package/deps/blake3/c/blake3_avx512_x86-64_windows_msvc.asm +0 -2634
- package/deps/blake3/c/blake3_c_rust_bindings/Cargo.toml +0 -32
- package/deps/blake3/c/blake3_c_rust_bindings/README.md +0 -4
- package/deps/blake3/c/blake3_c_rust_bindings/benches/bench.rs +0 -477
- package/deps/blake3/c/blake3_c_rust_bindings/build.rs +0 -253
- package/deps/blake3/c/blake3_c_rust_bindings/cross_test.sh +0 -31
- package/deps/blake3/c/blake3_c_rust_bindings/src/lib.rs +0 -333
- package/deps/blake3/c/blake3_c_rust_bindings/src/test.rs +0 -696
- package/deps/blake3/c/blake3_sse2.c +0 -566
- package/deps/blake3/c/blake3_sse2_x86-64_unix.S +0 -2291
- package/deps/blake3/c/blake3_sse2_x86-64_windows_gnu.S +0 -2332
- package/deps/blake3/c/blake3_sse2_x86-64_windows_msvc.asm +0 -2350
- package/deps/blake3/c/blake3_sse41.c +0 -560
- package/deps/blake3/c/blake3_sse41_x86-64_unix.S +0 -2028
- package/deps/blake3/c/blake3_sse41_x86-64_windows_gnu.S +0 -2069
- package/deps/blake3/c/blake3_sse41_x86-64_windows_msvc.asm +0 -2089
- package/deps/blake3/c/blake3_tbb.cpp +0 -37
- package/deps/blake3/c/dependencies/CMakeLists.txt +0 -3
- package/deps/blake3/c/dependencies/tbb/CMakeLists.txt +0 -28
- package/deps/blake3/c/example.c +0 -36
- package/deps/blake3/c/example_tbb.c +0 -57
- package/deps/blake3/c/libblake3.pc.in +0 -12
- package/deps/blake3/c/main.c +0 -166
- package/deps/blake3/c/test.py +0 -97
- package/deps/blake3/media/B3.svg +0 -70
- package/deps/blake3/media/BLAKE3.svg +0 -85
- package/deps/blake3/media/speed.svg +0 -1474
- package/deps/blake3/reference_impl/Cargo.toml +0 -8
- package/deps/blake3/reference_impl/README.md +0 -14
- package/deps/blake3/reference_impl/reference_impl.rs +0 -374
- package/deps/blake3/src/ffi_avx2.rs +0 -65
- package/deps/blake3/src/ffi_avx512.rs +0 -169
- package/deps/blake3/src/ffi_neon.rs +0 -82
- package/deps/blake3/src/ffi_sse2.rs +0 -126
- package/deps/blake3/src/ffi_sse41.rs +0 -126
- package/deps/blake3/src/guts.rs +0 -60
- package/deps/blake3/src/hazmat.rs +0 -704
- package/deps/blake3/src/io.rs +0 -64
- package/deps/blake3/src/join.rs +0 -92
- package/deps/blake3/src/lib.rs +0 -1835
- package/deps/blake3/src/platform.rs +0 -587
- package/deps/blake3/src/portable.rs +0 -198
- package/deps/blake3/src/rust_avx2.rs +0 -474
- package/deps/blake3/src/rust_sse2.rs +0 -775
- package/deps/blake3/src/rust_sse41.rs +0 -766
- package/deps/blake3/src/test.rs +0 -1049
- package/deps/blake3/src/traits.rs +0 -227
- package/deps/blake3/src/wasm32_simd.rs +0 -794
- package/deps/blake3/test_vectors/Cargo.toml +0 -19
- package/deps/blake3/test_vectors/cross_test.sh +0 -25
- package/deps/blake3/test_vectors/src/bin/generate.rs +0 -4
- package/deps/blake3/test_vectors/src/lib.rs +0 -350
- package/deps/blake3/test_vectors/test_vectors.json +0 -217
- package/deps/blake3/tools/compiler_version/Cargo.toml +0 -7
- package/deps/blake3/tools/compiler_version/build.rs +0 -6
- package/deps/blake3/tools/compiler_version/src/main.rs +0 -27
- package/deps/blake3/tools/instruction_set_support/Cargo.toml +0 -6
- package/deps/blake3/tools/instruction_set_support/src/main.rs +0 -10
- package/deps/blake3/tools/release.md +0 -16
- package/deps/ncrypto/.bazelignore +0 -4
- package/deps/ncrypto/.bazelrc +0 -1
- package/deps/ncrypto/.bazelversion +0 -1
- package/deps/ncrypto/.clang-format +0 -111
- package/deps/ncrypto/.github/workflows/bazel.yml +0 -58
- package/deps/ncrypto/.github/workflows/commitlint.yml +0 -16
- package/deps/ncrypto/.github/workflows/linter.yml +0 -38
- package/deps/ncrypto/.github/workflows/macos.yml +0 -43
- package/deps/ncrypto/.github/workflows/release-please.yml +0 -16
- package/deps/ncrypto/.github/workflows/ubuntu.yml +0 -128
- package/deps/ncrypto/.github/workflows/visual-studio.yml +0 -49
- package/deps/ncrypto/.python-version +0 -1
- package/deps/ncrypto/.release-please-manifest.json +0 -3
- package/deps/ncrypto/BUILD.bazel +0 -44
- package/deps/ncrypto/CHANGELOG.md +0 -37
- package/deps/ncrypto/CMakeLists.txt +0 -79
- package/deps/ncrypto/MODULE.bazel +0 -16
- package/deps/ncrypto/MODULE.bazel.lock +0 -461
- package/deps/ncrypto/cmake/CPM.cmake +0 -1225
- package/deps/ncrypto/cmake/ncrypto-flags.cmake +0 -17
- package/deps/ncrypto/ncrypto.pc.in +0 -10
- package/deps/ncrypto/patches/0001-Expose-libdecrepit-so-NodeJS-can-use-it-for-ncrypto.patch +0 -28
- package/deps/ncrypto/pyproject.toml +0 -38
- package/deps/ncrypto/release-please-config.json +0 -11
- package/deps/ncrypto/src/CMakeLists.txt +0 -40
- package/deps/ncrypto/tests/BUILD.bazel +0 -11
- package/deps/ncrypto/tests/CMakeLists.txt +0 -7
- package/deps/ncrypto/tests/basic.cpp +0 -856
- package/deps/ncrypto/tools/run-clang-format.sh +0 -42
- package/deps/simdutf/.clang-format +0 -4
- package/deps/simdutf/.github/ISSUE_TEMPLATE/bug_report.md +0 -62
- package/deps/simdutf/.github/ISSUE_TEMPLATE/config.yml +0 -1
- package/deps/simdutf/.github/ISSUE_TEMPLATE/feature_request.md +0 -35
- package/deps/simdutf/.github/ISSUE_TEMPLATE/standard-issue-template.md +0 -29
- package/deps/simdutf/.github/pull_request_template.md +0 -51
- package/deps/simdutf/.github/workflows/aarch64.yml +0 -39
- package/deps/simdutf/.github/workflows/alpine.yml +0 -27
- package/deps/simdutf/.github/workflows/amalgamation_demos.yml +0 -34
- package/deps/simdutf/.github/workflows/armv7.yml +0 -32
- package/deps/simdutf/.github/workflows/atomic_fuzz.yml +0 -25
- package/deps/simdutf/.github/workflows/cifuzz.yml +0 -37
- package/deps/simdutf/.github/workflows/clangformat.yml +0 -36
- package/deps/simdutf/.github/workflows/debian-latestcxxstandards.yml +0 -40
- package/deps/simdutf/.github/workflows/debian.yml +0 -33
- package/deps/simdutf/.github/workflows/documentation.yml +0 -36
- package/deps/simdutf/.github/workflows/emscripten.yml +0 -19
- package/deps/simdutf/.github/workflows/loongarch64-gcc-14.2.yml +0 -39
- package/deps/simdutf/.github/workflows/macos-latest.yml +0 -29
- package/deps/simdutf/.github/workflows/msys2-clang.yml +0 -48
- package/deps/simdutf/.github/workflows/msys2.yml +0 -50
- package/deps/simdutf/.github/workflows/ppc64le.yml +0 -29
- package/deps/simdutf/.github/workflows/rvv-1024-clang-18.yml +0 -35
- package/deps/simdutf/.github/workflows/rvv-128-clang-17.yml +0 -35
- package/deps/simdutf/.github/workflows/rvv-256-gcc-14.yml +0 -31
- package/deps/simdutf/.github/workflows/s390x.yml +0 -29
- package/deps/simdutf/.github/workflows/selective-amalgamation.yml +0 -29
- package/deps/simdutf/.github/workflows/typos.yml +0 -19
- package/deps/simdutf/.github/workflows/ubuntu22-cxx20.yml +0 -30
- package/deps/simdutf/.github/workflows/ubuntu22.yml +0 -32
- package/deps/simdutf/.github/workflows/ubuntu22_gcc12.yml +0 -27
- package/deps/simdutf/.github/workflows/ubuntu22sani.yml +0 -29
- package/deps/simdutf/.github/workflows/ubuntu24-cxxstandards.yml +0 -34
- package/deps/simdutf/.github/workflows/ubuntu24-unsignedchar.yml +0 -34
- package/deps/simdutf/.github/workflows/ubuntu24.yml +0 -32
- package/deps/simdutf/.github/workflows/ubuntu24sani.yml +0 -36
- package/deps/simdutf/.github/workflows/ubuntu24sani_clang.yml +0 -29
- package/deps/simdutf/.github/workflows/vs17-arm-ci.yml +0 -21
- package/deps/simdutf/.github/workflows/vs17-ci-cxx20.yml +0 -41
- package/deps/simdutf/.github/workflows/vs17-ci.yml +0 -41
- package/deps/simdutf/.github/workflows/vs17-clang-ci.yml +0 -41
- package/deps/simdutf/.github/workflows/vs17-cxxstandards.yml +0 -36
- package/deps/simdutf/AI_USAGE_POLICY.md +0 -56
- package/deps/simdutf/AUTHORS +0 -6
- package/deps/simdutf/CMakeLists.txt +0 -231
- package/deps/simdutf/CONTRIBUTING.md +0 -214
- package/deps/simdutf/CONTRIBUTORS +0 -1
- package/deps/simdutf/Doxyfile +0 -2584
- package/deps/simdutf/Makefile.crosscompile +0 -54
- package/deps/simdutf/README-RVV.md +0 -16
- package/deps/simdutf/SECURITY.md +0 -8
- package/deps/simdutf/benchmarks/CMakeLists.txt +0 -101
- package/deps/simdutf/benchmarks/alignment.cpp +0 -150
- package/deps/simdutf/benchmarks/base64/CMakeLists.txt +0 -30
- package/deps/simdutf/benchmarks/base64/benchmark_base64.cpp +0 -875
- package/deps/simdutf/benchmarks/base64/libbase64_spaces.h +0 -49
- package/deps/simdutf/benchmarks/base64/node_base64.h +0 -227
- package/deps/simdutf/benchmarks/base64/openssl3_base64.h +0 -334
- package/deps/simdutf/benchmarks/benchmark.cpp +0 -65
- package/deps/simdutf/benchmarks/benchmark_to_well_formed_utf16.cpp +0 -347
- package/deps/simdutf/benchmarks/competition/.clang-format-ignore +0 -5
- package/deps/simdutf/benchmarks/competition/CppCon2018/utf_utils.cpp +0 -1276
- package/deps/simdutf/benchmarks/competition/CppCon2018/utf_utils.h +0 -595
- package/deps/simdutf/benchmarks/competition/README.md +0 -7
- package/deps/simdutf/benchmarks/competition/hoehrmann/hoehrmann.h +0 -91
- package/deps/simdutf/benchmarks/competition/inoue2008/inoue_utf8_to_utf16.h +0 -444
- package/deps/simdutf/benchmarks/competition/inoue2008/inoue_utf8_to_utf16_tables.h +0 -13183
- package/deps/simdutf/benchmarks/competition/inoue2008/script.py +0 -73
- package/deps/simdutf/benchmarks/competition/llvm/ConvertUTF.cpp +0 -738
- package/deps/simdutf/benchmarks/competition/llvm/ConvertUTF.h +0 -293
- package/deps/simdutf/benchmarks/competition/u8u16/COPYRIGHT +0 -8
- package/deps/simdutf/benchmarks/competition/u8u16/Makefile +0 -44
- package/deps/simdutf/benchmarks/competition/u8u16/OSL3.0.txt +0 -169
- package/deps/simdutf/benchmarks/competition/u8u16/Profiling/BOM_Profiler.h +0 -148
- package/deps/simdutf/benchmarks/competition/u8u16/Profiling/i386_timer.h +0 -45
- package/deps/simdutf/benchmarks/competition/u8u16/Profiling/ppc_timer.c +0 -34
- package/deps/simdutf/benchmarks/competition/u8u16/README +0 -56
- package/deps/simdutf/benchmarks/competition/u8u16/config/config_defs.h +0 -43
- package/deps/simdutf/benchmarks/competition/u8u16/config/g4_config.h +0 -27
- package/deps/simdutf/benchmarks/competition/u8u16/config/mmx_config.h +0 -16
- package/deps/simdutf/benchmarks/competition/u8u16/config/p4_config.h +0 -18
- package/deps/simdutf/benchmarks/competition/u8u16/config/p4_ideal_config.h +0 -16
- package/deps/simdutf/benchmarks/competition/u8u16/config/spu_config.h +0 -28
- package/deps/simdutf/benchmarks/competition/u8u16/config/ssse3_config.h +0 -20
- package/deps/simdutf/benchmarks/competition/u8u16/iconv_u8u16.c +0 -2
- package/deps/simdutf/benchmarks/competition/u8u16/lib/altivec_simd.h +0 -440
- package/deps/simdutf/benchmarks/competition/u8u16/lib/libgen/make_basic_ops.py +0 -121
- package/deps/simdutf/benchmarks/competition/u8u16/lib/libgen/make_half_operand_versions.py +0 -158
- package/deps/simdutf/benchmarks/competition/u8u16/lib/libgen/make_test.py +0 -270
- package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd.h +0 -141
- package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd_basic.h +0 -216
- package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd_built_in.h +0 -119
- package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd_modified.h +0 -2430
- package/deps/simdutf/benchmarks/competition/u8u16/lib/outline.txt +0 -39
- package/deps/simdutf/benchmarks/competition/u8u16/lib/spu_simd.h +0 -421
- package/deps/simdutf/benchmarks/competition/u8u16/lib/sse_simd.h +0 -836
- package/deps/simdutf/benchmarks/competition/u8u16/lib/stdint.h +0 -222
- package/deps/simdutf/benchmarks/competition/u8u16/libu8u16_BE.c +0 -4
- package/deps/simdutf/benchmarks/competition/u8u16/libu8u16_LE.c +0 -5
- package/deps/simdutf/benchmarks/competition/u8u16/proto/u8u16.py +0 -390
- package/deps/simdutf/benchmarks/competition/u8u16/src/Makefile +0 -18
- package/deps/simdutf/benchmarks/competition/u8u16/src/bytelex.h +0 -448
- package/deps/simdutf/benchmarks/competition/u8u16/src/charsets/ASCII_EBCDIC.h +0 -284
- package/deps/simdutf/benchmarks/competition/u8u16/src/libu8u16.c +0 -1975
- package/deps/simdutf/benchmarks/competition/u8u16/src/libu8u16.pdf +0 -0
- package/deps/simdutf/benchmarks/competition/u8u16/src/libu8u16.w +0 -2263
- package/deps/simdutf/benchmarks/competition/u8u16/src/multiliteral.h +0 -239
- package/deps/simdutf/benchmarks/competition/u8u16/src/u8u16.c +0 -232
- package/deps/simdutf/benchmarks/competition/u8u16/src/x8x16.c +0 -194
- package/deps/simdutf/benchmarks/competition/u8u16/src/xml_error.c +0 -193
- package/deps/simdutf/benchmarks/competition/u8u16/src/xml_error.h +0 -167
- package/deps/simdutf/benchmarks/competition/u8u16/src/xmldecl.c +0 -288
- package/deps/simdutf/benchmarks/competition/u8u16/src/xmldecl.h +0 -117
- package/deps/simdutf/benchmarks/competition/u8u16/u8u16_g4.c +0 -2
- package/deps/simdutf/benchmarks/competition/u8u16/u8u16_mmx.c +0 -2
- package/deps/simdutf/benchmarks/competition/u8u16/u8u16_p4.c +0 -3
- package/deps/simdutf/benchmarks/competition/u8u16/u8u16_p4_ideal.c +0 -2
- package/deps/simdutf/benchmarks/competition/u8u16/u8u16_spu.c +0 -2
- package/deps/simdutf/benchmarks/competition/u8u16/u8u16_ssse3.c +0 -3
- package/deps/simdutf/benchmarks/competition/u8u16/x8x16_p4.c +0 -2
- package/deps/simdutf/benchmarks/competition/utf8lut/LICENSE +0 -23
- package/deps/simdutf/benchmarks/competition/utf8lut/data/test_minimal.txt +0 -44
- package/deps/simdutf/benchmarks/competition/utf8lut/readme.md +0 -106
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_clang_corr_tests.cmd +0 -11
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_clang_corr_tests.sh +0 -13
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_corr_tests.sh +0 -13
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_example.sh +0 -13
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_file_conv.sh +0 -14
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_iconv_lib.sh +0 -11
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_iconv_sample.sh +0 -8
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_corr_tests.cmd +0 -12
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_example.cmd +0 -13
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_file_conv.cmd +0 -14
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_iconv_lib.cmd +0 -11
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_iconv_sample.cmd +0 -8
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_corr_tests.cmd +0 -11
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_example.cmd +0 -12
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_file_conv.cmd +0 -13
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_iconv_lib.cmd +0 -10
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_iconv_sample.cmd +0 -9
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/html_table.py +0 -25
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/measure.py +0 -94
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/resize.py +0 -20
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/wipe_all.cmd +0 -2
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/wipe_interm.cmd +0 -1
- package/deps/simdutf/benchmarks/competition/utf8lut/src/base/CustomMemcpy.h +0 -75
- package/deps/simdutf/benchmarks/competition/utf8lut/src/base/PerfDefs.h +0 -47
- package/deps/simdutf/benchmarks/competition/utf8lut/src/base/Timing.cpp +0 -17
- package/deps/simdutf/benchmarks/competition/utf8lut/src/base/Timing.h +0 -76
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/AllProcessors.cpp +0 -35
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BaseBufferProcessor.cpp +0 -117
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BaseBufferProcessor.h +0 -210
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BufferDecoder.h +0 -158
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BufferEncoder.h +0 -104
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/ProcessorPlugins.h +0 -334
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/ProcessorSelector.h +0 -186
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/DecoderLut.cpp +0 -140
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/DecoderLut.h +0 -42
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/DecoderProcess.h +0 -100
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/Dfa.h +0 -57
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/EncoderLut.cpp +0 -85
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/EncoderLut.h +0 -27
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/EncoderProcess.h +0 -126
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/ProcessTrivial.h +0 -108
- package/deps/simdutf/benchmarks/competition/utf8lut/src/iconv/iconv.cpp +0 -139
- package/deps/simdutf/benchmarks/competition/utf8lut/src/iconv/iconv.h +0 -74
- package/deps/simdutf/benchmarks/competition/utf8lut/src/message/MessageConverter.cpp +0 -65
- package/deps/simdutf/benchmarks/competition/utf8lut/src/message/MessageConverter.h +0 -91
- package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/CorrectnessTests.cpp +0 -772
- package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/Example.cpp +0 -12
- package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/FileConverter.cpp +0 -486
- package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/iconv_sample.c +0 -162
- package/deps/simdutf/benchmarks/competition/utf8lut/src/utf8lut.h +0 -15
- package/deps/simdutf/benchmarks/competition/utf8sse4/fromutf8-sse.cpp +0 -292
- package/deps/simdutf/benchmarks/competition/utfcpp/LICENSE +0 -23
- package/deps/simdutf/benchmarks/competition/utfcpp/README.md +0 -1503
- package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/checked.h +0 -335
- package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/core.h +0 -338
- package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/cpp11.h +0 -103
- package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/cpp17.h +0 -103
- package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/unchecked.h +0 -274
- package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8.h +0 -34
- package/deps/simdutf/benchmarks/dataset/README.md +0 -155
- package/deps/simdutf/benchmarks/dataset/emoji.txt +0 -204
- package/deps/simdutf/benchmarks/dataset/scripts/utf8type.py +0 -40
- package/deps/simdutf/benchmarks/dataset/wikipedia_mars/Makefile +0 -80
- package/deps/simdutf/benchmarks/dataset/wikipedia_mars/convert_to_utf6.py +0 -20
- package/deps/simdutf/benchmarks/find/CMakeLists.txt +0 -6
- package/deps/simdutf/benchmarks/find/findbenchmark.cpp +0 -63
- package/deps/simdutf/benchmarks/find/findbenchmarker.h +0 -46
- package/deps/simdutf/benchmarks/shortbench.cpp +0 -555
- package/deps/simdutf/benchmarks/src/CMakeLists.txt +0 -52
- package/deps/simdutf/benchmarks/src/apple_arm_events.h +0 -1104
- package/deps/simdutf/benchmarks/src/benchmark.cpp +0 -3899
- package/deps/simdutf/benchmarks/src/benchmark.h +0 -317
- package/deps/simdutf/benchmarks/src/benchmark_base.cpp +0 -144
- package/deps/simdutf/benchmarks/src/benchmark_base.h +0 -98
- package/deps/simdutf/benchmarks/src/cmdline.cpp +0 -176
- package/deps/simdutf/benchmarks/src/cmdline.h +0 -35
- package/deps/simdutf/benchmarks/src/event_counter.h +0 -162
- package/deps/simdutf/benchmarks/src/linux-perf-events.h +0 -104
- package/deps/simdutf/benchmarks/stream.cpp +0 -209
- package/deps/simdutf/benchmarks/threaded.cpp +0 -123
- package/deps/simdutf/cmake/CPM.cmake +0 -1363
- package/deps/simdutf/cmake/JoinPaths.cmake +0 -23
- package/deps/simdutf/cmake/add_cpp_test.cmake +0 -68
- package/deps/simdutf/cmake/simdutf-config.cmake.in +0 -2
- package/deps/simdutf/cmake/simdutf-flags.cmake +0 -26
- package/deps/simdutf/cmake/toolchains-ci/riscv64-linux-gnu.cmake +0 -4
- package/deps/simdutf/cmake/toolchains-dev/README.md +0 -32
- package/deps/simdutf/cmake/toolchains-dev/aarch64.cmake +0 -14
- package/deps/simdutf/cmake/toolchains-dev/loongarch64.cmake +0 -22
- package/deps/simdutf/cmake/toolchains-dev/powerpc64.cmake +0 -16
- package/deps/simdutf/cmake/toolchains-dev/powerpc64le.cmake +0 -16
- package/deps/simdutf/cmake/toolchains-dev/riscv64.cmake +0 -16
- package/deps/simdutf/cmake/toolchains-dev/rvv-spike.cmake +0 -38
- package/deps/simdutf/doc/avx512.png +0 -0
- package/deps/simdutf/doc/logo.png +0 -0
- package/deps/simdutf/doc/logo.svg +0 -165
- package/deps/simdutf/doc/node2023.png +0 -0
- package/deps/simdutf/doc/shortinput.md +0 -78
- package/deps/simdutf/doc/utf16utf8.png +0 -0
- package/deps/simdutf/doc/utf8utf16.png +0 -0
- package/deps/simdutf/doc/widelogo.png +0 -0
- package/deps/simdutf/doxygen.py +0 -50
- package/deps/simdutf/fuzz/.clang-format +0 -9
- package/deps/simdutf/fuzz/CMakeLists.txt +0 -45
- package/deps/simdutf/fuzz/README.md +0 -168
- package/deps/simdutf/fuzz/atomic_base64.cpp +0 -448
- package/deps/simdutf/fuzz/base64.cpp +0 -278
- package/deps/simdutf/fuzz/build.sh +0 -83
- package/deps/simdutf/fuzz/conversion.cpp +0 -669
- package/deps/simdutf/fuzz/helpers/.clang-format-ignore +0 -1
- package/deps/simdutf/fuzz/helpers/common.h +0 -135
- package/deps/simdutf/fuzz/helpers/nameof.hpp +0 -1258
- package/deps/simdutf/fuzz/main.cpp +0 -72
- package/deps/simdutf/fuzz/minimize_and_cleanse.sh +0 -87
- package/deps/simdutf/fuzz/misc.cpp +0 -216
- package/deps/simdutf/fuzz/random_fuzz.sh +0 -154
- package/deps/simdutf/fuzz/roundtrip.cpp +0 -588
- package/deps/simdutf/fuzz/safe_conversion.cpp +0 -104
- package/deps/simdutf/riscv/Dockerfile +0 -16
- package/deps/simdutf/riscv/README.md +0 -24
- package/deps/simdutf/riscv/remove-docker-station +0 -8
- package/deps/simdutf/riscv/run-docker-station +0 -31
- package/deps/simdutf/scripts/.flake8 +0 -2
- package/deps/simdutf/scripts/Makefile +0 -2
- package/deps/simdutf/scripts/README_ADD_FUNCTION.md +0 -49
- package/deps/simdutf/scripts/add_function.py +0 -330
- package/deps/simdutf/scripts/amalgamation_tests.py +0 -156
- package/deps/simdutf/scripts/base64/Makefile +0 -2
- package/deps/simdutf/scripts/base64/README.md +0 -2
- package/deps/simdutf/scripts/base64/avx512.py +0 -76
- package/deps/simdutf/scripts/base64/neon_decode.py +0 -143
- package/deps/simdutf/scripts/base64/neon_generate_lut.py +0 -101
- package/deps/simdutf/scripts/base64/sse.py +0 -252
- package/deps/simdutf/scripts/base64/sseregular.py +0 -160
- package/deps/simdutf/scripts/base64/sseurl.py +0 -283
- package/deps/simdutf/scripts/base64/table.py +0 -59
- package/deps/simdutf/scripts/base64bench_print.py +0 -145
- package/deps/simdutf/scripts/benchmark-all.py +0 -119
- package/deps/simdutf/scripts/benchmark_print.py +0 -324
- package/deps/simdutf/scripts/check_feature_macros.py +0 -156
- package/deps/simdutf/scripts/check_typos.sh +0 -13
- package/deps/simdutf/scripts/clang_format.sh +0 -35
- package/deps/simdutf/scripts/clang_format_docker.sh +0 -38
- package/deps/simdutf/scripts/common.py +0 -24
- package/deps/simdutf/scripts/compilation_benchmark.py +0 -55
- package/deps/simdutf/scripts/compile_many_variations.sh +0 -64
- package/deps/simdutf/scripts/create_latex_table.py +0 -62
- package/deps/simdutf/scripts/docker/Dockerfile +0 -14
- package/deps/simdutf/scripts/docker/Makefile +0 -9
- package/deps/simdutf/scripts/docker/README.md +0 -30
- package/deps/simdutf/scripts/docker/llvm.gpg +0 -0
- package/deps/simdutf/scripts/ppc64_convert_utf16_to_utf8.py +0 -155
- package/deps/simdutf/scripts/prepare_doxygen.sh +0 -21
- package/deps/simdutf/scripts/release.py +0 -197
- package/deps/simdutf/scripts/shortinputplots.py +0 -97
- package/deps/simdutf/scripts/sse_convert_utf16_to_utf8.py +0 -422
- package/deps/simdutf/scripts/sse_convert_utf32_to_utf16.py +0 -105
- package/deps/simdutf/scripts/sse_utf8_utf16_decode.py +0 -186
- package/deps/simdutf/scripts/sse_validate_utf16le_proof.py +0 -137
- package/deps/simdutf/scripts/sse_validate_utf16le_testcases.py +0 -129
- package/deps/simdutf/scripts/table.py +0 -207
- package/deps/simdutf/scripts/tests/new.txt +0 -33
- package/deps/simdutf/scripts/tests/old.txt +0 -33
- package/deps/simdutf/scripts/tests/results.txt +0 -272
- package/deps/simdutf/simdutf.pc.in +0 -11
- package/deps/simdutf/singleheader/.flake8 +0 -2
- package/deps/simdutf/singleheader/CMakeLists.txt +0 -64
- package/deps/simdutf/singleheader/README-dev.md +0 -81
- package/deps/simdutf/singleheader/README.md +0 -19
- package/deps/simdutf/singleheader/amalgamate.py +0 -513
- package/deps/simdutf/singleheader/amalgamation_demo.c +0 -59
- package/deps/simdutf/singleheader/amalgamation_demo.cpp +0 -54
- package/deps/simdutf/singleheader/test-features.py +0 -262
- package/deps/simdutf/src/CMakeLists.txt +0 -78
- package/deps/simdutf/tests/CMakeLists.txt +0 -483
- package/deps/simdutf/tests/atomic_base64_tests.cpp +0 -2845
- package/deps/simdutf/tests/base64_tests.cpp +0 -3617
- package/deps/simdutf/tests/basic_fuzzer.cpp +0 -805
- package/deps/simdutf/tests/bele_tests.cpp +0 -182
- package/deps/simdutf/tests/constexpr_base64_tests.cpp +0 -387
- package/deps/simdutf/tests/convert_latin1_to_utf16be_tests.cpp +0 -52
- package/deps/simdutf/tests/convert_latin1_to_utf16le_tests.cpp +0 -80
- package/deps/simdutf/tests/convert_latin1_to_utf32_tests.cpp +0 -66
- package/deps/simdutf/tests/convert_latin1_to_utf8_tests.cpp +0 -120
- package/deps/simdutf/tests/convert_utf16_to_utf8_safe_tests.cpp +0 -203
- package/deps/simdutf/tests/convert_utf16_to_utf8_with_replacement_tests.cpp +0 -276
- package/deps/simdutf/tests/convert_utf16be_to_latin1_tests.cpp +0 -109
- package/deps/simdutf/tests/convert_utf16be_to_latin1_tests_with_errors.cpp +0 -136
- package/deps/simdutf/tests/convert_utf16be_to_utf32_tests.cpp +0 -193
- package/deps/simdutf/tests/convert_utf16be_to_utf32_with_errors_tests.cpp +0 -381
- package/deps/simdutf/tests/convert_utf16be_to_utf8_tests.cpp +0 -259
- package/deps/simdutf/tests/convert_utf16be_to_utf8_with_errors_tests.cpp +0 -266
- package/deps/simdutf/tests/convert_utf16le_to_latin1_tests.cpp +0 -148
- package/deps/simdutf/tests/convert_utf16le_to_latin1_tests_with_errors.cpp +0 -176
- package/deps/simdutf/tests/convert_utf16le_to_utf32_tests.cpp +0 -213
- package/deps/simdutf/tests/convert_utf16le_to_utf32_with_errors_tests.cpp +0 -318
- package/deps/simdutf/tests/convert_utf16le_to_utf8_tests.cpp +0 -343
- package/deps/simdutf/tests/convert_utf16le_to_utf8_with_errors_tests.cpp +0 -271
- package/deps/simdutf/tests/convert_utf32_to_latin1_tests.cpp +0 -111
- package/deps/simdutf/tests/convert_utf32_to_latin1_with_errors_tests.cpp +0 -96
- package/deps/simdutf/tests/convert_utf32_to_utf16be_tests.cpp +0 -148
- package/deps/simdutf/tests/convert_utf32_to_utf16be_with_errors_tests.cpp +0 -192
- package/deps/simdutf/tests/convert_utf32_to_utf16le_tests.cpp +0 -166
- package/deps/simdutf/tests/convert_utf32_to_utf16le_with_errors_tests.cpp +0 -215
- package/deps/simdutf/tests/convert_utf32_to_utf8_tests.cpp +0 -181
- package/deps/simdutf/tests/convert_utf32_to_utf8_with_errors_tests.cpp +0 -261
- package/deps/simdutf/tests/convert_utf8_to_latin1_tests.cpp +0 -516
- package/deps/simdutf/tests/convert_utf8_to_latin1_with_errors_tests.cpp +0 -579
- package/deps/simdutf/tests/convert_utf8_to_utf16be_tests.cpp +0 -412
- package/deps/simdutf/tests/convert_utf8_to_utf16be_with_errors_tests.cpp +0 -480
- package/deps/simdutf/tests/convert_utf8_to_utf16le_tests.cpp +0 -671
- package/deps/simdutf/tests/convert_utf8_to_utf16le_with_errors_tests.cpp +0 -455
- package/deps/simdutf/tests/convert_utf8_to_utf32_tests.cpp +0 -1204
- package/deps/simdutf/tests/convert_utf8_to_utf32_with_errors_tests.cpp +0 -337
- package/deps/simdutf/tests/convert_valid_utf16be_to_latin1_tests.cpp +0 -37
- package/deps/simdutf/tests/convert_valid_utf16be_to_utf32_tests.cpp +0 -97
- package/deps/simdutf/tests/convert_valid_utf16be_to_utf8_tests.cpp +0 -126
- package/deps/simdutf/tests/convert_valid_utf16le_to_latin1_tests.cpp +0 -71
- package/deps/simdutf/tests/convert_valid_utf16le_to_utf32_tests.cpp +0 -122
- package/deps/simdutf/tests/convert_valid_utf16le_to_utf8_tests.cpp +0 -244
- package/deps/simdutf/tests/convert_valid_utf32_to_latin1_tests.cpp +0 -49
- package/deps/simdutf/tests/convert_valid_utf32_to_utf16be_tests.cpp +0 -92
- package/deps/simdutf/tests/convert_valid_utf32_to_utf16le_tests.cpp +0 -114
- package/deps/simdutf/tests/convert_valid_utf32_to_utf8_tests.cpp +0 -109
- package/deps/simdutf/tests/convert_valid_utf8_to_latin1_tests.cpp +0 -84
- package/deps/simdutf/tests/convert_valid_utf8_to_utf16be_tests.cpp +0 -124
- package/deps/simdutf/tests/convert_valid_utf8_to_utf16le_tests.cpp +0 -221
- package/deps/simdutf/tests/convert_valid_utf8_to_utf32_tests.cpp +0 -155
- package/deps/simdutf/tests/count_utf16be.cpp +0 -64
- package/deps/simdutf/tests/count_utf16le.cpp +0 -61
- package/deps/simdutf/tests/count_utf8.cpp +0 -87
- package/deps/simdutf/tests/detect_encodings_tests.cpp +0 -312
- package/deps/simdutf/tests/embed/valid_utf8.txt +0 -1
- package/deps/simdutf/tests/embed_tests.cpp +0 -22
- package/deps/simdutf/tests/find_tests.cpp +0 -77
- package/deps/simdutf/tests/fixed_string_tests.cpp +0 -153
- package/deps/simdutf/tests/helpers/CMakeLists.txt +0 -25
- package/deps/simdutf/tests/helpers/compiletime_conversions.h +0 -222
- package/deps/simdutf/tests/helpers/fixed_string.h +0 -267
- package/deps/simdutf/tests/helpers/random_int.cpp +0 -30
- package/deps/simdutf/tests/helpers/random_int.h +0 -39
- package/deps/simdutf/tests/helpers/random_utf16.cpp +0 -123
- package/deps/simdutf/tests/helpers/random_utf16.h +0 -52
- package/deps/simdutf/tests/helpers/random_utf32.cpp +0 -41
- package/deps/simdutf/tests/helpers/random_utf32.h +0 -40
- package/deps/simdutf/tests/helpers/random_utf8.cpp +0 -93
- package/deps/simdutf/tests/helpers/random_utf8.h +0 -36
- package/deps/simdutf/tests/helpers/test.cpp +0 -231
- package/deps/simdutf/tests/helpers/test.h +0 -193
- package/deps/simdutf/tests/helpers/transcode_test_base.cpp +0 -1257
- package/deps/simdutf/tests/helpers/transcode_test_base.h +0 -683
- package/deps/simdutf/tests/helpers/utf16.h +0 -27
- package/deps/simdutf/tests/installation_tests/find/CMakeLists.txt +0 -43
- package/deps/simdutf/tests/installation_tests/from_fetch/CMakeLists.txt +0 -47
- package/deps/simdutf/tests/internal_tests.cpp +0 -27
- package/deps/simdutf/tests/null_safety_tests.cpp +0 -94
- package/deps/simdutf/tests/random_fuzzer.cpp +0 -779
- package/deps/simdutf/tests/readme_tests.cpp +0 -274
- package/deps/simdutf/tests/reference/CMakeLists.txt +0 -23
- package/deps/simdutf/tests/reference/decode_utf16.h +0 -81
- package/deps/simdutf/tests/reference/decode_utf32.h +0 -47
- package/deps/simdutf/tests/reference/encode_latin1.cpp +0 -1
- package/deps/simdutf/tests/reference/encode_latin1.h +0 -32
- package/deps/simdutf/tests/reference/encode_utf16.cpp +0 -49
- package/deps/simdutf/tests/reference/encode_utf16.h +0 -20
- package/deps/simdutf/tests/reference/encode_utf32.cpp +0 -1
- package/deps/simdutf/tests/reference/encode_utf32.h +0 -36
- package/deps/simdutf/tests/reference/encode_utf8.cpp +0 -1
- package/deps/simdutf/tests/reference/encode_utf8.h +0 -40
- package/deps/simdutf/tests/reference/validate_utf16.cpp +0 -60
- package/deps/simdutf/tests/reference/validate_utf16.h +0 -14
- package/deps/simdutf/tests/reference/validate_utf16_to_latin1.cpp +0 -35
- package/deps/simdutf/tests/reference/validate_utf16_to_latin1.h +0 -13
- package/deps/simdutf/tests/reference/validate_utf32.cpp +0 -27
- package/deps/simdutf/tests/reference/validate_utf32.h +0 -12
- package/deps/simdutf/tests/reference/validate_utf32_to_latin1.cpp +0 -27
- package/deps/simdutf/tests/reference/validate_utf32_to_latin1.h +0 -12
- package/deps/simdutf/tests/reference/validate_utf8.cpp +0 -82
- package/deps/simdutf/tests/reference/validate_utf8.h +0 -11
- package/deps/simdutf/tests/reference/validate_utf8_to_latin1.cpp +0 -43
- package/deps/simdutf/tests/reference/validate_utf8_to_latin1.h +0 -12
- package/deps/simdutf/tests/select_implementation.cpp +0 -43
- package/deps/simdutf/tests/simdutf_c_tests.cpp +0 -244
- package/deps/simdutf/tests/span_tests.cpp +0 -401
- package/deps/simdutf/tests/special_tests.cpp +0 -559
- package/deps/simdutf/tests/straight_c_test.c +0 -187
- package/deps/simdutf/tests/text_encoding_tests.cpp +0 -77
- package/deps/simdutf/tests/to_well_formed_utf16_tests.cpp +0 -377
- package/deps/simdutf/tests/utf8_length_from_utf16_tests.cpp +0 -202
- package/deps/simdutf/tests/validate_ascii_basic_tests.cpp +0 -165
- package/deps/simdutf/tests/validate_ascii_with_errors_tests.cpp +0 -77
- package/deps/simdutf/tests/validate_utf16be_basic_tests.cpp +0 -175
- package/deps/simdutf/tests/validate_utf16be_with_errors_tests.cpp +0 -188
- package/deps/simdutf/tests/validate_utf16le_basic_tests.cpp +0 -268
- package/deps/simdutf/tests/validate_utf16le_with_errors_tests.cpp +0 -274
- package/deps/simdutf/tests/validate_utf32_basic_tests.cpp +0 -92
- package/deps/simdutf/tests/validate_utf32_with_errors_tests.cpp +0 -114
- package/deps/simdutf/tests/validate_utf8_basic_tests.cpp +0 -178
- package/deps/simdutf/tests/validate_utf8_brute_force_tests.cpp +0 -88
- package/deps/simdutf/tests/validate_utf8_puzzler_tests.cpp +0 -33
- package/deps/simdutf/tests/validate_utf8_with_errors_tests.cpp +0 -228
- package/deps/simdutf/tools/CMakeLists.txt +0 -85
- package/deps/simdutf/tools/fastbase64.cpp +0 -250
- package/deps/simdutf/tools/sutf.cpp +0 -556
- package/deps/simdutf/tools/sutf.h +0 -40
- 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
|
|
38
|
-
throw new
|
|
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
|
-
//
|
|
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
|
-
|
|
193
|
-
|
|
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
|
-
|
|
197
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
//
|
|
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
|
-
|
|
95
|
-
|
|
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
|
-
|
|
99
|
-
|
|
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
|
|
package/src/keys/publicCipher.ts
CHANGED
|
@@ -144,8 +144,13 @@ export function publicDecrypt(
|
|
|
144
144
|
paddingMode,
|
|
145
145
|
);
|
|
146
146
|
return Buffer.from(decrypted);
|
|
147
|
-
} catch
|
|
148
|
-
|
|
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
|
|
248
|
-
|
|
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
|
-
|
|
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,
|
|
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 <
|
|
74
|
-
throw lazyDOMException(
|
|
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 <
|
|
202
|
-
throw new
|
|
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
|
-
|
|
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
|
-
|
|
119
|
-
throw new TypeError('Bad key length');
|
|
120
|
-
}
|
|
187
|
+
validateScryptKeylen(keylen);
|
|
121
188
|
|
|
122
189
|
const nativeMod = getNative();
|
|
123
190
|
const result = nativeMod.deriveKeySync(
|
package/src/specs/utils.nitro.ts
CHANGED
|
@@ -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,
|
|
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
|
-
//
|
|
2165
|
-
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
|
|
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');
|
package/src/utils/cipher.ts
CHANGED
|
@@ -48,13 +48,35 @@ export function validateEncoding(data: string, encoding: string) {
|
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
|
81
|
+
return value;
|
|
60
82
|
}
|