react-native-quick-crypto 1.0.19 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/QuickCrypto.podspec +12 -38
- package/README.md +2 -0
- package/android/CMakeLists.txt +3 -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 +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 +213 -111
- package/cpp/utils/HybridUtils.hpp +9 -2
- package/cpp/utils/QuickCryptoUtils.hpp +72 -0
- package/deps/simdutf/LICENSE-APACHE +201 -0
- package/deps/simdutf/LICENSE-MIT +18 -0
- package/deps/simdutf/README.md +2782 -0
- package/deps/simdutf/include/simdutf/avx512.h +79 -0
- package/deps/simdutf/include/simdutf/base64_implementation.h +158 -0
- package/deps/simdutf/include/simdutf/base64_tables.h +887 -0
- package/deps/simdutf/include/simdutf/common_defs.h +186 -0
- package/deps/simdutf/include/simdutf/compiler_check.h +50 -0
- package/deps/simdutf/include/simdutf/constexpr_ptr.h +138 -0
- package/deps/simdutf/include/simdutf/encoding_types.h +189 -0
- package/deps/simdutf/include/simdutf/error.h +126 -0
- package/deps/simdutf/include/simdutf/implementation.h +7081 -0
- package/deps/simdutf/include/simdutf/internal/isadetection.h +325 -0
- package/deps/simdutf/include/simdutf/portability.h +285 -0
- package/deps/simdutf/include/simdutf/scalar/ascii.h +86 -0
- package/deps/simdutf/include/simdutf/scalar/atomic_util.h +105 -0
- package/deps/simdutf/include/simdutf/scalar/base64.h +911 -0
- package/deps/simdutf/include/simdutf/scalar/latin1.h +26 -0
- package/deps/simdutf/include/simdutf/scalar/latin1_to_utf16/latin1_to_utf16.h +52 -0
- package/deps/simdutf/include/simdutf/scalar/latin1_to_utf32/latin1_to_utf32.h +27 -0
- package/deps/simdutf/include/simdutf/scalar/latin1_to_utf8/latin1_to_utf8.h +191 -0
- package/deps/simdutf/include/simdutf/scalar/swap_bytes.h +35 -0
- package/deps/simdutf/include/simdutf/scalar/utf16.h +226 -0
- package/deps/simdutf/include/simdutf/scalar/utf16_to_latin1/utf16_to_latin1.h +108 -0
- package/deps/simdutf/include/simdutf/scalar/utf16_to_latin1/valid_utf16_to_latin1.h +40 -0
- package/deps/simdutf/include/simdutf/scalar/utf16_to_utf32/utf16_to_utf32.h +86 -0
- package/deps/simdutf/include/simdutf/scalar/utf16_to_utf32/valid_utf16_to_utf32.h +44 -0
- package/deps/simdutf/include/simdutf/scalar/utf16_to_utf8/utf16_to_utf8.h +295 -0
- package/deps/simdutf/include/simdutf/scalar/utf16_to_utf8/valid_utf16_to_utf8.h +91 -0
- package/deps/simdutf/include/simdutf/scalar/utf32.h +82 -0
- package/deps/simdutf/include/simdutf/scalar/utf32_to_latin1/utf32_to_latin1.h +68 -0
- package/deps/simdutf/include/simdutf/scalar/utf32_to_latin1/valid_utf32_to_latin1.h +67 -0
- package/deps/simdutf/include/simdutf/scalar/utf32_to_utf16/utf32_to_utf16.h +84 -0
- package/deps/simdutf/include/simdutf/scalar/utf32_to_utf16/valid_utf32_to_utf16.h +44 -0
- package/deps/simdutf/include/simdutf/scalar/utf32_to_utf8/utf32_to_utf8.h +142 -0
- package/deps/simdutf/include/simdutf/scalar/utf32_to_utf8/valid_utf32_to_utf8.h +72 -0
- package/deps/simdutf/include/simdutf/scalar/utf8.h +326 -0
- package/deps/simdutf/include/simdutf/scalar/utf8_to_latin1/utf8_to_latin1.h +225 -0
- package/deps/simdutf/include/simdutf/scalar/utf8_to_latin1/valid_utf8_to_latin1.h +87 -0
- package/deps/simdutf/include/simdutf/scalar/utf8_to_utf16/utf8_to_utf16.h +342 -0
- package/deps/simdutf/include/simdutf/scalar/utf8_to_utf16/valid_utf8_to_utf16.h +106 -0
- package/deps/simdutf/include/simdutf/scalar/utf8_to_utf32/utf8_to_utf32.h +299 -0
- package/deps/simdutf/include/simdutf/scalar/utf8_to_utf32/valid_utf8_to_utf32.h +83 -0
- package/deps/simdutf/include/simdutf/simdutf_version.h +26 -0
- package/deps/simdutf/include/simdutf.h +26 -0
- package/deps/simdutf/include/simdutf_c.h +342 -0
- package/deps/simdutf/src/arm64/arm_base64.cpp +791 -0
- package/deps/simdutf/src/arm64/arm_convert_latin1_to_utf16.cpp +24 -0
- package/deps/simdutf/src/arm64/arm_convert_latin1_to_utf32.cpp +24 -0
- package/deps/simdutf/src/arm64/arm_convert_latin1_to_utf8.cpp +70 -0
- package/deps/simdutf/src/arm64/arm_convert_utf16_to_latin1.cpp +61 -0
- package/deps/simdutf/src/arm64/arm_convert_utf16_to_utf32.cpp +185 -0
- package/deps/simdutf/src/arm64/arm_convert_utf16_to_utf8.cpp +780 -0
- package/deps/simdutf/src/arm64/arm_convert_utf32_to_latin1.cpp +60 -0
- package/deps/simdutf/src/arm64/arm_convert_utf32_to_utf16.cpp +208 -0
- package/deps/simdutf/src/arm64/arm_convert_utf32_to_utf8.cpp +505 -0
- package/deps/simdutf/src/arm64/arm_convert_utf8_to_latin1.cpp +69 -0
- package/deps/simdutf/src/arm64/arm_convert_utf8_to_utf16.cpp +313 -0
- package/deps/simdutf/src/arm64/arm_convert_utf8_to_utf32.cpp +179 -0
- package/deps/simdutf/src/arm64/arm_find.cpp +199 -0
- package/deps/simdutf/src/arm64/arm_utf16fix.cpp +185 -0
- package/deps/simdutf/src/arm64/arm_validate_utf16.cpp +165 -0
- package/deps/simdutf/src/arm64/arm_validate_utf32le.cpp +65 -0
- package/deps/simdutf/src/arm64/implementation.cpp +1442 -0
- package/deps/simdutf/src/encoding_types.cpp +67 -0
- package/deps/simdutf/src/error.cpp +3 -0
- package/deps/simdutf/src/fallback/implementation.cpp +589 -0
- package/deps/simdutf/src/generic/ascii_validation.h +50 -0
- package/deps/simdutf/src/generic/base64.h +233 -0
- package/deps/simdutf/src/generic/base64lengths.h +63 -0
- package/deps/simdutf/src/generic/buf_block_reader.h +109 -0
- package/deps/simdutf/src/generic/find.h +75 -0
- package/deps/simdutf/src/generic/utf16/change_endianness.h +24 -0
- package/deps/simdutf/src/generic/utf16/count_code_points_bytemask.h +58 -0
- package/deps/simdutf/src/generic/utf16/to_well_formed.h +93 -0
- package/deps/simdutf/src/generic/utf16/utf32_length_from_utf16.h +15 -0
- package/deps/simdutf/src/generic/utf16/utf8_length_from_utf16.h +35 -0
- package/deps/simdutf/src/generic/utf16/utf8_length_from_utf16_bytemask.h +199 -0
- package/deps/simdutf/src/generic/utf16.h +73 -0
- package/deps/simdutf/src/generic/utf32.h +136 -0
- package/deps/simdutf/src/generic/utf8/utf16_length_from_utf8_bytemask.h +53 -0
- package/deps/simdutf/src/generic/utf8.h +92 -0
- package/deps/simdutf/src/generic/utf8_to_latin1/utf8_to_latin1.h +316 -0
- package/deps/simdutf/src/generic/utf8_to_latin1/valid_utf8_to_latin1.h +78 -0
- package/deps/simdutf/src/generic/utf8_to_utf16/utf8_to_utf16.h +332 -0
- package/deps/simdutf/src/generic/utf8_to_utf16/valid_utf8_to_utf16.h +74 -0
- package/deps/simdutf/src/generic/utf8_to_utf32/utf8_to_utf32.h +318 -0
- package/deps/simdutf/src/generic/utf8_to_utf32/valid_utf8_to_utf32.h +42 -0
- package/deps/simdutf/src/generic/utf8_validation/utf8_lookup4_algorithm.h +223 -0
- package/deps/simdutf/src/generic/utf8_validation/utf8_validator.h +84 -0
- package/deps/simdutf/src/generic/validate_utf16.h +164 -0
- package/deps/simdutf/src/generic/validate_utf32.h +99 -0
- package/deps/simdutf/src/haswell/avx2_base64.cpp +837 -0
- package/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf16.cpp +28 -0
- package/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf32.cpp +20 -0
- package/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf8.cpp +83 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf16_to_latin1.cpp +83 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf16_to_utf32.cpp +210 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf16_to_utf8.cpp +602 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf32_to_latin1.cpp +116 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf32_to_utf16.cpp +164 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf32_to_utf8.cpp +569 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf8_to_latin1.cpp +60 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf8_to_utf16.cpp +195 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf8_to_utf32.cpp +135 -0
- package/deps/simdutf/src/haswell/avx2_utf16fix.cpp +173 -0
- package/deps/simdutf/src/haswell/avx2_validate_utf16.cpp +17 -0
- package/deps/simdutf/src/haswell/implementation.cpp +1447 -0
- package/deps/simdutf/src/icelake/icelake_ascii_validation.inl.cpp +19 -0
- package/deps/simdutf/src/icelake/icelake_base64.inl.cpp +630 -0
- package/deps/simdutf/src/icelake/icelake_common.inl.cpp +37 -0
- package/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf16.inl.cpp +36 -0
- package/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf32.inl.cpp +23 -0
- package/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf8.inl.cpp +107 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf16_to_latin1.inl.cpp +103 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf16_to_utf32.inl.cpp +136 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf16_to_utf8.inl.cpp +206 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf32_to_latin1.inl.cpp +74 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf32_to_utf16.inl.cpp +338 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf32_to_utf8.inl.cpp +574 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf8_to_latin1.inl.cpp +104 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf8_to_utf16.inl.cpp +75 -0
- package/deps/simdutf/src/icelake/icelake_convert_valid_utf8_to_latin1.inl.cpp +69 -0
- package/deps/simdutf/src/icelake/icelake_find.inl.cpp +146 -0
- package/deps/simdutf/src/icelake/icelake_from_utf8.inl.cpp +266 -0
- package/deps/simdutf/src/icelake/icelake_from_valid_utf8.inl.cpp +136 -0
- package/deps/simdutf/src/icelake/icelake_macros.inl.cpp +143 -0
- package/deps/simdutf/src/icelake/icelake_utf16fix.cpp +138 -0
- package/deps/simdutf/src/icelake/icelake_utf32_validation.inl.cpp +63 -0
- package/deps/simdutf/src/icelake/icelake_utf8_common.inl.cpp +753 -0
- package/deps/simdutf/src/icelake/icelake_utf8_length_from_utf16.inl.cpp +269 -0
- package/deps/simdutf/src/icelake/icelake_utf8_validation.inl.cpp +116 -0
- package/deps/simdutf/src/icelake/implementation.cpp +1903 -0
- package/deps/simdutf/src/implementation.cpp +2526 -0
- package/deps/simdutf/src/lasx/implementation.cpp +1531 -0
- package/deps/simdutf/src/lasx/lasx_base64.cpp +695 -0
- package/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf16.cpp +76 -0
- package/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf32.cpp +55 -0
- package/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf8.cpp +65 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf16_to_latin1.cpp +64 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf16_to_utf32.cpp +183 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf16_to_utf8.cpp +550 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf32_to_latin1.cpp +73 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf32_to_utf16.cpp +218 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf32_to_utf8.cpp +589 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf8_to_latin1.cpp +72 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf8_to_utf16.cpp +296 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf8_to_utf32.cpp +190 -0
- package/deps/simdutf/src/lasx/lasx_find.cpp +64 -0
- package/deps/simdutf/src/lasx/lasx_validate_utf16.cpp +13 -0
- package/deps/simdutf/src/lasx/lasx_validate_utf32le.cpp +84 -0
- package/deps/simdutf/src/lsx/implementation.cpp +1417 -0
- package/deps/simdutf/src/lsx/lsx_base64.cpp +675 -0
- package/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf16.cpp +39 -0
- package/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf32.cpp +27 -0
- package/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf8.cpp +56 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf16_to_latin1.cpp +64 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf16_to_utf32.cpp +133 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf16_to_utf8.cpp +518 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf32_to_latin1.cpp +66 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf32_to_utf16.cpp +155 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf32_to_utf8.cpp +459 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf8_to_latin1.cpp +75 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf8_to_utf16.cpp +291 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf8_to_utf32.cpp +179 -0
- package/deps/simdutf/src/lsx/lsx_find.cpp +60 -0
- package/deps/simdutf/src/lsx/lsx_validate_utf16.cpp +13 -0
- package/deps/simdutf/src/lsx/lsx_validate_utf32le.cpp +68 -0
- package/deps/simdutf/src/ppc64/implementation.cpp +992 -0
- package/deps/simdutf/src/ppc64/ppc64_base64.cpp +480 -0
- package/deps/simdutf/src/ppc64/ppc64_base64_internal_tests.cpp +401 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf16.cpp +12 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf32.cpp +12 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf8.cpp +149 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_latin1.cpp +67 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_utf32.cpp +87 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_utf8.cpp +296 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_latin1.cpp +57 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_utf16.cpp +117 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_utf8.cpp +166 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_latin1.cpp +69 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_utf16.cpp +211 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_utf32.cpp +153 -0
- package/deps/simdutf/src/ppc64/ppc64_utf16_to_utf8_tables.h +1011 -0
- package/deps/simdutf/src/ppc64/ppc64_utf8_length_from_latin1.cpp +37 -0
- package/deps/simdutf/src/ppc64/ppc64_validate_utf16.cpp +19 -0
- package/deps/simdutf/src/ppc64/templates.cpp +91 -0
- package/deps/simdutf/src/rvv/implementation.cpp +138 -0
- package/deps/simdutf/src/rvv/rvv_find.cpp +27 -0
- package/deps/simdutf/src/rvv/rvv_helpers.inl.cpp +23 -0
- package/deps/simdutf/src/rvv/rvv_latin1_to.inl.cpp +71 -0
- package/deps/simdutf/src/rvv/rvv_length_from.inl.cpp +164 -0
- package/deps/simdutf/src/rvv/rvv_utf16_to.inl.cpp +399 -0
- package/deps/simdutf/src/rvv/rvv_utf16fix.cpp +110 -0
- package/deps/simdutf/src/rvv/rvv_utf32_to.inl.cpp +307 -0
- package/deps/simdutf/src/rvv/rvv_utf8_to.inl.cpp +435 -0
- package/deps/simdutf/src/rvv/rvv_validate.inl.cpp +275 -0
- package/deps/simdutf/src/simdutf/arm64/begin.h +2 -0
- package/deps/simdutf/src/simdutf/arm64/bitmanipulation.h +34 -0
- package/deps/simdutf/src/simdutf/arm64/end.h +2 -0
- package/deps/simdutf/src/simdutf/arm64/implementation.h +307 -0
- package/deps/simdutf/src/simdutf/arm64/intrinsics.h +10 -0
- package/deps/simdutf/src/simdutf/arm64/simd.h +547 -0
- package/deps/simdutf/src/simdutf/arm64/simd16-inl.h +403 -0
- package/deps/simdutf/src/simdutf/arm64/simd32-inl.h +129 -0
- package/deps/simdutf/src/simdutf/arm64/simd64-inl.h +28 -0
- package/deps/simdutf/src/simdutf/arm64.h +43 -0
- package/deps/simdutf/src/simdutf/fallback/begin.h +1 -0
- package/deps/simdutf/src/simdutf/fallback/bitmanipulation.h +13 -0
- package/deps/simdutf/src/simdutf/fallback/end.h +1 -0
- package/deps/simdutf/src/simdutf/fallback/implementation.h +331 -0
- package/deps/simdutf/src/simdutf/fallback.h +42 -0
- package/deps/simdutf/src/simdutf/haswell/begin.h +15 -0
- package/deps/simdutf/src/simdutf/haswell/bitmanipulation.h +35 -0
- package/deps/simdutf/src/simdutf/haswell/end.h +13 -0
- package/deps/simdutf/src/simdutf/haswell/implementation.h +338 -0
- package/deps/simdutf/src/simdutf/haswell/intrinsics.h +67 -0
- package/deps/simdutf/src/simdutf/haswell/simd.h +363 -0
- package/deps/simdutf/src/simdutf/haswell/simd16-inl.h +261 -0
- package/deps/simdutf/src/simdutf/haswell/simd32-inl.h +111 -0
- package/deps/simdutf/src/simdutf/haswell/simd64-inl.h +34 -0
- package/deps/simdutf/src/simdutf/haswell.h +63 -0
- package/deps/simdutf/src/simdutf/icelake/begin.h +14 -0
- package/deps/simdutf/src/simdutf/icelake/bitmanipulation.h +44 -0
- package/deps/simdutf/src/simdutf/icelake/end.h +12 -0
- package/deps/simdutf/src/simdutf/icelake/implementation.h +346 -0
- package/deps/simdutf/src/simdutf/icelake/intrinsics.h +138 -0
- package/deps/simdutf/src/simdutf/icelake/simd.h +17 -0
- package/deps/simdutf/src/simdutf/icelake/simd16-inl.h +90 -0
- package/deps/simdutf/src/simdutf/icelake/simd32-inl.h +47 -0
- package/deps/simdutf/src/simdutf/icelake.h +81 -0
- package/deps/simdutf/src/simdutf/lasx/begin.h +8 -0
- package/deps/simdutf/src/simdutf/lasx/bitmanipulation.h +25 -0
- package/deps/simdutf/src/simdutf/lasx/end.h +8 -0
- package/deps/simdutf/src/simdutf/lasx/implementation.h +310 -0
- package/deps/simdutf/src/simdutf/lasx/intrinsics.h +319 -0
- package/deps/simdutf/src/simdutf/lasx/simd.h +551 -0
- package/deps/simdutf/src/simdutf/lasx/simd16-inl.h +234 -0
- package/deps/simdutf/src/simdutf/lasx/simd32-inl.h +74 -0
- package/deps/simdutf/src/simdutf/lasx/simd64-inl.h +52 -0
- package/deps/simdutf/src/simdutf/lasx.h +49 -0
- package/deps/simdutf/src/simdutf/lsx/begin.h +2 -0
- package/deps/simdutf/src/simdutf/lsx/bitmanipulation.h +25 -0
- package/deps/simdutf/src/simdutf/lsx/end.h +2 -0
- package/deps/simdutf/src/simdutf/lsx/implementation.h +309 -0
- package/deps/simdutf/src/simdutf/lsx/intrinsics.h +196 -0
- package/deps/simdutf/src/simdutf/lsx/simd.h +421 -0
- package/deps/simdutf/src/simdutf/lsx/simd16-inl.h +242 -0
- package/deps/simdutf/src/simdutf/lsx/simd32-inl.h +69 -0
- package/deps/simdutf/src/simdutf/lsx/simd64-inl.h +50 -0
- package/deps/simdutf/src/simdutf/lsx.h +52 -0
- package/deps/simdutf/src/simdutf/ppc64/begin.h +1 -0
- package/deps/simdutf/src/simdutf/ppc64/bitmanipulation.h +29 -0
- package/deps/simdutf/src/simdutf/ppc64/end.h +1 -0
- package/deps/simdutf/src/simdutf/ppc64/implementation.h +348 -0
- package/deps/simdutf/src/simdutf/ppc64/intrinsics.h +19 -0
- package/deps/simdutf/src/simdutf/ppc64/simd.h +177 -0
- package/deps/simdutf/src/simdutf/ppc64/simd16-inl.h +327 -0
- package/deps/simdutf/src/simdutf/ppc64/simd32-inl.h +247 -0
- package/deps/simdutf/src/simdutf/ppc64/simd8-inl.h +618 -0
- package/deps/simdutf/src/simdutf/ppc64.h +40 -0
- package/deps/simdutf/src/simdutf/rvv/begin.h +7 -0
- package/deps/simdutf/src/simdutf/rvv/end.h +7 -0
- package/deps/simdutf/src/simdutf/rvv/implementation.h +321 -0
- package/deps/simdutf/src/simdutf/rvv/intrinsics.h +131 -0
- package/deps/simdutf/src/simdutf/rvv.h +41 -0
- package/deps/simdutf/src/simdutf/westmere/begin.h +8 -0
- package/deps/simdutf/src/simdutf/westmere/bitmanipulation.h +37 -0
- package/deps/simdutf/src/simdutf/westmere/end.h +8 -0
- package/deps/simdutf/src/simdutf/westmere/implementation.h +338 -0
- package/deps/simdutf/src/simdutf/westmere/intrinsics.h +38 -0
- package/deps/simdutf/src/simdutf/westmere/simd.h +379 -0
- package/deps/simdutf/src/simdutf/westmere/simd16-inl.h +242 -0
- package/deps/simdutf/src/simdutf/westmere/simd32-inl.h +151 -0
- package/deps/simdutf/src/simdutf/westmere/simd64-inl.h +33 -0
- package/deps/simdutf/src/simdutf/westmere.h +59 -0
- package/deps/simdutf/src/simdutf.cpp +152 -0
- package/deps/simdutf/src/simdutf_c.cpp +525 -0
- package/deps/simdutf/src/tables/utf16_to_utf8_tables.h +768 -0
- package/deps/simdutf/src/tables/utf32_to_utf16_tables.h +53 -0
- package/deps/simdutf/src/tables/utf8_to_utf16_tables.h +826 -0
- package/deps/simdutf/src/westmere/implementation.cpp +1479 -0
- package/deps/simdutf/src/westmere/internal/loader.cpp +7 -0
- package/deps/simdutf/src/westmere/internal/write_v_u16_11bits_to_utf8.cpp +66 -0
- package/deps/simdutf/src/westmere/sse_base64.cpp +672 -0
- package/deps/simdutf/src/westmere/sse_convert_latin1_to_utf16.cpp +21 -0
- package/deps/simdutf/src/westmere/sse_convert_latin1_to_utf32.cpp +31 -0
- package/deps/simdutf/src/westmere/sse_convert_latin1_to_utf8.cpp +71 -0
- package/deps/simdutf/src/westmere/sse_convert_utf16_to_latin1.cpp +70 -0
- package/deps/simdutf/src/westmere/sse_convert_utf16_to_utf32.cpp +206 -0
- package/deps/simdutf/src/westmere/sse_convert_utf16_to_utf8.cpp +504 -0
- package/deps/simdutf/src/westmere/sse_convert_utf32_to_latin1.cpp +82 -0
- package/deps/simdutf/src/westmere/sse_convert_utf32_to_utf16.cpp +209 -0
- package/deps/simdutf/src/westmere/sse_convert_utf32_to_utf8.cpp +589 -0
- package/deps/simdutf/src/westmere/sse_convert_utf8_to_latin1.cpp +58 -0
- package/deps/simdutf/src/westmere/sse_convert_utf8_to_utf16.cpp +197 -0
- package/deps/simdutf/src/westmere/sse_convert_utf8_to_utf32.cpp +141 -0
- package/deps/simdutf/src/westmere/sse_utf16fix.cpp +82 -0
- package/deps/simdutf/src/westmere/sse_validate_utf16.cpp +17 -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 +38 -6
- 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/lib/tsconfig.tsbuildinfo +0 -1
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
|
}
|
package/src/utils/conversion.ts
CHANGED
|
@@ -3,16 +3,65 @@ 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(buffer: ArrayBuffer, encoding: string): string;
|
|
10
|
+
stringToBuffer(str: string, encoding: string): ArrayBuffer;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const utils =
|
|
14
|
+
NitroModules.createHybridObject<UtilsWithStringConverter>('Utils');
|
|
15
|
+
|
|
16
|
+
const isHermes =
|
|
17
|
+
(global as { HermesInternal?: unknown }).HermesInternal != null;
|
|
18
|
+
|
|
19
|
+
// v0.78.0, https://github.com/facebook/react-native/commit/c6f12254d16d87978383c08065a626d437e60450
|
|
20
|
+
// Use jsi::String::getStringData() rather than jsi::String::utf16()
|
|
21
|
+
const canGetU16StringFromJsiString = !(
|
|
22
|
+
Platform.constants.reactNativeVersion.major == 0 &&
|
|
23
|
+
Platform.constants.reactNativeVersion.minor < 78
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
// v0.79.0, https://github.com/facebook/react-native/commit/d9d824055e9f24614abd5657f9fc89a6ab3f2da2
|
|
27
|
+
const canCreateJsiStringFromUtf16 = !(
|
|
28
|
+
Platform.constants.reactNativeVersion.major == 0 &&
|
|
29
|
+
Platform.constants.reactNativeVersion.minor < 79
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
const baseNativeEncodings = [
|
|
33
|
+
'hex',
|
|
34
|
+
'base64',
|
|
35
|
+
'base64url',
|
|
36
|
+
'utf8',
|
|
37
|
+
'utf-8',
|
|
38
|
+
'latin1',
|
|
39
|
+
'binary',
|
|
40
|
+
'ascii',
|
|
41
|
+
];
|
|
42
|
+
const nativeStringToBufferEncodings = new Set<string>(baseNativeEncodings);
|
|
43
|
+
const nativeBufferToStringEncodings = new Set<string>(baseNativeEncodings);
|
|
44
|
+
|
|
45
|
+
// The fast and lossless paths for utf16le are only available on Hermes
|
|
46
|
+
if (isHermes) {
|
|
47
|
+
if (canGetU16StringFromJsiString) {
|
|
48
|
+
nativeStringToBufferEncodings.add('utf16le');
|
|
49
|
+
}
|
|
50
|
+
if (canCreateJsiStringFromUtf16) {
|
|
51
|
+
nativeBufferToStringEncodings.add('utf16le');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
8
54
|
|
|
9
55
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
56
|
+
* Returns the underlying ArrayBuffer of a Buffer / TypedArray view **without
|
|
57
|
+
* copying**, ignoring `byteOffset`/`byteLength`. The full backing storage is
|
|
58
|
+
* exposed.
|
|
59
|
+
*
|
|
60
|
+
* Only use this when the caller separately tracks `byteOffset`/`byteLength`
|
|
61
|
+
* and the native receiver needs to write back into the original memory
|
|
62
|
+
* (e.g. `randomFill`). For data that will be read by native crypto, use
|
|
63
|
+
* `binaryLikeToArrayBuffer`/`toArrayBuffer` instead — those slice to the
|
|
64
|
+
* view's region and won't leak unrelated bytes from the backing buffer.
|
|
16
65
|
*/
|
|
17
66
|
export const abvToArrayBuffer = (buf: ABV) => {
|
|
18
67
|
if (CraftzdogBuffer.isBuffer(buf)) {
|
|
@@ -97,7 +146,7 @@ export function binaryLikeToArrayBuffer(
|
|
|
97
146
|
);
|
|
98
147
|
}
|
|
99
148
|
|
|
100
|
-
if (
|
|
149
|
+
if (nativeStringToBufferEncodings.has(encoding)) {
|
|
101
150
|
return utils.stringToBuffer(input, encoding);
|
|
102
151
|
}
|
|
103
152
|
const buffer = CraftzdogBuffer.from(input, encoding);
|
|
@@ -155,19 +204,8 @@ export function binaryLikeToArrayBuffer(
|
|
|
155
204
|
);
|
|
156
205
|
}
|
|
157
206
|
|
|
158
|
-
const nativeEncodings = new Set([
|
|
159
|
-
'hex',
|
|
160
|
-
'base64',
|
|
161
|
-
'base64url',
|
|
162
|
-
'utf8',
|
|
163
|
-
'utf-8',
|
|
164
|
-
'latin1',
|
|
165
|
-
'binary',
|
|
166
|
-
'ascii',
|
|
167
|
-
]);
|
|
168
|
-
|
|
169
207
|
export function ab2str(buf: ArrayBuffer, encoding: string = 'hex'): string {
|
|
170
|
-
if (
|
|
208
|
+
if (nativeBufferToStringEncodings.has(encoding)) {
|
|
171
209
|
return utils.bufferToString(buf, encoding);
|
|
172
210
|
}
|
|
173
211
|
return CraftzdogBuffer.from(buf).toString(encoding);
|
|
@@ -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/x509certificate.ts
CHANGED
|
@@ -78,12 +78,11 @@ export class X509Certificate {
|
|
|
78
78
|
'X509CertificateHandle',
|
|
79
79
|
);
|
|
80
80
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}
|
|
81
|
+
// For string input, route through binaryLikeToArrayBuffer so the result
|
|
82
|
+
// is a tight ArrayBuffer of just the encoded bytes. `Buffer.from(str).buffer`
|
|
83
|
+
// can return a pool-backed ArrayBuffer with byteOffset > 0, exposing
|
|
84
|
+
// unrelated bytes (and giving the wrong byteLength) to native.
|
|
85
|
+
const ab: ArrayBuffer = binaryLikeToArrayBuffer(buffer);
|
|
87
86
|
|
|
88
87
|
this.handle.init(ab);
|
|
89
88
|
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
#! /usr/bin/env python3
|
|
2
|
-
|
|
3
|
-
from pathlib import Path
|
|
4
|
-
import platform
|
|
5
|
-
import shutil
|
|
6
|
-
import subprocess
|
|
7
|
-
import sys
|
|
8
|
-
|
|
9
|
-
ROOT = Path(__file__).parent.parent.parent
|
|
10
|
-
RUST_TARGET = sys.argv[1]
|
|
11
|
-
|
|
12
|
-
subprocess.run(
|
|
13
|
-
["cargo", "build", "--target", sys.argv[1], "--release"], cwd=ROOT / "b3sum"
|
|
14
|
-
)
|
|
15
|
-
|
|
16
|
-
if platform.system() == "Windows":
|
|
17
|
-
original_exe_name = "b3sum.exe"
|
|
18
|
-
else:
|
|
19
|
-
original_exe_name = "b3sum"
|
|
20
|
-
|
|
21
|
-
if platform.system() == "Windows":
|
|
22
|
-
new_exe_name = "b3sum_windows_x64_bin.exe"
|
|
23
|
-
elif platform.system() == "Darwin":
|
|
24
|
-
new_exe_name = "b3sum_macos_x64_bin"
|
|
25
|
-
elif platform.system() == "Linux":
|
|
26
|
-
new_exe_name = "b3sum_linux_x64_bin"
|
|
27
|
-
else:
|
|
28
|
-
raise RuntimeError("Unexpected platform: " + platform.system())
|
|
29
|
-
|
|
30
|
-
# Copy the built binary so that it has the upload name we want.
|
|
31
|
-
out_dir = ROOT / "b3sum/target" / RUST_TARGET / "release"
|
|
32
|
-
original_exe_path = str(out_dir / original_exe_name)
|
|
33
|
-
new_exe_path = str(out_dir / new_exe_name)
|
|
34
|
-
print("copying", repr(original_exe_path), "to", repr(new_exe_path))
|
|
35
|
-
shutil.copyfile(original_exe_path, new_exe_path)
|
|
36
|
-
|
|
37
|
-
# This lets the subsequent upload step get the filepath.
|
|
38
|
-
print("::set-output name=bin_path::" + new_exe_path)
|