react-native-quick-crypto 1.1.0 → 1.1.2
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/QuickCrypto.podspec +1 -0
- package/android/CMakeLists.txt +4 -0
- 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 +35 -26
- package/cpp/cipher/CCMCipher.hpp +2 -4
- package/cpp/cipher/ChaCha20Cipher.cpp +19 -27
- package/cpp/cipher/ChaCha20Cipher.hpp +2 -4
- package/cpp/cipher/ChaCha20Poly1305Cipher.cpp +41 -36
- package/cpp/cipher/ChaCha20Poly1305Cipher.hpp +2 -4
- package/cpp/cipher/GCMCipher.cpp +17 -20
- package/cpp/cipher/HybridCipher.cpp +44 -47
- package/cpp/cipher/HybridCipher.hpp +17 -1
- package/cpp/cipher/HybridRsaCipher.cpp +93 -56
- package/cpp/cipher/OCBCipher.cpp +5 -5
- package/cpp/cipher/XChaCha20Poly1305Cipher.cpp +27 -32
- package/cpp/cipher/XSalsa20Cipher.cpp +78 -16
- package/cpp/cipher/XSalsa20Cipher.hpp +25 -3
- package/cpp/cipher/XSalsa20Poly1305Cipher.cpp +32 -41
- 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/keys/HybridKeyObjectHandle.cpp +630 -2
- package/cpp/keys/HybridKeyObjectHandle.hpp +21 -1
- 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 +47 -72
- package/cpp/sign/HybridVerifyHandle.cpp +47 -67
- package/cpp/slhdsa/HybridSlhDsaKeyPair.cpp +245 -0
- package/cpp/slhdsa/HybridSlhDsaKeyPair.hpp +48 -0
- package/cpp/turboshake/HybridTurboShake.cpp +379 -0
- package/cpp/turboshake/HybridTurboShake.hpp +28 -0
- package/cpp/utils/HybridUtils.cpp +195 -43
- package/cpp/utils/HybridUtils.hpp +9 -2
- package/cpp/utils/QuickCryptoUtils.hpp +72 -0
- package/deps/blake3/README.md +6 -7
- package/deps/blake3/c/blake3.c +3 -2
- package/deps/blake3/c/blake3.h +2 -2
- package/deps/blake3/c/blake3_dispatch.c +2 -2
- package/deps/blake3/c/blake3_impl.h +1 -1
- package/deps/blake3/c/blake3_neon.c +5 -4
- package/deps/ncrypto/include/ncrypto/version.h +2 -2
- package/deps/ncrypto/include/ncrypto.h +9 -2
- package/deps/ncrypto/src/ncrypto.cpp +130 -35
- 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/dhKeyPair.js +3 -0
- package/lib/commonjs/dhKeyPair.js.map +1 -1
- package/lib/commonjs/dsa.js +11 -2
- package/lib/commonjs/dsa.js.map +1 -1
- package/lib/commonjs/ec.js +37 -30
- package/lib/commonjs/ec.js.map +1 -1
- package/lib/commonjs/ed.js +60 -6
- package/lib/commonjs/ed.js.map +1 -1
- package/lib/commonjs/hash.js +67 -10
- 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/classes.js +33 -7
- package/lib/commonjs/keys/classes.js.map +1 -1
- package/lib/commonjs/keys/generateKeyPair.js +85 -4
- package/lib/commonjs/keys/generateKeyPair.js.map +1 -1
- package/lib/commonjs/keys/index.js +50 -2
- package/lib/commonjs/keys/index.js.map +1 -1
- package/lib/commonjs/keys/publicCipher.js +10 -4
- package/lib/commonjs/keys/publicCipher.js.map +1 -1
- package/lib/commonjs/keys/signVerify.js +9 -2
- package/lib/commonjs/keys/signVerify.js.map +1 -1
- package/lib/commonjs/keys/utils.js +59 -1
- package/lib/commonjs/keys/utils.js.map +1 -1
- package/lib/commonjs/random.js +74 -11
- package/lib/commonjs/random.js.map +1 -1
- package/lib/commonjs/rsa.js +15 -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/slhdsa.js +70 -0
- package/lib/commonjs/slhdsa.js.map +1 -0
- package/lib/commonjs/specs/slhDsaKeyPair.nitro.js +6 -0
- package/lib/commonjs/specs/slhDsaKeyPair.nitro.js.map +1 -0
- package/lib/commonjs/specs/turboshake.nitro.js +6 -0
- package/lib/commonjs/specs/turboshake.nitro.js.map +1 -0
- package/lib/commonjs/subtle.js +975 -253
- 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 +86 -28
- package/lib/commonjs/utils/conversion.js.map +1 -1
- package/lib/commonjs/utils/errors.js +63 -4
- package/lib/commonjs/utils/errors.js.map +1 -1
- package/lib/commonjs/utils/timingSafeEqual.js +7 -2
- package/lib/commonjs/utils/timingSafeEqual.js.map +1 -1
- package/lib/commonjs/utils/types.js.map +1 -1
- package/lib/commonjs/utils/validation.js +46 -0
- package/lib/commonjs/utils/validation.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/dhKeyPair.js +3 -0
- package/lib/module/dhKeyPair.js.map +1 -1
- package/lib/module/dsa.js +11 -2
- package/lib/module/dsa.js.map +1 -1
- package/lib/module/ec.js +38 -31
- package/lib/module/ec.js.map +1 -1
- package/lib/module/ed.js +61 -7
- package/lib/module/ed.js.map +1 -1
- package/lib/module/hash.js +67 -10
- 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/classes.js +31 -5
- package/lib/module/keys/classes.js.map +1 -1
- package/lib/module/keys/generateKeyPair.js +86 -5
- package/lib/module/keys/generateKeyPair.js.map +1 -1
- package/lib/module/keys/index.js +50 -2
- package/lib/module/keys/index.js.map +1 -1
- package/lib/module/keys/publicCipher.js +10 -4
- package/lib/module/keys/publicCipher.js.map +1 -1
- package/lib/module/keys/signVerify.js +9 -2
- package/lib/module/keys/signVerify.js.map +1 -1
- package/lib/module/keys/utils.js +57 -1
- package/lib/module/keys/utils.js.map +1 -1
- package/lib/module/random.js +74 -12
- package/lib/module/random.js.map +1 -1
- package/lib/module/rsa.js +14 -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/slhdsa.js +64 -0
- package/lib/module/slhdsa.js.map +1 -0
- package/lib/module/specs/slhDsaKeyPair.nitro.js +4 -0
- package/lib/module/specs/slhDsaKeyPair.nitro.js.map +1 -0
- package/lib/module/specs/turboshake.nitro.js +4 -0
- package/lib/module/specs/turboshake.nitro.js.map +1 -0
- package/lib/module/subtle.js +976 -254
- 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 +84 -28
- package/lib/module/utils/conversion.js.map +1 -1
- package/lib/module/utils/errors.js +61 -4
- package/lib/module/utils/errors.js.map +1 -1
- package/lib/module/utils/timingSafeEqual.js +8 -3
- package/lib/module/utils/timingSafeEqual.js.map +1 -1
- package/lib/module/utils/types.js.map +1 -1
- package/lib/module/utils/validation.js +44 -0
- package/lib/module/utils/validation.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/dhKeyPair.d.ts.map +1 -1
- package/lib/typescript/dsa.d.ts.map +1 -1
- package/lib/typescript/ec.d.ts.map +1 -1
- package/lib/typescript/ed.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 +13 -8
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/keys/classes.d.ts +10 -1
- package/lib/typescript/keys/classes.d.ts.map +1 -1
- package/lib/typescript/keys/generateKeyPair.d.ts +12 -1
- package/lib/typescript/keys/generateKeyPair.d.ts.map +1 -1
- package/lib/typescript/keys/index.d.ts +3 -1
- package/lib/typescript/keys/index.d.ts.map +1 -1
- package/lib/typescript/keys/publicCipher.d.ts.map +1 -1
- package/lib/typescript/keys/signVerify.d.ts.map +1 -1
- package/lib/typescript/keys/utils.d.ts +21 -4
- package/lib/typescript/keys/utils.d.ts.map +1 -1
- package/lib/typescript/random.d.ts +5 -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/slhdsa.d.ts +19 -0
- package/lib/typescript/slhdsa.d.ts.map +1 -0
- package/lib/typescript/specs/keyObjectHandle.nitro.d.ts +9 -0
- package/lib/typescript/specs/keyObjectHandle.nitro.d.ts.map +1 -1
- package/lib/typescript/specs/slhDsaKeyPair.nitro.d.ts +16 -0
- package/lib/typescript/specs/slhDsaKeyPair.nitro.d.ts.map +1 -0
- package/lib/typescript/specs/turboshake.nitro.d.ts +11 -0
- package/lib/typescript/specs/turboshake.nitro.d.ts.map +1 -0
- 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 +3 -2
- 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 +13 -9
- package/lib/typescript/utils/conversion.d.ts.map +1 -1
- package/lib/typescript/utils/errors.d.ts +12 -0
- package/lib/typescript/utils/errors.d.ts.map +1 -1
- package/lib/typescript/utils/timingSafeEqual.d.ts.map +1 -1
- package/lib/typescript/utils/types.d.ts +32 -15
- package/lib/typescript/utils/types.d.ts.map +1 -1
- package/lib/typescript/utils/validation.d.ts +3 -1
- package/lib/typescript/utils/validation.d.ts.map +1 -1
- package/lib/typescript/x509certificate.d.ts.map +1 -1
- package/nitrogen/generated/android/QuickCrypto+autolinking.cmake +2 -0
- package/nitrogen/generated/android/QuickCryptoOnLoad.cpp +20 -0
- package/nitrogen/generated/ios/QuickCryptoAutolinking.mm +20 -0
- package/nitrogen/generated/shared/c++/AsymmetricKeyType.hpp +48 -0
- package/nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.cpp +9 -0
- package/nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.hpp +9 -0
- package/nitrogen/generated/shared/c++/HybridSlhDsaKeyPairSpec.cpp +29 -0
- package/nitrogen/generated/shared/c++/HybridSlhDsaKeyPairSpec.hpp +72 -0
- package/nitrogen/generated/shared/c++/HybridTurboShakeSpec.cpp +22 -0
- package/nitrogen/generated/shared/c++/HybridTurboShakeSpec.hpp +70 -0
- package/nitrogen/generated/shared/c++/HybridUtilsSpec.cpp +0 -2
- package/nitrogen/generated/shared/c++/HybridUtilsSpec.hpp +0 -3
- package/nitrogen/generated/shared/c++/JWK.hpp +9 -1
- package/nitrogen/generated/shared/c++/JWKkty.hpp +4 -0
- package/nitrogen/generated/shared/c++/KangarooTwelveVariant.hpp +76 -0
- package/nitrogen/generated/shared/c++/TurboShakeVariant.hpp +76 -0
- package/package.json +38 -7
- package/src/argon2.ts +80 -2
- package/src/cipher.ts +139 -15
- package/src/dhKeyPair.ts +8 -0
- package/src/dsa.ts +19 -2
- package/src/ec.ts +52 -29
- package/src/ed.ts +95 -16
- package/src/hash.ts +125 -12
- package/src/hkdf.ts +44 -6
- package/src/hmac.ts +17 -7
- package/src/keys/classes.ts +46 -5
- package/src/keys/generateKeyPair.ts +151 -5
- package/src/keys/index.ts +73 -3
- package/src/keys/publicCipher.ts +10 -4
- package/src/keys/signVerify.ts +13 -2
- package/src/keys/utils.ts +78 -5
- package/src/random.ts +104 -11
- package/src/rsa.ts +26 -4
- package/src/scrypt.ts +73 -6
- package/src/slhdsa.ts +146 -0
- package/src/specs/keyObjectHandle.nitro.ts +17 -0
- package/src/specs/slhDsaKeyPair.nitro.ts +29 -0
- package/src/specs/turboshake.nitro.ts +21 -0
- package/src/specs/utils.nitro.ts +0 -2
- package/src/subtle.ts +1246 -333
- package/src/utils/cipher.ts +30 -8
- package/src/utils/conversion.ts +129 -40
- package/src/utils/errors.ts +72 -4
- package/src/utils/timingSafeEqual.ts +8 -3
- package/src/utils/types.ts +80 -15
- package/src/utils/validation.ts +70 -1
- 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/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
|
}
|
package/src/utils/conversion.ts
CHANGED
|
@@ -3,18 +3,101 @@ import { Buffer as SafeBuffer } from 'safe-buffer';
|
|
|
3
3
|
import { NitroModules } from 'react-native-nitro-modules';
|
|
4
4
|
import type { Utils } from '../specs/utils.nitro';
|
|
5
5
|
import type { ABV, BinaryLikeNode, BufferLike } from './types';
|
|
6
|
+
import { Platform } from 'react-native';
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
type UtilsWithStringConverter = Utils & {
|
|
9
|
+
bufferToString(
|
|
10
|
+
buffer: ArrayBuffer,
|
|
11
|
+
encoding: string,
|
|
12
|
+
start?: number,
|
|
13
|
+
end?: number,
|
|
14
|
+
): string;
|
|
15
|
+
stringToBuffer(str: string, encoding: string): ArrayBuffer;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const utils =
|
|
19
|
+
NitroModules.createHybridObject<UtilsWithStringConverter>('Utils');
|
|
20
|
+
|
|
21
|
+
const isHermes =
|
|
22
|
+
(global as { HermesInternal?: unknown }).HermesInternal != null;
|
|
23
|
+
|
|
24
|
+
// v0.78.0, https://github.com/facebook/react-native/commit/c6f12254d16d87978383c08065a626d437e60450
|
|
25
|
+
// Use jsi::String::getStringData() rather than jsi::String::utf16()
|
|
26
|
+
const canGetU16StringFromJsiString = !(
|
|
27
|
+
Platform.constants.reactNativeVersion.major == 0 &&
|
|
28
|
+
Platform.constants.reactNativeVersion.minor < 78
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
// v0.79.0, https://github.com/facebook/react-native/commit/d9d824055e9f24614abd5657f9fc89a6ab3f2da2
|
|
32
|
+
const canCreateJsiStringFromUtf16 = !(
|
|
33
|
+
Platform.constants.reactNativeVersion.major == 0 &&
|
|
34
|
+
Platform.constants.reactNativeVersion.minor < 79
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
const baseNativeEncodings = [
|
|
38
|
+
'hex',
|
|
39
|
+
'base64',
|
|
40
|
+
'base64url',
|
|
41
|
+
'utf8',
|
|
42
|
+
'utf-8',
|
|
43
|
+
'latin1',
|
|
44
|
+
'binary',
|
|
45
|
+
'ascii',
|
|
46
|
+
];
|
|
47
|
+
const nativeStringToBufferEncodings = new Set<string>(baseNativeEncodings);
|
|
48
|
+
const nativeBufferToStringEncodings = new Set<string>(baseNativeEncodings);
|
|
49
|
+
|
|
50
|
+
// The fast and lossless paths for utf16le are only available on Hermes
|
|
51
|
+
if (isHermes) {
|
|
52
|
+
if (canGetU16StringFromJsiString) {
|
|
53
|
+
nativeStringToBufferEncodings.add('utf16le');
|
|
54
|
+
}
|
|
55
|
+
if (canCreateJsiStringFromUtf16) {
|
|
56
|
+
nativeBufferToStringEncodings.add('utf16le');
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// WebCrypto / Web IDL §BufferSource: SharedArrayBuffer-backed inputs must
|
|
61
|
+
// be rejected. Concurrent writes from another worker during async crypto
|
|
62
|
+
// can corrupt computations or leak intermediate state, so even copying
|
|
63
|
+
// the source isn't safe (the copy itself races). Reject at conversion.
|
|
64
|
+
// See Node's `lib/internal/webidl.js` BufferSource converter (commit
|
|
65
|
+
// bee10872588) — it throws TypeError, matching the WebIDL spec.
|
|
66
|
+
//
|
|
67
|
+
// We apply this guard to *every* conversion helper, not just the ones
|
|
68
|
+
// reached from `subtle.*`. That's deliberately stricter than Node, whose
|
|
69
|
+
// classic APIs (`createHash().update`, `createHmac().update`,
|
|
70
|
+
// `createCipheriv().update`, etc.) accept SAB-backed views. The TOCTOU
|
|
71
|
+
// concern is the same on either side of the WebCrypto / classic line, so
|
|
72
|
+
// we prefer the safer default everywhere.
|
|
73
|
+
export function rejectSharedArrayBuffer(buf: unknown): void {
|
|
74
|
+
if (typeof SharedArrayBuffer === 'undefined') return;
|
|
75
|
+
if (buf instanceof SharedArrayBuffer) {
|
|
76
|
+
throw new TypeError('SharedArrayBuffer is not a supported BufferSource');
|
|
77
|
+
}
|
|
78
|
+
if (
|
|
79
|
+
ArrayBuffer.isView(buf) &&
|
|
80
|
+
(buf as ArrayBufferView).buffer instanceof SharedArrayBuffer
|
|
81
|
+
) {
|
|
82
|
+
throw new TypeError(
|
|
83
|
+
'View on a SharedArrayBuffer is not a supported BufferSource',
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
8
87
|
|
|
9
88
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
89
|
+
* Returns the underlying ArrayBuffer of a Buffer / TypedArray view **without
|
|
90
|
+
* copying**, ignoring `byteOffset`/`byteLength`. The full backing storage is
|
|
91
|
+
* exposed.
|
|
92
|
+
*
|
|
93
|
+
* Only use this when the caller separately tracks `byteOffset`/`byteLength`
|
|
94
|
+
* and the native receiver needs to write back into the original memory
|
|
95
|
+
* (e.g. `randomFill`). For data that will be read by native crypto, use
|
|
96
|
+
* `binaryLikeToArrayBuffer`/`toArrayBuffer` instead — those slice to the
|
|
97
|
+
* view's region and won't leak unrelated bytes from the backing buffer.
|
|
16
98
|
*/
|
|
17
99
|
export const abvToArrayBuffer = (buf: ABV) => {
|
|
100
|
+
rejectSharedArrayBuffer(buf);
|
|
18
101
|
if (CraftzdogBuffer.isBuffer(buf)) {
|
|
19
102
|
return buf.buffer as ArrayBuffer;
|
|
20
103
|
}
|
|
@@ -52,6 +135,8 @@ export function toArrayBuffer(
|
|
|
52
135
|
}
|
|
53
136
|
|
|
54
137
|
export function bufferLikeToArrayBuffer(buf: BufferLike): ArrayBuffer {
|
|
138
|
+
rejectSharedArrayBuffer(buf);
|
|
139
|
+
|
|
55
140
|
// Buffer
|
|
56
141
|
if (CraftzdogBuffer.isBuffer(buf) || SafeBuffer.isBuffer(buf)) {
|
|
57
142
|
return toArrayBuffer(buf);
|
|
@@ -66,22 +151,8 @@ export function bufferLikeToArrayBuffer(buf: BufferLike): ArrayBuffer {
|
|
|
66
151
|
return buf;
|
|
67
152
|
}
|
|
68
153
|
|
|
69
|
-
// If buf is a SharedArrayBuffer, convert it to ArrayBuffer.
|
|
70
|
-
// This typically involves a copy of the data.
|
|
71
|
-
if (
|
|
72
|
-
typeof SharedArrayBuffer !== 'undefined' &&
|
|
73
|
-
buf instanceof SharedArrayBuffer
|
|
74
|
-
) {
|
|
75
|
-
const arrayBuffer = new ArrayBuffer(buf.byteLength);
|
|
76
|
-
new Uint8Array(arrayBuffer).set(new Uint8Array(buf));
|
|
77
|
-
return arrayBuffer;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
// If we reach here, 'buf' is of a type within BufferLike that has not been handled by the above checks.
|
|
81
|
-
// This indicates either an incomplete BufferLike definition or an unexpected input type.
|
|
82
|
-
// Throw an error to signal this, ensuring the function's contract (return ArrayBuffer or throw) is met.
|
|
83
154
|
throw new TypeError(
|
|
84
|
-
'Input must be a Buffer, ArrayBufferView,
|
|
155
|
+
'Input must be a Buffer, ArrayBufferView, or ArrayBuffer.',
|
|
85
156
|
);
|
|
86
157
|
}
|
|
87
158
|
|
|
@@ -89,6 +160,8 @@ export function binaryLikeToArrayBuffer(
|
|
|
89
160
|
input: BinaryLikeNode, // CipherKey adds compat with node types
|
|
90
161
|
encoding: string = 'utf-8',
|
|
91
162
|
): ArrayBuffer {
|
|
163
|
+
rejectSharedArrayBuffer(input);
|
|
164
|
+
|
|
92
165
|
// string
|
|
93
166
|
if (typeof input === 'string') {
|
|
94
167
|
if (encoding === 'buffer') {
|
|
@@ -97,7 +170,7 @@ export function binaryLikeToArrayBuffer(
|
|
|
97
170
|
);
|
|
98
171
|
}
|
|
99
172
|
|
|
100
|
-
if (
|
|
173
|
+
if (nativeStringToBufferEncodings.has(encoding)) {
|
|
101
174
|
return utils.stringToBuffer(input, encoding);
|
|
102
175
|
}
|
|
103
176
|
const buffer = CraftzdogBuffer.from(input, encoding);
|
|
@@ -155,30 +228,46 @@ export function binaryLikeToArrayBuffer(
|
|
|
155
228
|
);
|
|
156
229
|
}
|
|
157
230
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
'
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
'ascii',
|
|
167
|
-
]);
|
|
168
|
-
|
|
169
|
-
export function ab2str(buf: ArrayBuffer, encoding: string = 'hex'): string {
|
|
170
|
-
if (nativeEncodings.has(encoding)) {
|
|
171
|
-
return utils.bufferToString(buf, encoding);
|
|
231
|
+
export function ab2str(
|
|
232
|
+
buf: ArrayBuffer,
|
|
233
|
+
encoding: string = 'hex',
|
|
234
|
+
start?: number,
|
|
235
|
+
end?: number,
|
|
236
|
+
): string {
|
|
237
|
+
if (nativeBufferToStringEncodings.has(encoding)) {
|
|
238
|
+
return bufferToString(buf, encoding, start, end);
|
|
172
239
|
}
|
|
173
|
-
|
|
240
|
+
|
|
241
|
+
return CraftzdogBuffer.from(buf).toString(encoding, start, end);
|
|
174
242
|
}
|
|
175
243
|
|
|
176
|
-
/** Native C++ buffer-to-string
|
|
244
|
+
/** Native C++ buffer-to-string with arguments normalization*/
|
|
177
245
|
export function bufferToString(
|
|
178
246
|
buf: ArrayBuffer,
|
|
179
247
|
encoding: string = 'hex',
|
|
248
|
+
start?: number,
|
|
249
|
+
end?: number,
|
|
180
250
|
): string {
|
|
181
|
-
|
|
251
|
+
// https://github.com/nodejs/node/blob/v24.15.0/lib/buffer.js#L915-L928
|
|
252
|
+
if (start === undefined || start < 0) {
|
|
253
|
+
start = 0;
|
|
254
|
+
} else if (start >= buf.byteLength) {
|
|
255
|
+
return '';
|
|
256
|
+
} else {
|
|
257
|
+
start = Math.trunc(start) || 0;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
if (end === undefined || end > buf.byteLength) {
|
|
261
|
+
end = buf.byteLength;
|
|
262
|
+
} else {
|
|
263
|
+
end = Math.trunc(end) || 0;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
if (end <= start) {
|
|
267
|
+
return '';
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
return utils.bufferToString(buf, encoding, start, end);
|
|
182
271
|
}
|
|
183
272
|
|
|
184
273
|
/** Native C++ string-to-buffer — exposed for benchmarking */
|
package/src/utils/errors.ts
CHANGED
|
@@ -5,11 +5,79 @@ type DOMName =
|
|
|
5
5
|
cause: unknown;
|
|
6
6
|
};
|
|
7
7
|
|
|
8
|
+
// Hermes (React Native) does not implement DOMException natively. Use it when
|
|
9
|
+
// the host provides one; otherwise fall back to an Error subclass that exposes
|
|
10
|
+
// the WebCrypto-relevant surface (.name, .message, .code) so consumers that
|
|
11
|
+
// branch on `err.name === 'InvalidAccessError'` see the spec-correct value.
|
|
12
|
+
const DOM_EXCEPTION_CODES: Record<string, number> = {
|
|
13
|
+
IndexSizeError: 1,
|
|
14
|
+
HierarchyRequestError: 3,
|
|
15
|
+
WrongDocumentError: 4,
|
|
16
|
+
InvalidCharacterError: 5,
|
|
17
|
+
NoModificationAllowedError: 7,
|
|
18
|
+
NotFoundError: 8,
|
|
19
|
+
NotSupportedError: 9,
|
|
20
|
+
InUseAttributeError: 10,
|
|
21
|
+
InvalidStateError: 11,
|
|
22
|
+
SyntaxError: 12,
|
|
23
|
+
InvalidModificationError: 13,
|
|
24
|
+
NamespaceError: 14,
|
|
25
|
+
InvalidAccessError: 15,
|
|
26
|
+
TypeMismatchError: 17,
|
|
27
|
+
SecurityError: 18,
|
|
28
|
+
NetworkError: 19,
|
|
29
|
+
AbortError: 20,
|
|
30
|
+
URLMismatchError: 21,
|
|
31
|
+
QuotaExceededError: 22,
|
|
32
|
+
TimeoutError: 23,
|
|
33
|
+
InvalidNodeTypeError: 24,
|
|
34
|
+
DataCloneError: 25,
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
const HostDOMException: typeof globalThis.DOMException | undefined = (
|
|
38
|
+
globalThis as { DOMException?: typeof globalThis.DOMException }
|
|
39
|
+
).DOMException;
|
|
40
|
+
|
|
41
|
+
class FallbackDOMException extends Error {
|
|
42
|
+
readonly code: number;
|
|
43
|
+
constructor(message: string, name: string) {
|
|
44
|
+
super(message);
|
|
45
|
+
this.name = name;
|
|
46
|
+
this.code = DOM_EXCEPTION_CODES[name] ?? 0;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
8
50
|
export function lazyDOMException(message: string, domName: DOMName): Error {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
51
|
+
const name = typeof domName === 'string' ? domName : domName.name;
|
|
52
|
+
const cause = typeof domName === 'string' ? undefined : domName.cause;
|
|
53
|
+
|
|
54
|
+
let err: Error;
|
|
55
|
+
if (HostDOMException) {
|
|
56
|
+
err =
|
|
57
|
+
cause !== undefined
|
|
58
|
+
? new HostDOMException(message, { name, cause } as never)
|
|
59
|
+
: new HostDOMException(message, name);
|
|
60
|
+
} else {
|
|
61
|
+
err = new FallbackDOMException(message, name);
|
|
62
|
+
if (cause !== undefined) {
|
|
63
|
+
(err as Error & { cause?: unknown }).cause = cause;
|
|
64
|
+
}
|
|
12
65
|
}
|
|
66
|
+
return err;
|
|
67
|
+
}
|
|
13
68
|
|
|
14
|
-
|
|
69
|
+
// QuotaExceededError carries `quota` and `requested` numeric fields per the
|
|
70
|
+
// WebIDL spec (https://webidl.spec.whatwg.org/#quotaexceedederror). DOMException
|
|
71
|
+
// in legacy hosts does not expose these, so always use our subclass.
|
|
72
|
+
export class QuotaExceededError extends FallbackDOMException {
|
|
73
|
+
readonly quota: number | null;
|
|
74
|
+
readonly requested: number | null;
|
|
75
|
+
constructor(
|
|
76
|
+
message: string,
|
|
77
|
+
options: { quota?: number; requested?: number } = {},
|
|
78
|
+
) {
|
|
79
|
+
super(message, 'QuotaExceededError');
|
|
80
|
+
this.quota = options.quota ?? null;
|
|
81
|
+
this.requested = options.requested ?? null;
|
|
82
|
+
}
|
|
15
83
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { NitroModules } from 'react-native-nitro-modules';
|
|
2
2
|
import type { Utils } from '../specs/utils.nitro';
|
|
3
3
|
import type { ABV } from './types';
|
|
4
|
-
import {
|
|
4
|
+
import { binaryLikeToArrayBuffer } from './conversion';
|
|
5
5
|
|
|
6
6
|
let utils: Utils;
|
|
7
7
|
function getNative(): Utils {
|
|
@@ -12,8 +12,13 @@ function getNative(): Utils {
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
export function timingSafeEqual(a: ABV, b: ABV): boolean {
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
// Use binaryLikeToArrayBuffer (not abvToArrayBuffer) so that TypedArray /
|
|
16
|
+
// Buffer views are sliced to their `byteOffset`/`byteLength` window. The
|
|
17
|
+
// zero-copy `abvToArrayBuffer` returns the entire backing buffer, which
|
|
18
|
+
// would (a) compare unrelated bytes and (b) silently fail the byte-length
|
|
19
|
+
// check for any view smaller than its backing.
|
|
20
|
+
const bufA = binaryLikeToArrayBuffer(a);
|
|
21
|
+
const bufB = binaryLikeToArrayBuffer(b);
|
|
17
22
|
|
|
18
23
|
if (bufA.byteLength !== bufB.byteLength) {
|
|
19
24
|
throw new RangeError('Input buffers must have the same byte length');
|
package/src/utils/types.ts
CHANGED
|
@@ -49,7 +49,11 @@ export type DigestAlgorithm =
|
|
|
49
49
|
| 'SHA3-384'
|
|
50
50
|
| 'SHA3-512'
|
|
51
51
|
| 'cSHAKE128'
|
|
52
|
-
| 'cSHAKE256'
|
|
52
|
+
| 'cSHAKE256'
|
|
53
|
+
| 'TurboSHAKE128'
|
|
54
|
+
| 'TurboSHAKE256'
|
|
55
|
+
| 'KT128'
|
|
56
|
+
| 'KT256';
|
|
53
57
|
|
|
54
58
|
export type HashAlgorithm = DigestAlgorithm | 'SHA-224' | 'RIPEMD-160';
|
|
55
59
|
|
|
@@ -74,20 +78,50 @@ export type ECKeyPairAlgorithm = 'ECDSA' | 'ECDH';
|
|
|
74
78
|
export type CFRGKeyPairAlgorithm = 'Ed25519' | 'Ed448' | 'X25519' | 'X448';
|
|
75
79
|
export type CFRGKeyPairType = 'ed25519' | 'ed448' | 'x25519' | 'x448';
|
|
76
80
|
|
|
81
|
+
export type SlhDsaAlgorithm =
|
|
82
|
+
| 'SLH-DSA-SHA2-128s'
|
|
83
|
+
| 'SLH-DSA-SHA2-128f'
|
|
84
|
+
| 'SLH-DSA-SHA2-192s'
|
|
85
|
+
| 'SLH-DSA-SHA2-192f'
|
|
86
|
+
| 'SLH-DSA-SHA2-256s'
|
|
87
|
+
| 'SLH-DSA-SHA2-256f'
|
|
88
|
+
| 'SLH-DSA-SHAKE-128s'
|
|
89
|
+
| 'SLH-DSA-SHAKE-128f'
|
|
90
|
+
| 'SLH-DSA-SHAKE-192s'
|
|
91
|
+
| 'SLH-DSA-SHAKE-192f'
|
|
92
|
+
| 'SLH-DSA-SHAKE-256s'
|
|
93
|
+
| 'SLH-DSA-SHAKE-256f';
|
|
94
|
+
|
|
95
|
+
export type SlhDsaKeyPairType =
|
|
96
|
+
| 'slh-dsa-sha2-128s'
|
|
97
|
+
| 'slh-dsa-sha2-128f'
|
|
98
|
+
| 'slh-dsa-sha2-192s'
|
|
99
|
+
| 'slh-dsa-sha2-192f'
|
|
100
|
+
| 'slh-dsa-sha2-256s'
|
|
101
|
+
| 'slh-dsa-sha2-256f'
|
|
102
|
+
| 'slh-dsa-shake-128s'
|
|
103
|
+
| 'slh-dsa-shake-128f'
|
|
104
|
+
| 'slh-dsa-shake-192s'
|
|
105
|
+
| 'slh-dsa-shake-192f'
|
|
106
|
+
| 'slh-dsa-shake-256s'
|
|
107
|
+
| 'slh-dsa-shake-256f';
|
|
108
|
+
|
|
77
109
|
export type PQCKeyPairAlgorithm =
|
|
78
110
|
| 'ML-DSA-44'
|
|
79
111
|
| 'ML-DSA-65'
|
|
80
112
|
| 'ML-DSA-87'
|
|
81
113
|
| 'ML-KEM-512'
|
|
82
114
|
| 'ML-KEM-768'
|
|
83
|
-
| 'ML-KEM-1024'
|
|
115
|
+
| 'ML-KEM-1024'
|
|
116
|
+
| SlhDsaAlgorithm;
|
|
84
117
|
export type PQCKeyPairType =
|
|
85
118
|
| 'ml-dsa-44'
|
|
86
119
|
| 'ml-dsa-65'
|
|
87
120
|
| 'ml-dsa-87'
|
|
88
121
|
| 'ml-kem-512'
|
|
89
122
|
| 'ml-kem-768'
|
|
90
|
-
| 'ml-kem-1024'
|
|
123
|
+
| 'ml-kem-1024'
|
|
124
|
+
| SlhDsaKeyPairType;
|
|
91
125
|
|
|
92
126
|
export type MlKemAlgorithm = 'ML-KEM-512' | 'ML-KEM-768' | 'ML-KEM-1024';
|
|
93
127
|
|
|
@@ -128,7 +162,8 @@ export type SignVerifyAlgorithm =
|
|
|
128
162
|
| 'Ed448'
|
|
129
163
|
| 'ML-DSA-44'
|
|
130
164
|
| 'ML-DSA-65'
|
|
131
|
-
| 'ML-DSA-87'
|
|
165
|
+
| 'ML-DSA-87'
|
|
166
|
+
| SlhDsaAlgorithm;
|
|
132
167
|
|
|
133
168
|
export type Argon2Algorithm = 'Argon2d' | 'Argon2i' | 'Argon2id';
|
|
134
169
|
|
|
@@ -245,8 +280,13 @@ export type SubtleAlgorithm = {
|
|
|
245
280
|
secretValue?: BufferLike;
|
|
246
281
|
associatedData?: BufferLike;
|
|
247
282
|
version?: number;
|
|
248
|
-
// KMAC parameters
|
|
283
|
+
// KMAC / cSHAKE / KangarooTwelve parameters
|
|
249
284
|
customization?: BufferLike;
|
|
285
|
+
outputLength?: number;
|
|
286
|
+
// TurboSHAKE parameter (RFC 9861 §2.2): single-byte domain separator in
|
|
287
|
+
// [0x01, 0x7F]. Defaults to 0x1F per the WICG WebCrypto Modern Algorithms
|
|
288
|
+
// draft when omitted.
|
|
289
|
+
domainSeparation?: number;
|
|
250
290
|
};
|
|
251
291
|
|
|
252
292
|
export type KeyPairType =
|
|
@@ -254,7 +294,8 @@ export type KeyPairType =
|
|
|
254
294
|
| RSAKeyPairType
|
|
255
295
|
| ECKeyPairType
|
|
256
296
|
| DSAKeyPairType
|
|
257
|
-
| DHKeyPairType
|
|
297
|
+
| DHKeyPairType
|
|
298
|
+
| PQCKeyPairType;
|
|
258
299
|
|
|
259
300
|
export type KeyUsage =
|
|
260
301
|
| 'encrypt'
|
|
@@ -306,10 +347,13 @@ export const kNamedCurveAliases = {
|
|
|
306
347
|
} as const;
|
|
307
348
|
// end TODO
|
|
308
349
|
|
|
350
|
+
export type RawPublicFormat = 'raw-public';
|
|
351
|
+
export type RawPrivateFormat = 'raw-private' | 'raw-seed';
|
|
352
|
+
|
|
309
353
|
export type KeyPairGenConfig = {
|
|
310
|
-
publicFormat?: KFormatType | -1;
|
|
311
|
-
publicType?: KeyEncoding;
|
|
312
|
-
privateFormat?: KFormatType | -1;
|
|
354
|
+
publicFormat?: KFormatType | RawPublicFormat | -1;
|
|
355
|
+
publicType?: KeyEncoding | RawECPointType;
|
|
356
|
+
privateFormat?: KFormatType | RawPrivateFormat | -1;
|
|
313
357
|
privateType?: KeyEncoding;
|
|
314
358
|
cipher?: string;
|
|
315
359
|
passphrase?: ArrayBuffer;
|
|
@@ -324,7 +368,7 @@ export type AsymmetricKeyType =
|
|
|
324
368
|
| CFRGKeyPairType
|
|
325
369
|
| PQCKeyPairType;
|
|
326
370
|
|
|
327
|
-
type JWKkty = 'AES' | 'RSA' | 'EC' | 'oct' | 'OKP';
|
|
371
|
+
type JWKkty = 'AES' | 'RSA' | 'EC' | 'oct' | 'OKP' | 'AKP';
|
|
328
372
|
type JWKuse = 'sig' | 'enc';
|
|
329
373
|
|
|
330
374
|
export interface JWK {
|
|
@@ -349,6 +393,8 @@ export interface JWK {
|
|
|
349
393
|
dp?: string;
|
|
350
394
|
dq?: string;
|
|
351
395
|
qi?: string;
|
|
396
|
+
pub?: string;
|
|
397
|
+
priv?: string;
|
|
352
398
|
ext?: boolean;
|
|
353
399
|
}
|
|
354
400
|
|
|
@@ -356,14 +402,22 @@ export type KTypePrivate = 'pkcs1' | 'pkcs8' | 'sec1';
|
|
|
356
402
|
export type KTypePublic = 'pkcs1' | 'spki';
|
|
357
403
|
export type KType = KTypePrivate | KTypePublic;
|
|
358
404
|
|
|
359
|
-
export type KFormat =
|
|
405
|
+
export type KFormat =
|
|
406
|
+
| 'der'
|
|
407
|
+
| 'pem'
|
|
408
|
+
| 'jwk'
|
|
409
|
+
| 'raw-public'
|
|
410
|
+
| 'raw-private'
|
|
411
|
+
| 'raw-seed';
|
|
360
412
|
|
|
361
413
|
export type DSAEncoding = 'der' | 'ieee-p1363';
|
|
362
414
|
|
|
415
|
+
export type RawECPointType = 'compressed' | 'uncompressed';
|
|
416
|
+
|
|
363
417
|
export type EncodingOptions = {
|
|
364
418
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
365
419
|
key?: any;
|
|
366
|
-
type?: KType;
|
|
420
|
+
type?: KType | RawECPointType;
|
|
367
421
|
encoding?: string;
|
|
368
422
|
dsaEncoding?: DSAEncoding;
|
|
369
423
|
format?: KFormat;
|
|
@@ -373,6 +427,8 @@ export type EncodingOptions = {
|
|
|
373
427
|
saltLength?: number;
|
|
374
428
|
oaepHash?: string;
|
|
375
429
|
oaepLabel?: BinaryLike;
|
|
430
|
+
asymmetricKeyType?: string;
|
|
431
|
+
namedCurve?: string;
|
|
376
432
|
};
|
|
377
433
|
|
|
378
434
|
export interface KeyDetail {
|
|
@@ -407,6 +463,7 @@ export type GenerateKeyPairOptions = {
|
|
|
407
463
|
export type KeyPairKey =
|
|
408
464
|
| ArrayBuffer
|
|
409
465
|
| Buffer
|
|
466
|
+
| CraftzdogBuffer
|
|
410
467
|
| string
|
|
411
468
|
| KeyObject
|
|
412
469
|
| KeyObjectHandle
|
|
@@ -494,9 +551,16 @@ export type CipherOFBType = 'aes-128-ofb' | 'aes-192-ofb' | 'aes-256-ofb';
|
|
|
494
551
|
|
|
495
552
|
export type KeyObjectHandle = KeyObjectHandleType;
|
|
496
553
|
|
|
554
|
+
export type RawDiffieHellmanKeyInput = {
|
|
555
|
+
key: ArrayBuffer | ArrayBufferView | string;
|
|
556
|
+
format: 'raw-public' | 'raw-private' | 'raw-seed';
|
|
557
|
+
asymmetricKeyType: string;
|
|
558
|
+
namedCurve?: string;
|
|
559
|
+
};
|
|
560
|
+
|
|
497
561
|
export type DiffieHellmanOptions = {
|
|
498
|
-
privateKey: KeyObject;
|
|
499
|
-
publicKey: KeyObject;
|
|
562
|
+
privateKey: KeyObject | RawDiffieHellmanKeyInput;
|
|
563
|
+
publicKey: KeyObject | RawDiffieHellmanKeyInput;
|
|
500
564
|
};
|
|
501
565
|
|
|
502
566
|
export type DiffieHellmanCallback = (
|
|
@@ -530,7 +594,8 @@ export type Operation =
|
|
|
530
594
|
| 'encapsulateBits'
|
|
531
595
|
| 'decapsulateBits'
|
|
532
596
|
| 'encapsulateKey'
|
|
533
|
-
| 'decapsulateKey'
|
|
597
|
+
| 'decapsulateKey'
|
|
598
|
+
| 'get key length';
|
|
534
599
|
|
|
535
600
|
export interface KeyPairOptions {
|
|
536
601
|
namedCurve: string;
|
package/src/utils/validation.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Buffer as SBuffer } from 'safe-buffer';
|
|
2
|
-
import type { BinaryLike, BufferLike, KeyUsage } from './types';
|
|
2
|
+
import type { BinaryLike, BufferLike, JWK, KeyUsage } from './types';
|
|
3
3
|
import { lazyDOMException } from './errors';
|
|
4
4
|
|
|
5
5
|
// The maximum buffer size that we'll support in the WebCrypto impl
|
|
@@ -57,6 +57,9 @@ export const validateMaxBufferLength = (
|
|
|
57
57
|
}
|
|
58
58
|
};
|
|
59
59
|
|
|
60
|
+
// Returns the intersection of `usageSet` and the spread `usages`, preserving
|
|
61
|
+
// the spread order. Dedup and canonical ordering are not performed here —
|
|
62
|
+
// the `CryptoKey` constructor runs `getSortedUsages` on every input.
|
|
60
63
|
export const getUsagesUnion = (usageSet: KeyUsage[], ...usages: KeyUsage[]) => {
|
|
61
64
|
const newset: KeyUsage[] = [];
|
|
62
65
|
for (let n = 0; n < usages.length; n++) {
|
|
@@ -67,6 +70,26 @@ export const getUsagesUnion = (usageSet: KeyUsage[], ...usages: KeyUsage[]) => {
|
|
|
67
70
|
return newset;
|
|
68
71
|
};
|
|
69
72
|
|
|
73
|
+
const kCanonicalUsageOrder: readonly KeyUsage[] = [
|
|
74
|
+
'encrypt',
|
|
75
|
+
'decrypt',
|
|
76
|
+
'sign',
|
|
77
|
+
'verify',
|
|
78
|
+
'deriveKey',
|
|
79
|
+
'deriveBits',
|
|
80
|
+
'wrapKey',
|
|
81
|
+
'unwrapKey',
|
|
82
|
+
'encapsulateKey',
|
|
83
|
+
'encapsulateBits',
|
|
84
|
+
'decapsulateKey',
|
|
85
|
+
'decapsulateBits',
|
|
86
|
+
];
|
|
87
|
+
|
|
88
|
+
export function getSortedUsages(usages: KeyUsage[]): KeyUsage[] {
|
|
89
|
+
const set = new Set<KeyUsage>(usages);
|
|
90
|
+
return kCanonicalUsageOrder.filter(usage => set.has(usage));
|
|
91
|
+
}
|
|
92
|
+
|
|
70
93
|
const kKeyOps: {
|
|
71
94
|
[key in KeyUsage]: number;
|
|
72
95
|
} = {
|
|
@@ -120,6 +143,52 @@ export const validateKeyOps = (
|
|
|
120
143
|
}
|
|
121
144
|
};
|
|
122
145
|
|
|
146
|
+
// WebCrypto JWK import structural validation, mirroring Node's
|
|
147
|
+
// `internal/crypto/webcrypto_util.validateJwk` + `validateKeyOps`:
|
|
148
|
+
// - `ext`: if present and false, `extractable` must also be false
|
|
149
|
+
// - `use`: if `keyUsages` is non-empty and `use` is present, must equal
|
|
150
|
+
// the algorithm's expected use ('sig' or 'enc')
|
|
151
|
+
// - `key_ops`: must be an array, must not contain duplicates, and every
|
|
152
|
+
// requested usage must appear in it
|
|
153
|
+
export function validateJwkStructure(
|
|
154
|
+
jwk: JWK,
|
|
155
|
+
extractable: boolean,
|
|
156
|
+
keyUsages: KeyUsage[],
|
|
157
|
+
expectedUse: 'sig' | 'enc',
|
|
158
|
+
): void {
|
|
159
|
+
if (jwk.ext === false && extractable) {
|
|
160
|
+
throw lazyDOMException(
|
|
161
|
+
'JWK "ext" is false but extractable was requested',
|
|
162
|
+
'DataError',
|
|
163
|
+
);
|
|
164
|
+
}
|
|
165
|
+
if (keyUsages.length > 0 && jwk.use !== undefined) {
|
|
166
|
+
if (jwk.use !== expectedUse) {
|
|
167
|
+
throw lazyDOMException('Invalid JWK "use" Parameter', 'DataError');
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
if (jwk.key_ops !== undefined) {
|
|
171
|
+
if (!Array.isArray(jwk.key_ops)) {
|
|
172
|
+
throw lazyDOMException('JWK "key_ops" must be an array', 'DataError');
|
|
173
|
+
}
|
|
174
|
+
const seen = new Set<string>();
|
|
175
|
+
for (const op of jwk.key_ops) {
|
|
176
|
+
if (seen.has(op)) {
|
|
177
|
+
throw lazyDOMException('Duplicate key operation', 'DataError');
|
|
178
|
+
}
|
|
179
|
+
seen.add(op);
|
|
180
|
+
}
|
|
181
|
+
for (const usage of keyUsages) {
|
|
182
|
+
if (!jwk.key_ops.includes(usage)) {
|
|
183
|
+
throw lazyDOMException(
|
|
184
|
+
`JWK "key_ops" does not include requested usage "${usage}"`,
|
|
185
|
+
'DataError',
|
|
186
|
+
);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
123
192
|
export function hasAnyNotIn(set: string[], checks: string[]) {
|
|
124
193
|
for (const s of set) {
|
|
125
194
|
if (!checks.includes(s)) {
|