react-native-quick-crypto 1.0.0-beta.8 → 1.0.0
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 +145 -6
- package/README.md +14 -27
- package/android/CMakeLists.txt +62 -7
- package/android/build.gradle +12 -2
- package/android/src/main/java/com/margelo/nitro/quickcrypto/QuickCryptoPackage.java +0 -2
- package/app.plugin.js +3 -0
- package/cpp/blake3/HybridBlake3.cpp +118 -0
- package/cpp/blake3/HybridBlake3.hpp +35 -0
- package/cpp/cipher/CCMCipher.cpp +199 -0
- package/cpp/cipher/CCMCipher.hpp +26 -0
- package/cpp/cipher/ChaCha20Cipher.cpp +97 -0
- package/cpp/cipher/ChaCha20Cipher.hpp +25 -0
- package/cpp/cipher/ChaCha20Poly1305Cipher.cpp +170 -0
- package/cpp/cipher/ChaCha20Poly1305Cipher.hpp +30 -0
- package/cpp/cipher/GCMCipher.cpp +68 -0
- package/cpp/cipher/GCMCipher.hpp +14 -0
- package/cpp/cipher/HybridCipher.cpp +322 -0
- package/cpp/cipher/HybridCipher.hpp +68 -0
- package/cpp/cipher/HybridCipherFactory.hpp +105 -0
- package/cpp/cipher/HybridRsaCipher.cpp +348 -0
- package/cpp/cipher/HybridRsaCipher.hpp +29 -0
- package/cpp/cipher/OCBCipher.cpp +55 -0
- package/cpp/cipher/OCBCipher.hpp +19 -0
- package/cpp/cipher/XSalsa20Cipher.cpp +61 -0
- package/cpp/cipher/XSalsa20Cipher.hpp +33 -0
- package/cpp/ec/HybridEcKeyPair.cpp +428 -0
- package/cpp/ec/HybridEcKeyPair.hpp +48 -0
- package/cpp/ed25519/HybridEdKeyPair.cpp +228 -98
- package/cpp/ed25519/HybridEdKeyPair.hpp +42 -56
- package/cpp/hash/HybridHash.cpp +185 -0
- package/cpp/hash/HybridHash.hpp +43 -0
- package/cpp/hmac/HybridHmac.cpp +95 -0
- package/cpp/hmac/HybridHmac.hpp +31 -0
- package/cpp/keys/HybridKeyObjectHandle.cpp +749 -0
- package/cpp/keys/HybridKeyObjectHandle.hpp +51 -0
- package/cpp/keys/KeyObjectData.cpp +268 -0
- package/cpp/keys/KeyObjectData.hpp +71 -0
- package/cpp/keys/node.h +5 -0
- package/cpp/pbkdf2/HybridPbkdf2.cpp +34 -55
- package/cpp/pbkdf2/HybridPbkdf2.hpp +5 -16
- package/cpp/random/HybridRandom.cpp +6 -17
- package/cpp/random/HybridRandom.hpp +5 -6
- package/cpp/rsa/HybridRsaKeyPair.cpp +154 -0
- package/cpp/rsa/HybridRsaKeyPair.hpp +43 -0
- package/cpp/sign/HybridSignHandle.cpp +191 -0
- package/cpp/sign/HybridSignHandle.hpp +36 -0
- package/cpp/sign/HybridVerifyHandle.cpp +158 -0
- package/cpp/sign/HybridVerifyHandle.hpp +36 -0
- package/cpp/sign/SignUtils.hpp +108 -0
- package/cpp/utils/Macros.hpp +68 -0
- package/cpp/utils/Utils.hpp +43 -2
- package/cpp/utils/base64.h +309 -0
- package/deps/blake3/.cargo/config.toml +2 -0
- package/deps/blake3/.git-blame-ignore-revs +2 -0
- package/deps/blake3/.github/workflows/build_b3sum.py +38 -0
- package/deps/blake3/.github/workflows/ci.yml +491 -0
- package/deps/blake3/.github/workflows/tag.yml +43 -0
- package/deps/blake3/.github/workflows/upload_github_release_asset.py +73 -0
- package/deps/blake3/CONTRIBUTING.md +31 -0
- package/deps/blake3/Cargo.toml +135 -0
- package/deps/blake3/LICENSE_A2 +202 -0
- package/deps/blake3/LICENSE_A2LLVM +219 -0
- package/deps/blake3/LICENSE_CC0 +121 -0
- package/deps/blake3/README.md +229 -0
- package/deps/blake3/b3sum/Cargo.lock +513 -0
- package/deps/blake3/b3sum/Cargo.toml +26 -0
- package/deps/blake3/b3sum/README.md +72 -0
- package/deps/blake3/b3sum/src/main.rs +564 -0
- package/deps/blake3/b3sum/src/unit_tests.rs +235 -0
- package/deps/blake3/b3sum/tests/cli_tests.rs +680 -0
- package/deps/blake3/b3sum/what_does_check_do.md +176 -0
- package/deps/blake3/benches/bench.rs +623 -0
- package/deps/blake3/build.rs +389 -0
- package/deps/blake3/c/CMakeLists.txt +383 -0
- package/deps/blake3/c/CMakePresets.json +73 -0
- package/deps/blake3/c/Makefile.testing +82 -0
- package/deps/blake3/c/README.md +403 -0
- package/deps/blake3/c/blake3-config.cmake.in +14 -0
- package/deps/blake3/c/blake3.c +650 -0
- package/deps/blake3/c/blake3.h +86 -0
- package/deps/blake3/c/blake3_avx2.c +326 -0
- package/deps/blake3/c/blake3_avx2_x86-64_unix.S +1815 -0
- package/deps/blake3/c/blake3_avx2_x86-64_windows_gnu.S +1817 -0
- package/deps/blake3/c/blake3_avx2_x86-64_windows_msvc.asm +1828 -0
- package/deps/blake3/c/blake3_avx512.c +1388 -0
- package/deps/blake3/c/blake3_avx512_x86-64_unix.S +4824 -0
- package/deps/blake3/c/blake3_avx512_x86-64_windows_gnu.S +2615 -0
- package/deps/blake3/c/blake3_avx512_x86-64_windows_msvc.asm +2634 -0
- package/deps/blake3/c/blake3_c_rust_bindings/Cargo.toml +32 -0
- package/deps/blake3/c/blake3_c_rust_bindings/README.md +4 -0
- package/deps/blake3/c/blake3_c_rust_bindings/benches/bench.rs +477 -0
- package/deps/blake3/c/blake3_c_rust_bindings/build.rs +253 -0
- package/deps/blake3/c/blake3_c_rust_bindings/cross_test.sh +31 -0
- package/deps/blake3/c/blake3_c_rust_bindings/src/lib.rs +333 -0
- package/deps/blake3/c/blake3_c_rust_bindings/src/test.rs +696 -0
- package/deps/blake3/c/blake3_dispatch.c +332 -0
- package/deps/blake3/c/blake3_impl.h +333 -0
- package/deps/blake3/c/blake3_neon.c +366 -0
- package/deps/blake3/c/blake3_portable.c +160 -0
- package/deps/blake3/c/blake3_sse2.c +566 -0
- package/deps/blake3/c/blake3_sse2_x86-64_unix.S +2291 -0
- package/deps/blake3/c/blake3_sse2_x86-64_windows_gnu.S +2332 -0
- package/deps/blake3/c/blake3_sse2_x86-64_windows_msvc.asm +2350 -0
- package/deps/blake3/c/blake3_sse41.c +560 -0
- package/deps/blake3/c/blake3_sse41_x86-64_unix.S +2028 -0
- package/deps/blake3/c/blake3_sse41_x86-64_windows_gnu.S +2069 -0
- package/deps/blake3/c/blake3_sse41_x86-64_windows_msvc.asm +2089 -0
- package/deps/blake3/c/blake3_tbb.cpp +37 -0
- package/deps/blake3/c/dependencies/CMakeLists.txt +3 -0
- package/deps/blake3/c/dependencies/tbb/CMakeLists.txt +28 -0
- package/deps/blake3/c/example.c +36 -0
- package/deps/blake3/c/example_tbb.c +57 -0
- package/deps/blake3/c/libblake3.pc.in +12 -0
- package/deps/blake3/c/main.c +166 -0
- package/deps/blake3/c/test.py +97 -0
- package/deps/blake3/media/B3.svg +70 -0
- package/deps/blake3/media/BLAKE3.svg +85 -0
- package/deps/blake3/media/speed.svg +1474 -0
- package/deps/blake3/reference_impl/Cargo.toml +8 -0
- package/deps/blake3/reference_impl/README.md +14 -0
- package/deps/blake3/reference_impl/reference_impl.rs +374 -0
- package/deps/blake3/src/ffi_avx2.rs +65 -0
- package/deps/blake3/src/ffi_avx512.rs +169 -0
- package/deps/blake3/src/ffi_neon.rs +82 -0
- package/deps/blake3/src/ffi_sse2.rs +126 -0
- package/deps/blake3/src/ffi_sse41.rs +126 -0
- package/deps/blake3/src/guts.rs +60 -0
- package/deps/blake3/src/hazmat.rs +704 -0
- package/deps/blake3/src/io.rs +64 -0
- package/deps/blake3/src/join.rs +92 -0
- package/deps/blake3/src/lib.rs +1835 -0
- package/deps/blake3/src/platform.rs +587 -0
- package/deps/blake3/src/portable.rs +198 -0
- package/deps/blake3/src/rust_avx2.rs +474 -0
- package/deps/blake3/src/rust_sse2.rs +775 -0
- package/deps/blake3/src/rust_sse41.rs +766 -0
- package/deps/blake3/src/test.rs +1049 -0
- package/deps/blake3/src/traits.rs +227 -0
- package/deps/blake3/src/wasm32_simd.rs +794 -0
- package/deps/blake3/test_vectors/Cargo.toml +19 -0
- package/deps/blake3/test_vectors/cross_test.sh +25 -0
- package/deps/blake3/test_vectors/src/bin/generate.rs +4 -0
- package/deps/blake3/test_vectors/src/lib.rs +350 -0
- package/deps/blake3/test_vectors/test_vectors.json +217 -0
- package/deps/blake3/tools/compiler_version/Cargo.toml +7 -0
- package/deps/blake3/tools/compiler_version/build.rs +6 -0
- package/deps/blake3/tools/compiler_version/src/main.rs +27 -0
- package/deps/blake3/tools/instruction_set_support/Cargo.toml +6 -0
- package/deps/blake3/tools/instruction_set_support/src/main.rs +10 -0
- package/deps/blake3/tools/release.md +16 -0
- package/deps/fastpbkdf2/fastpbkdf2.c +5 -1
- package/deps/ncrypto/ncrypto.cc +4679 -0
- package/deps/ncrypto/ncrypto.h +1625 -0
- package/lib/commonjs/blake3.js +98 -0
- package/lib/commonjs/blake3.js.map +1 -0
- package/lib/commonjs/cipher.js +180 -0
- package/lib/commonjs/cipher.js.map +1 -0
- package/lib/commonjs/constants.js +32 -0
- package/lib/commonjs/constants.js.map +1 -0
- package/lib/commonjs/ec.js +480 -0
- package/lib/commonjs/ec.js.map +1 -0
- package/lib/commonjs/ed.js +214 -2
- package/lib/commonjs/ed.js.map +1 -1
- package/lib/commonjs/expo-plugin/@types.js +2 -0
- package/lib/commonjs/expo-plugin/@types.js.map +1 -0
- package/lib/commonjs/expo-plugin/withRNQC.js +25 -0
- package/lib/commonjs/expo-plugin/withRNQC.js.map +1 -0
- package/lib/commonjs/expo-plugin/withSodiumAndroid.js +25 -0
- package/lib/commonjs/expo-plugin/withSodiumAndroid.js.map +1 -0
- package/lib/commonjs/expo-plugin/withSodiumIos.js +26 -0
- package/lib/commonjs/expo-plugin/withSodiumIos.js.map +1 -0
- package/lib/commonjs/expo-plugin/withXCode.js +51 -0
- package/lib/commonjs/expo-plugin/withXCode.js.map +1 -0
- package/lib/commonjs/hash.js +215 -0
- package/lib/commonjs/hash.js.map +1 -0
- package/lib/commonjs/hmac.js +109 -0
- package/lib/commonjs/hmac.js.map +1 -0
- package/lib/commonjs/index.js +102 -24
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/keys/classes.js +109 -52
- package/lib/commonjs/keys/classes.js.map +1 -1
- package/lib/commonjs/keys/generateKeyPair.js +141 -144
- package/lib/commonjs/keys/generateKeyPair.js.map +1 -1
- package/lib/commonjs/keys/index.js +229 -0
- package/lib/commonjs/keys/index.js.map +1 -1
- package/lib/commonjs/keys/publicCipher.js +152 -0
- package/lib/commonjs/keys/publicCipher.js.map +1 -0
- package/lib/commonjs/keys/signVerify.js +178 -39
- package/lib/commonjs/keys/signVerify.js.map +1 -1
- package/lib/commonjs/keys/utils.js +18 -13
- package/lib/commonjs/keys/utils.js.map +1 -1
- package/lib/commonjs/pbkdf2.js.map +1 -1
- package/lib/commonjs/random.js +6 -0
- package/lib/commonjs/random.js.map +1 -1
- package/lib/commonjs/rsa.js +202 -0
- package/lib/commonjs/rsa.js.map +1 -0
- package/lib/commonjs/specs/blake3.nitro.js +6 -0
- package/lib/commonjs/specs/blake3.nitro.js.map +1 -0
- package/lib/commonjs/specs/cipher.nitro.js +6 -0
- package/lib/commonjs/specs/cipher.nitro.js.map +1 -0
- package/lib/commonjs/specs/ecKeyPair.nitro.js +6 -0
- package/lib/commonjs/specs/ecKeyPair.nitro.js.map +1 -0
- package/lib/commonjs/specs/hash.nitro.js +6 -0
- package/lib/commonjs/specs/hash.nitro.js.map +1 -0
- package/lib/commonjs/specs/hmac.nitro.js +6 -0
- package/lib/commonjs/specs/hmac.nitro.js.map +1 -0
- package/lib/commonjs/specs/rsaCipher.nitro.js +6 -0
- package/lib/commonjs/specs/rsaCipher.nitro.js.map +1 -0
- package/lib/commonjs/specs/rsaKeyPair.nitro.js +6 -0
- package/lib/commonjs/specs/rsaKeyPair.nitro.js.map +1 -0
- package/lib/commonjs/specs/sign.nitro.js +6 -0
- package/lib/commonjs/specs/sign.nitro.js.map +1 -0
- package/lib/commonjs/subtle.js +987 -0
- package/lib/commonjs/subtle.js.map +1 -0
- package/lib/commonjs/utils/cipher.js +64 -0
- package/lib/commonjs/utils/cipher.js.map +1 -0
- package/lib/commonjs/utils/conversion.js +44 -5
- package/lib/commonjs/utils/conversion.js.map +1 -1
- package/lib/commonjs/utils/hashnames.js +2 -1
- package/lib/commonjs/utils/hashnames.js.map +1 -1
- package/lib/commonjs/utils/index.js +11 -0
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/commonjs/utils/noble.js +82 -0
- package/lib/commonjs/utils/noble.js.map +1 -0
- package/lib/commonjs/utils/types.js +32 -17
- package/lib/commonjs/utils/types.js.map +1 -1
- package/lib/commonjs/utils/validation.js +74 -1
- package/lib/commonjs/utils/validation.js.map +1 -1
- package/lib/module/blake3.js +90 -0
- package/lib/module/blake3.js.map +1 -0
- package/lib/module/cipher.js +173 -0
- package/lib/module/cipher.js.map +1 -0
- package/lib/module/constants.js +28 -0
- package/lib/module/constants.js.map +1 -0
- package/lib/module/ec.js +470 -0
- package/lib/module/ec.js.map +1 -0
- package/lib/module/ed.js +212 -3
- package/lib/module/ed.js.map +1 -1
- package/lib/module/expo-plugin/@types.js +2 -0
- package/lib/module/expo-plugin/@types.js.map +1 -0
- package/lib/module/expo-plugin/withRNQC.js +21 -0
- package/lib/module/expo-plugin/withRNQC.js.map +1 -0
- package/lib/module/expo-plugin/withSodiumAndroid.js +20 -0
- package/lib/module/expo-plugin/withSodiumAndroid.js.map +1 -0
- package/lib/module/expo-plugin/withSodiumIos.js +20 -0
- package/lib/module/expo-plugin/withSodiumIos.js.map +1 -0
- package/lib/module/expo-plugin/withXCode.js +46 -0
- package/lib/module/expo-plugin/withXCode.js.map +1 -0
- package/lib/module/hash.js +207 -0
- package/lib/module/hash.js.map +1 -0
- package/lib/module/hmac.js +104 -0
- package/lib/module/hmac.js.map +1 -0
- package/lib/module/index.js +21 -21
- package/lib/module/index.js.map +1 -1
- package/lib/module/keys/classes.js +106 -49
- package/lib/module/keys/classes.js.map +1 -1
- package/lib/module/keys/generateKeyPair.js +134 -143
- package/lib/module/keys/generateKeyPair.js.map +1 -1
- package/lib/module/keys/index.js +161 -22
- package/lib/module/keys/index.js.map +1 -1
- package/lib/module/keys/publicCipher.js +145 -0
- package/lib/module/keys/publicCipher.js.map +1 -0
- package/lib/module/keys/signVerify.js +170 -39
- package/lib/module/keys/signVerify.js.map +1 -1
- package/lib/module/keys/utils.js +16 -12
- package/lib/module/keys/utils.js.map +1 -1
- package/lib/module/pbkdf2.js.map +1 -1
- package/lib/module/random.js +6 -0
- package/lib/module/random.js.map +1 -1
- package/lib/module/rsa.js +194 -0
- package/lib/module/rsa.js.map +1 -0
- package/lib/module/specs/blake3.nitro.js +4 -0
- package/lib/module/specs/blake3.nitro.js.map +1 -0
- package/lib/module/specs/cipher.nitro.js +4 -0
- package/lib/module/specs/cipher.nitro.js.map +1 -0
- package/lib/module/specs/ecKeyPair.nitro.js +4 -0
- package/lib/module/specs/ecKeyPair.nitro.js.map +1 -0
- package/lib/module/specs/hash.nitro.js +4 -0
- package/lib/module/specs/hash.nitro.js.map +1 -0
- package/lib/module/specs/hmac.nitro.js +4 -0
- package/lib/module/specs/hmac.nitro.js.map +1 -0
- package/lib/module/specs/rsaCipher.nitro.js +4 -0
- package/lib/module/specs/rsaCipher.nitro.js.map +1 -0
- package/lib/module/specs/rsaKeyPair.nitro.js +4 -0
- package/lib/module/specs/rsaKeyPair.nitro.js.map +1 -0
- package/lib/module/specs/sign.nitro.js +4 -0
- package/lib/module/specs/sign.nitro.js.map +1 -0
- package/lib/module/subtle.js +982 -0
- package/lib/module/subtle.js.map +1 -0
- package/lib/module/utils/cipher.js +56 -0
- package/lib/module/utils/cipher.js.map +1 -0
- package/lib/module/utils/conversion.js +26 -5
- package/lib/module/utils/conversion.js.map +1 -1
- package/lib/module/utils/hashnames.js +2 -1
- package/lib/module/utils/hashnames.js.map +1 -1
- package/lib/module/utils/index.js +1 -0
- package/lib/module/utils/index.js.map +1 -1
- package/lib/module/utils/noble.js +76 -0
- package/lib/module/utils/noble.js.map +1 -0
- package/lib/module/utils/types.js +32 -17
- package/lib/module/utils/types.js.map +1 -1
- package/lib/module/utils/validation.js +69 -1
- package/lib/module/utils/validation.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/typescript/blake3.d.ts +33 -0
- package/lib/typescript/blake3.d.ts.map +1 -0
- package/lib/typescript/cipher.d.ts +60 -0
- package/lib/typescript/cipher.d.ts.map +1 -0
- package/lib/typescript/constants.d.ts +21 -0
- package/lib/typescript/constants.d.ts.map +1 -0
- package/lib/typescript/ec.d.ts +22 -0
- package/lib/typescript/ec.d.ts.map +1 -0
- package/lib/typescript/ed.d.ts +28 -1
- package/lib/typescript/ed.d.ts.map +1 -1
- package/lib/typescript/expo-plugin/@types.d.ts +8 -0
- package/lib/typescript/expo-plugin/@types.d.ts.map +1 -0
- package/lib/typescript/expo-plugin/withRNQC.d.ts +4 -0
- package/lib/typescript/expo-plugin/withRNQC.d.ts.map +1 -0
- package/lib/typescript/expo-plugin/withSodiumAndroid.d.ts +4 -0
- package/lib/typescript/expo-plugin/withSodiumAndroid.d.ts.map +1 -0
- package/lib/typescript/expo-plugin/withSodiumIos.d.ts +4 -0
- package/lib/typescript/expo-plugin/withSodiumIos.d.ts.map +1 -0
- package/lib/typescript/expo-plugin/withXCode.d.ts +9 -0
- package/lib/typescript/expo-plugin/withXCode.d.ts.map +1 -0
- package/lib/typescript/hash.d.ts +122 -0
- package/lib/typescript/hash.d.ts.map +1 -0
- package/lib/typescript/hmac.d.ts +66 -0
- package/lib/typescript/hmac.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +102 -10
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/keys/classes.d.ts +50 -8
- package/lib/typescript/keys/classes.d.ts.map +1 -1
- package/lib/typescript/keys/generateKeyPair.d.ts +5 -0
- package/lib/typescript/keys/generateKeyPair.d.ts.map +1 -1
- package/lib/typescript/keys/index.d.ts +22 -2
- package/lib/typescript/keys/index.d.ts.map +1 -1
- package/lib/typescript/keys/publicCipher.d.ts +20 -0
- package/lib/typescript/keys/publicCipher.d.ts.map +1 -0
- package/lib/typescript/keys/signVerify.d.ts +28 -0
- package/lib/typescript/keys/signVerify.d.ts.map +1 -1
- package/lib/typescript/keys/utils.d.ts +3 -1
- package/lib/typescript/keys/utils.d.ts.map +1 -1
- package/lib/typescript/pbkdf2.d.ts +1 -1
- package/lib/typescript/pbkdf2.d.ts.map +1 -1
- package/lib/typescript/random.d.ts +6 -0
- package/lib/typescript/random.d.ts.map +1 -1
- package/lib/typescript/rsa.d.ts +19 -0
- package/lib/typescript/rsa.d.ts.map +1 -0
- package/lib/typescript/specs/blake3.nitro.d.ts +15 -0
- package/lib/typescript/specs/blake3.nitro.d.ts.map +1 -0
- package/lib/typescript/specs/cipher.nitro.d.ts +29 -0
- package/lib/typescript/specs/cipher.nitro.d.ts.map +1 -0
- package/lib/typescript/specs/ecKeyPair.nitro.d.ts +20 -0
- package/lib/typescript/specs/ecKeyPair.nitro.d.ts.map +1 -0
- package/lib/typescript/specs/edKeyPair.nitro.d.ts +1 -0
- package/lib/typescript/specs/edKeyPair.nitro.d.ts.map +1 -1
- package/lib/typescript/specs/hash.nitro.d.ts +13 -0
- package/lib/typescript/specs/hash.nitro.d.ts.map +1 -0
- package/lib/typescript/specs/hmac.nitro.d.ts +10 -0
- package/lib/typescript/specs/hmac.nitro.d.ts.map +1 -0
- package/lib/typescript/specs/keyObjectHandle.nitro.d.ts +1 -1
- package/lib/typescript/specs/keyObjectHandle.nitro.d.ts.map +1 -1
- package/lib/typescript/specs/rsaCipher.nitro.d.ts +44 -0
- package/lib/typescript/specs/rsaCipher.nitro.d.ts.map +1 -0
- package/lib/typescript/specs/rsaKeyPair.nitro.d.ts +20 -0
- package/lib/typescript/specs/rsaKeyPair.nitro.d.ts.map +1 -0
- package/lib/typescript/specs/sign.nitro.d.ts +19 -0
- package/lib/typescript/specs/sign.nitro.d.ts.map +1 -0
- package/lib/typescript/subtle.d.ts +17 -0
- package/lib/typescript/subtle.d.ts.map +1 -0
- package/lib/typescript/utils/cipher.d.ts +7 -0
- package/lib/typescript/utils/cipher.d.ts.map +1 -0
- package/lib/typescript/utils/conversion.d.ts +1 -0
- package/lib/typescript/utils/conversion.d.ts.map +1 -1
- package/lib/typescript/utils/hashnames.d.ts +3 -1
- package/lib/typescript/utils/hashnames.d.ts.map +1 -1
- package/lib/typescript/utils/index.d.ts +1 -0
- package/lib/typescript/utils/index.d.ts.map +1 -1
- package/lib/typescript/utils/noble.d.ts +19 -0
- package/lib/typescript/utils/noble.d.ts.map +1 -0
- package/lib/typescript/utils/types.d.ts +125 -23
- package/lib/typescript/utils/types.d.ts.map +1 -1
- package/lib/typescript/utils/validation.d.ts +5 -0
- package/lib/typescript/utils/validation.d.ts.map +1 -1
- package/nitrogen/generated/.gitattributes +1 -0
- package/nitrogen/generated/android/QuickCrypto+autolinking.cmake +30 -1
- package/nitrogen/generated/android/QuickCrypto+autolinking.gradle +1 -1
- package/nitrogen/generated/android/QuickCryptoOnLoad.cpp +115 -1
- package/nitrogen/generated/android/QuickCryptoOnLoad.hpp +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/crypto/QuickCryptoOnLoad.kt +35 -0
- package/nitrogen/generated/ios/QuickCrypto+autolinking.rb +3 -1
- package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Bridge.cpp +1 -1
- package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Bridge.hpp +1 -1
- package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Umbrella.hpp +3 -3
- package/nitrogen/generated/ios/QuickCryptoAutolinking.mm +111 -1
- package/nitrogen/generated/ios/QuickCryptoAutolinking.swift +1 -1
- package/nitrogen/generated/shared/c++/AsymmetricKeyType.hpp +104 -0
- package/nitrogen/generated/shared/c++/CipherArgs.hpp +86 -0
- package/nitrogen/generated/shared/c++/HybridBlake3Spec.cpp +28 -0
- package/nitrogen/generated/shared/c++/HybridBlake3Spec.hpp +76 -0
- package/nitrogen/generated/shared/c++/HybridCipherFactorySpec.cpp +21 -0
- package/nitrogen/generated/shared/c++/HybridCipherFactorySpec.hpp +67 -0
- package/nitrogen/generated/shared/c++/HybridCipherSpec.cpp +28 -0
- package/nitrogen/generated/shared/c++/HybridCipherSpec.hpp +76 -0
- package/nitrogen/generated/shared/c++/HybridEcKeyPairSpec.cpp +29 -0
- package/nitrogen/generated/shared/c++/HybridEcKeyPairSpec.hpp +77 -0
- package/nitrogen/generated/shared/c++/HybridEdKeyPairSpec.cpp +2 -1
- package/nitrogen/generated/shared/c++/HybridEdKeyPairSpec.hpp +5 -4
- package/nitrogen/generated/shared/c++/HybridHashSpec.cpp +26 -0
- package/nitrogen/generated/shared/c++/HybridHashSpec.hpp +75 -0
- package/nitrogen/generated/shared/c++/HybridHmacSpec.cpp +23 -0
- package/nitrogen/generated/shared/c++/HybridHmacSpec.hpp +66 -0
- package/nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.cpp +1 -1
- package/nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.hpp +8 -8
- package/nitrogen/generated/shared/c++/HybridPbkdf2Spec.cpp +1 -1
- package/nitrogen/generated/shared/c++/HybridPbkdf2Spec.hpp +3 -3
- package/nitrogen/generated/shared/c++/HybridRandomSpec.cpp +1 -1
- package/nitrogen/generated/shared/c++/HybridRandomSpec.hpp +3 -3
- package/nitrogen/generated/shared/c++/HybridRsaCipherSpec.cpp +24 -0
- package/nitrogen/generated/shared/c++/HybridRsaCipherSpec.hpp +72 -0
- package/nitrogen/generated/shared/c++/HybridRsaKeyPairSpec.cpp +29 -0
- package/nitrogen/generated/shared/c++/HybridRsaKeyPairSpec.hpp +77 -0
- package/nitrogen/generated/shared/c++/HybridSignHandleSpec.cpp +23 -0
- package/nitrogen/generated/shared/c++/HybridSignHandleSpec.hpp +71 -0
- package/nitrogen/generated/shared/c++/HybridVerifyHandleSpec.cpp +23 -0
- package/nitrogen/generated/shared/c++/HybridVerifyHandleSpec.hpp +71 -0
- package/nitrogen/generated/shared/c++/JWK.hpp +17 -18
- package/nitrogen/generated/shared/c++/JWKkty.hpp +12 -14
- package/nitrogen/generated/shared/c++/JWKuse.hpp +8 -10
- package/nitrogen/generated/shared/c++/KFormatType.hpp +14 -16
- package/nitrogen/generated/shared/c++/KeyDetail.hpp +6 -7
- package/nitrogen/generated/shared/c++/KeyEncoding.hpp +15 -17
- package/nitrogen/generated/shared/c++/KeyObject.hpp +67 -0
- package/nitrogen/generated/shared/c++/KeyType.hpp +11 -13
- package/nitrogen/generated/shared/c++/KeyUsage.hpp +38 -24
- package/nitrogen/generated/shared/c++/NamedCurve.hpp +10 -12
- package/package.json +28 -23
- package/src/blake3.ts +123 -0
- package/src/cipher.ts +335 -0
- package/src/constants.ts +32 -0
- package/src/ec.ts +657 -0
- package/src/ed.ts +297 -13
- package/src/expo-plugin/@types.ts +7 -0
- package/src/expo-plugin/withRNQC.ts +23 -0
- package/src/expo-plugin/withSodiumAndroid.ts +24 -0
- package/src/expo-plugin/withSodiumIos.ts +30 -0
- package/src/expo-plugin/withXCode.ts +55 -0
- package/src/hash.ts +274 -0
- package/src/hmac.ts +135 -0
- package/src/index.ts +20 -20
- package/src/keys/classes.ts +148 -55
- package/src/keys/generateKeyPair.ts +177 -134
- package/src/keys/index.ts +226 -14
- package/src/keys/publicCipher.ts +229 -0
- package/src/keys/signVerify.ts +239 -39
- package/src/keys/utils.ts +24 -18
- package/src/pbkdf2.ts +1 -1
- package/src/random.ts +7 -0
- package/src/rsa.ts +310 -0
- package/src/specs/blake3.nitro.ts +12 -0
- package/src/specs/cipher.nitro.ts +25 -0
- package/src/specs/ecKeyPair.nitro.ts +38 -0
- package/src/specs/edKeyPair.nitro.ts +2 -0
- package/src/specs/hash.nitro.ts +10 -0
- package/src/specs/hmac.nitro.ts +7 -0
- package/src/specs/keyObjectHandle.nitro.ts +1 -1
- package/src/specs/rsaCipher.nitro.ts +65 -0
- package/src/specs/rsaKeyPair.nitro.ts +33 -0
- package/src/specs/sign.nitro.ts +31 -0
- package/src/subtle.ts +1436 -0
- package/src/utils/cipher.ts +60 -0
- package/src/utils/conversion.ts +33 -4
- package/src/utils/hashnames.ts +4 -2
- package/src/utils/index.ts +1 -0
- package/src/utils/noble.ts +85 -0
- package/src/utils/types.ts +209 -29
- package/src/utils/validation.ts +96 -1
- package/lib/module/package.json +0 -1
- package/nitrogen/generated/android/QuickCryptoOnLoad.kt +0 -1
- package/nitrogen/generated/shared/c++/CFRGKeyPairType.hpp +0 -86
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// KeyObject.hpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © 2025 Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#if __has_include(<NitroModules/JSIConverter.hpp>)
|
|
11
|
+
#include <NitroModules/JSIConverter.hpp>
|
|
12
|
+
#else
|
|
13
|
+
#error NitroModules cannot be found! Are you sure you installed NitroModules properly?
|
|
14
|
+
#endif
|
|
15
|
+
#if __has_include(<NitroModules/NitroDefines.hpp>)
|
|
16
|
+
#include <NitroModules/NitroDefines.hpp>
|
|
17
|
+
#else
|
|
18
|
+
#error NitroModules cannot be found! Are you sure you installed NitroModules properly?
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
namespace margelo::nitro::crypto {
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* A struct which can be represented as a JavaScript object (KeyObject).
|
|
29
|
+
*/
|
|
30
|
+
struct KeyObject {
|
|
31
|
+
public:
|
|
32
|
+
bool extractable SWIFT_PRIVATE;
|
|
33
|
+
|
|
34
|
+
public:
|
|
35
|
+
KeyObject() = default;
|
|
36
|
+
explicit KeyObject(bool extractable): extractable(extractable) {}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
} // namespace margelo::nitro::crypto
|
|
40
|
+
|
|
41
|
+
namespace margelo::nitro {
|
|
42
|
+
|
|
43
|
+
// C++ KeyObject <> JS KeyObject (object)
|
|
44
|
+
template <>
|
|
45
|
+
struct JSIConverter<margelo::nitro::crypto::KeyObject> final {
|
|
46
|
+
static inline margelo::nitro::crypto::KeyObject fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
|
|
47
|
+
jsi::Object obj = arg.asObject(runtime);
|
|
48
|
+
return margelo::nitro::crypto::KeyObject(
|
|
49
|
+
JSIConverter<bool>::fromJSI(runtime, obj.getProperty(runtime, "extractable"))
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::crypto::KeyObject& arg) {
|
|
53
|
+
jsi::Object obj(runtime);
|
|
54
|
+
obj.setProperty(runtime, "extractable", JSIConverter<bool>::toJSI(runtime, arg.extractable));
|
|
55
|
+
return obj;
|
|
56
|
+
}
|
|
57
|
+
static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
|
|
58
|
+
if (!value.isObject()) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
jsi::Object obj = value.getObject(runtime);
|
|
62
|
+
if (!JSIConverter<bool>::canConvert(runtime, obj.getProperty(runtime, "extractable"))) return false;
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
} // namespace margelo::nitro
|
|
@@ -2,12 +2,11 @@
|
|
|
2
2
|
/// KeyType.hpp
|
|
3
3
|
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
4
|
/// https://github.com/mrousavy/nitro
|
|
5
|
-
/// Copyright ©
|
|
5
|
+
/// Copyright © 2025 Marc Rousavy @ Margelo
|
|
6
6
|
///
|
|
7
7
|
|
|
8
8
|
#pragma once
|
|
9
9
|
|
|
10
|
-
#include <cmath>
|
|
11
10
|
#if __has_include(<NitroModules/JSIConverter.hpp>)
|
|
12
11
|
#include <NitroModules/JSIConverter.hpp>
|
|
13
12
|
#else
|
|
@@ -34,27 +33,26 @@ namespace margelo::nitro::crypto {
|
|
|
34
33
|
|
|
35
34
|
namespace margelo::nitro {
|
|
36
35
|
|
|
37
|
-
using namespace margelo::nitro::crypto;
|
|
38
|
-
|
|
39
36
|
// C++ KeyType <> JS KeyType (enum)
|
|
40
37
|
template <>
|
|
41
|
-
struct JSIConverter<KeyType> {
|
|
42
|
-
static inline KeyType fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
|
|
38
|
+
struct JSIConverter<margelo::nitro::crypto::KeyType> final {
|
|
39
|
+
static inline margelo::nitro::crypto::KeyType fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
|
|
43
40
|
int enumValue = JSIConverter<int>::fromJSI(runtime, arg);
|
|
44
|
-
return static_cast<KeyType>(enumValue);
|
|
41
|
+
return static_cast<margelo::nitro::crypto::KeyType>(enumValue);
|
|
45
42
|
}
|
|
46
|
-
static inline jsi::Value toJSI(jsi::Runtime& runtime, KeyType arg) {
|
|
43
|
+
static inline jsi::Value toJSI(jsi::Runtime& runtime, margelo::nitro::crypto::KeyType arg) {
|
|
47
44
|
int enumValue = static_cast<int>(arg);
|
|
48
45
|
return JSIConverter<int>::toJSI(runtime, enumValue);
|
|
49
46
|
}
|
|
50
|
-
static inline bool canConvert(jsi::Runtime
|
|
47
|
+
static inline bool canConvert(jsi::Runtime&, const jsi::Value& value) {
|
|
51
48
|
if (!value.isNumber()) {
|
|
52
49
|
return false;
|
|
53
50
|
}
|
|
54
|
-
double
|
|
55
|
-
|
|
56
|
-
if (
|
|
57
|
-
//
|
|
51
|
+
double number = value.getNumber();
|
|
52
|
+
int integer = static_cast<int>(number);
|
|
53
|
+
if (number != integer) {
|
|
54
|
+
// The integer is not the same value as the double - we truncated floating points.
|
|
55
|
+
// Enums are all integers, so the input floating point number is obviously invalid.
|
|
58
56
|
return false;
|
|
59
57
|
}
|
|
60
58
|
// Check if we are within the bounds of the enum.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/// KeyUsage.hpp
|
|
3
3
|
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
4
|
/// https://github.com/mrousavy/nitro
|
|
5
|
-
/// Copyright ©
|
|
5
|
+
/// Copyright © 2025 Marc Rousavy @ Margelo
|
|
6
6
|
///
|
|
7
7
|
|
|
8
8
|
#pragma once
|
|
@@ -35,44 +35,54 @@ namespace margelo::nitro::crypto {
|
|
|
35
35
|
VERIFY SWIFT_NAME(verify) = 3,
|
|
36
36
|
DERIVEKEY SWIFT_NAME(derivekey) = 4,
|
|
37
37
|
DERIVEBITS SWIFT_NAME(derivebits) = 5,
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
ENCAPSULATEBITS SWIFT_NAME(encapsulatebits) = 6,
|
|
39
|
+
DECAPSULATEBITS SWIFT_NAME(decapsulatebits) = 7,
|
|
40
|
+
ENCAPSULATEKEY SWIFT_NAME(encapsulatekey) = 8,
|
|
41
|
+
DECAPSULATEKEY SWIFT_NAME(decapsulatekey) = 9,
|
|
42
|
+
WRAPKEY SWIFT_NAME(wrapkey) = 10,
|
|
43
|
+
UNWRAPKEY SWIFT_NAME(unwrapkey) = 11,
|
|
40
44
|
} CLOSED_ENUM;
|
|
41
45
|
|
|
42
46
|
} // namespace margelo::nitro::crypto
|
|
43
47
|
|
|
44
48
|
namespace margelo::nitro {
|
|
45
49
|
|
|
46
|
-
using namespace margelo::nitro::crypto;
|
|
47
|
-
|
|
48
50
|
// C++ KeyUsage <> JS KeyUsage (union)
|
|
49
51
|
template <>
|
|
50
|
-
struct JSIConverter<KeyUsage> {
|
|
51
|
-
static inline KeyUsage fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
|
|
52
|
+
struct JSIConverter<margelo::nitro::crypto::KeyUsage> final {
|
|
53
|
+
static inline margelo::nitro::crypto::KeyUsage fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
|
|
52
54
|
std::string unionValue = JSIConverter<std::string>::fromJSI(runtime, arg);
|
|
53
55
|
switch (hashString(unionValue.c_str(), unionValue.size())) {
|
|
54
|
-
case hashString("encrypt"): return KeyUsage::ENCRYPT;
|
|
55
|
-
case hashString("decrypt"): return KeyUsage::DECRYPT;
|
|
56
|
-
case hashString("sign"): return KeyUsage::SIGN;
|
|
57
|
-
case hashString("verify"): return KeyUsage::VERIFY;
|
|
58
|
-
case hashString("deriveKey"): return KeyUsage::DERIVEKEY;
|
|
59
|
-
case hashString("deriveBits"): return KeyUsage::DERIVEBITS;
|
|
60
|
-
case hashString("
|
|
61
|
-
case hashString("
|
|
56
|
+
case hashString("encrypt"): return margelo::nitro::crypto::KeyUsage::ENCRYPT;
|
|
57
|
+
case hashString("decrypt"): return margelo::nitro::crypto::KeyUsage::DECRYPT;
|
|
58
|
+
case hashString("sign"): return margelo::nitro::crypto::KeyUsage::SIGN;
|
|
59
|
+
case hashString("verify"): return margelo::nitro::crypto::KeyUsage::VERIFY;
|
|
60
|
+
case hashString("deriveKey"): return margelo::nitro::crypto::KeyUsage::DERIVEKEY;
|
|
61
|
+
case hashString("deriveBits"): return margelo::nitro::crypto::KeyUsage::DERIVEBITS;
|
|
62
|
+
case hashString("encapsulateBits"): return margelo::nitro::crypto::KeyUsage::ENCAPSULATEBITS;
|
|
63
|
+
case hashString("decapsulateBits"): return margelo::nitro::crypto::KeyUsage::DECAPSULATEBITS;
|
|
64
|
+
case hashString("encapsulateKey"): return margelo::nitro::crypto::KeyUsage::ENCAPSULATEKEY;
|
|
65
|
+
case hashString("decapsulateKey"): return margelo::nitro::crypto::KeyUsage::DECAPSULATEKEY;
|
|
66
|
+
case hashString("wrapKey"): return margelo::nitro::crypto::KeyUsage::WRAPKEY;
|
|
67
|
+
case hashString("unwrapKey"): return margelo::nitro::crypto::KeyUsage::UNWRAPKEY;
|
|
62
68
|
default: [[unlikely]]
|
|
63
69
|
throw std::invalid_argument("Cannot convert \"" + unionValue + "\" to enum KeyUsage - invalid value!");
|
|
64
70
|
}
|
|
65
71
|
}
|
|
66
|
-
static inline jsi::Value toJSI(jsi::Runtime& runtime, KeyUsage arg) {
|
|
72
|
+
static inline jsi::Value toJSI(jsi::Runtime& runtime, margelo::nitro::crypto::KeyUsage arg) {
|
|
67
73
|
switch (arg) {
|
|
68
|
-
case KeyUsage::ENCRYPT: return JSIConverter<std::string>::toJSI(runtime, "encrypt");
|
|
69
|
-
case KeyUsage::DECRYPT: return JSIConverter<std::string>::toJSI(runtime, "decrypt");
|
|
70
|
-
case KeyUsage::SIGN: return JSIConverter<std::string>::toJSI(runtime, "sign");
|
|
71
|
-
case KeyUsage::VERIFY: return JSIConverter<std::string>::toJSI(runtime, "verify");
|
|
72
|
-
case KeyUsage::DERIVEKEY: return JSIConverter<std::string>::toJSI(runtime, "deriveKey");
|
|
73
|
-
case KeyUsage::DERIVEBITS: return JSIConverter<std::string>::toJSI(runtime, "deriveBits");
|
|
74
|
-
case KeyUsage::
|
|
75
|
-
case KeyUsage::
|
|
74
|
+
case margelo::nitro::crypto::KeyUsage::ENCRYPT: return JSIConverter<std::string>::toJSI(runtime, "encrypt");
|
|
75
|
+
case margelo::nitro::crypto::KeyUsage::DECRYPT: return JSIConverter<std::string>::toJSI(runtime, "decrypt");
|
|
76
|
+
case margelo::nitro::crypto::KeyUsage::SIGN: return JSIConverter<std::string>::toJSI(runtime, "sign");
|
|
77
|
+
case margelo::nitro::crypto::KeyUsage::VERIFY: return JSIConverter<std::string>::toJSI(runtime, "verify");
|
|
78
|
+
case margelo::nitro::crypto::KeyUsage::DERIVEKEY: return JSIConverter<std::string>::toJSI(runtime, "deriveKey");
|
|
79
|
+
case margelo::nitro::crypto::KeyUsage::DERIVEBITS: return JSIConverter<std::string>::toJSI(runtime, "deriveBits");
|
|
80
|
+
case margelo::nitro::crypto::KeyUsage::ENCAPSULATEBITS: return JSIConverter<std::string>::toJSI(runtime, "encapsulateBits");
|
|
81
|
+
case margelo::nitro::crypto::KeyUsage::DECAPSULATEBITS: return JSIConverter<std::string>::toJSI(runtime, "decapsulateBits");
|
|
82
|
+
case margelo::nitro::crypto::KeyUsage::ENCAPSULATEKEY: return JSIConverter<std::string>::toJSI(runtime, "encapsulateKey");
|
|
83
|
+
case margelo::nitro::crypto::KeyUsage::DECAPSULATEKEY: return JSIConverter<std::string>::toJSI(runtime, "decapsulateKey");
|
|
84
|
+
case margelo::nitro::crypto::KeyUsage::WRAPKEY: return JSIConverter<std::string>::toJSI(runtime, "wrapKey");
|
|
85
|
+
case margelo::nitro::crypto::KeyUsage::UNWRAPKEY: return JSIConverter<std::string>::toJSI(runtime, "unwrapKey");
|
|
76
86
|
default: [[unlikely]]
|
|
77
87
|
throw std::invalid_argument("Cannot convert KeyUsage to JS - invalid value: "
|
|
78
88
|
+ std::to_string(static_cast<int>(arg)) + "!");
|
|
@@ -90,6 +100,10 @@ namespace margelo::nitro {
|
|
|
90
100
|
case hashString("verify"):
|
|
91
101
|
case hashString("deriveKey"):
|
|
92
102
|
case hashString("deriveBits"):
|
|
103
|
+
case hashString("encapsulateBits"):
|
|
104
|
+
case hashString("decapsulateBits"):
|
|
105
|
+
case hashString("encapsulateKey"):
|
|
106
|
+
case hashString("decapsulateKey"):
|
|
93
107
|
case hashString("wrapKey"):
|
|
94
108
|
case hashString("unwrapKey"):
|
|
95
109
|
return true;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/// NamedCurve.hpp
|
|
3
3
|
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
4
|
/// https://github.com/mrousavy/nitro
|
|
5
|
-
/// Copyright ©
|
|
5
|
+
/// Copyright © 2025 Marc Rousavy @ Margelo
|
|
6
6
|
///
|
|
7
7
|
|
|
8
8
|
#pragma once
|
|
@@ -38,26 +38,24 @@ namespace margelo::nitro::crypto {
|
|
|
38
38
|
|
|
39
39
|
namespace margelo::nitro {
|
|
40
40
|
|
|
41
|
-
using namespace margelo::nitro::crypto;
|
|
42
|
-
|
|
43
41
|
// C++ NamedCurve <> JS NamedCurve (union)
|
|
44
42
|
template <>
|
|
45
|
-
struct JSIConverter<NamedCurve> {
|
|
46
|
-
static inline NamedCurve fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
|
|
43
|
+
struct JSIConverter<margelo::nitro::crypto::NamedCurve> final {
|
|
44
|
+
static inline margelo::nitro::crypto::NamedCurve fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
|
|
47
45
|
std::string unionValue = JSIConverter<std::string>::fromJSI(runtime, arg);
|
|
48
46
|
switch (hashString(unionValue.c_str(), unionValue.size())) {
|
|
49
|
-
case hashString("P-256"): return NamedCurve::P_256;
|
|
50
|
-
case hashString("P-384"): return NamedCurve::P_384;
|
|
51
|
-
case hashString("P-521"): return NamedCurve::P_521;
|
|
47
|
+
case hashString("P-256"): return margelo::nitro::crypto::NamedCurve::P_256;
|
|
48
|
+
case hashString("P-384"): return margelo::nitro::crypto::NamedCurve::P_384;
|
|
49
|
+
case hashString("P-521"): return margelo::nitro::crypto::NamedCurve::P_521;
|
|
52
50
|
default: [[unlikely]]
|
|
53
51
|
throw std::invalid_argument("Cannot convert \"" + unionValue + "\" to enum NamedCurve - invalid value!");
|
|
54
52
|
}
|
|
55
53
|
}
|
|
56
|
-
static inline jsi::Value toJSI(jsi::Runtime& runtime, NamedCurve arg) {
|
|
54
|
+
static inline jsi::Value toJSI(jsi::Runtime& runtime, margelo::nitro::crypto::NamedCurve arg) {
|
|
57
55
|
switch (arg) {
|
|
58
|
-
case NamedCurve::P_256: return JSIConverter<std::string>::toJSI(runtime, "P-256");
|
|
59
|
-
case NamedCurve::P_384: return JSIConverter<std::string>::toJSI(runtime, "P-384");
|
|
60
|
-
case NamedCurve::P_521: return JSIConverter<std::string>::toJSI(runtime, "P-521");
|
|
56
|
+
case margelo::nitro::crypto::NamedCurve::P_256: return JSIConverter<std::string>::toJSI(runtime, "P-256");
|
|
57
|
+
case margelo::nitro::crypto::NamedCurve::P_384: return JSIConverter<std::string>::toJSI(runtime, "P-384");
|
|
58
|
+
case margelo::nitro::crypto::NamedCurve::P_521: return JSIConverter<std::string>::toJSI(runtime, "P-521");
|
|
61
59
|
default: [[unlikely]]
|
|
62
60
|
throw std::invalid_argument("Cannot convert NamedCurve to JS - invalid value: "
|
|
63
61
|
+ std::to_string(static_cast<int>(arg)) + "!");
|
package/package.json
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-quick-crypto",
|
|
3
|
-
"version": "1.0.0
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "A fast implementation of Node's `crypto` module written in C/C++ JSI",
|
|
5
|
-
"type": "module",
|
|
6
5
|
"main": "lib/commonjs/index",
|
|
7
6
|
"module": "lib/module/index",
|
|
8
7
|
"types": "lib/typescript/index.d.ts",
|
|
@@ -10,6 +9,7 @@
|
|
|
10
9
|
"source": "src/index",
|
|
11
10
|
"scripts": {
|
|
12
11
|
"clean": "del-cli android/build lib",
|
|
12
|
+
"clean:deep": "bun run clean && del-cli node_modules",
|
|
13
13
|
"tsc": "tsc --noEmit",
|
|
14
14
|
"typescript": "tsc --noEmit",
|
|
15
15
|
"lint": "eslint \"**/*.{js,ts,tsx}\"",
|
|
@@ -33,9 +33,9 @@
|
|
|
33
33
|
"deps",
|
|
34
34
|
"nitrogen",
|
|
35
35
|
"react-native.config.js",
|
|
36
|
-
"app.plugin.js",
|
|
37
36
|
"*.podspec",
|
|
38
37
|
"README.md",
|
|
38
|
+
"app.plugin.js",
|
|
39
39
|
"!**/__tests__",
|
|
40
40
|
"!**/__fixtures__",
|
|
41
41
|
"!**/__mocks__"
|
|
@@ -45,9 +45,13 @@
|
|
|
45
45
|
"ios",
|
|
46
46
|
"android",
|
|
47
47
|
"jsi",
|
|
48
|
+
"nitro",
|
|
48
49
|
"crypto",
|
|
50
|
+
"cryptography",
|
|
51
|
+
"cryptocurrency",
|
|
49
52
|
"c++",
|
|
50
53
|
"fast",
|
|
54
|
+
"quick",
|
|
51
55
|
"web3"
|
|
52
56
|
],
|
|
53
57
|
"repository": {
|
|
@@ -68,40 +72,41 @@
|
|
|
68
72
|
"registry": "https://registry.npmjs.org/"
|
|
69
73
|
},
|
|
70
74
|
"dependencies": {
|
|
71
|
-
"@craftzdog/react-native-buffer": "6.0
|
|
75
|
+
"@craftzdog/react-native-buffer": "6.1.0",
|
|
72
76
|
"events": "3.3.0",
|
|
73
|
-
"
|
|
74
|
-
"react-native-quick-base64": "2.
|
|
77
|
+
"expo-build-properties": "0.14.6",
|
|
78
|
+
"react-native-quick-base64": "2.2.2",
|
|
75
79
|
"readable-stream": "4.5.2",
|
|
76
|
-
"
|
|
80
|
+
"safe-buffer": "^5.2.1",
|
|
77
81
|
"util": "0.12.5"
|
|
78
82
|
},
|
|
79
83
|
"devDependencies": {
|
|
80
|
-
"@eslint/compat": "^1.1.1",
|
|
81
|
-
"@eslint/js": "9.16.0",
|
|
82
|
-
"@release-it/bumper": "6.0.1",
|
|
83
84
|
"@types/jest": "29.5.11",
|
|
84
|
-
"@types/node": "
|
|
85
|
+
"@types/node": "24.3.0",
|
|
85
86
|
"@types/react": "18.3.3",
|
|
86
|
-
"@types/readable-stream": "4.0.
|
|
87
|
-
"del-cli": "
|
|
88
|
-
"
|
|
89
|
-
"eslint-plugin-react-native": "^4.1.0",
|
|
87
|
+
"@types/readable-stream": "4.0.18",
|
|
88
|
+
"del-cli": "7.0.0",
|
|
89
|
+
"expo": "^54.0.25",
|
|
90
90
|
"jest": "29.7.0",
|
|
91
|
-
"nitro-codegen": "0.
|
|
92
|
-
"
|
|
93
|
-
"react-native-
|
|
94
|
-
"release-it": "17.6.0",
|
|
95
|
-
"typescript": "5.1.6",
|
|
96
|
-
"typescript-eslint": "^8.1.0"
|
|
91
|
+
"nitro-codegen": "0.29.1",
|
|
92
|
+
"react-native-builder-bob": "0.40.15",
|
|
93
|
+
"react-native-nitro-modules": "0.29.1"
|
|
97
94
|
},
|
|
98
95
|
"peerDependencies": {
|
|
99
96
|
"react": "*",
|
|
100
|
-
"react-native": "*"
|
|
97
|
+
"react-native": "*",
|
|
98
|
+
"react-native-nitro-modules": ">=0.29.1",
|
|
99
|
+
"expo": ">=48.0.0"
|
|
100
|
+
},
|
|
101
|
+
"peerDependenciesMeta": {
|
|
102
|
+
"expo": {
|
|
103
|
+
"optional": true
|
|
104
|
+
}
|
|
101
105
|
},
|
|
102
106
|
"release-it": {
|
|
103
107
|
"npm": {
|
|
104
|
-
"publish": true
|
|
108
|
+
"publish": true,
|
|
109
|
+
"skipChecks": true
|
|
105
110
|
},
|
|
106
111
|
"git": false,
|
|
107
112
|
"github": {
|
package/src/blake3.ts
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { NitroModules } from 'react-native-nitro-modules';
|
|
2
|
+
import { Buffer } from '@craftzdog/react-native-buffer';
|
|
3
|
+
import type { Blake3 as NativeBlake3 } from './specs/blake3.nitro';
|
|
4
|
+
import type { BinaryLike, Encoding } from './utils';
|
|
5
|
+
import { binaryLikeToArrayBuffer, ab2str } from './utils';
|
|
6
|
+
|
|
7
|
+
const BLAKE3_KEY_LEN = 32;
|
|
8
|
+
const BLAKE3_OUT_LEN = 32;
|
|
9
|
+
|
|
10
|
+
export interface Blake3Options {
|
|
11
|
+
dkLen?: number;
|
|
12
|
+
key?: Uint8Array;
|
|
13
|
+
context?: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export class Blake3 {
|
|
17
|
+
private native: NativeBlake3;
|
|
18
|
+
private mode: 'hash' | 'keyed' | 'deriveKey';
|
|
19
|
+
private keyData?: Uint8Array;
|
|
20
|
+
private contextData?: string;
|
|
21
|
+
|
|
22
|
+
constructor(opts?: Blake3Options) {
|
|
23
|
+
this.native = NitroModules.createHybridObject<NativeBlake3>('Blake3');
|
|
24
|
+
|
|
25
|
+
if (opts?.key && opts?.context) {
|
|
26
|
+
throw new Error(
|
|
27
|
+
'BLAKE3: cannot use both key and context options together',
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (opts?.key) {
|
|
32
|
+
if (opts.key.length !== BLAKE3_KEY_LEN) {
|
|
33
|
+
throw new Error(`BLAKE3: key must be exactly ${BLAKE3_KEY_LEN} bytes`);
|
|
34
|
+
}
|
|
35
|
+
this.mode = 'keyed';
|
|
36
|
+
this.keyData = opts.key;
|
|
37
|
+
this.native.initKeyed(opts.key.buffer as ArrayBuffer);
|
|
38
|
+
} else if (opts?.context !== undefined) {
|
|
39
|
+
if (typeof opts.context !== 'string' || opts.context.length === 0) {
|
|
40
|
+
throw new Error('BLAKE3: context must be a non-empty string');
|
|
41
|
+
}
|
|
42
|
+
this.mode = 'deriveKey';
|
|
43
|
+
this.contextData = opts.context;
|
|
44
|
+
this.native.initDeriveKey(opts.context);
|
|
45
|
+
} else {
|
|
46
|
+
this.mode = 'hash';
|
|
47
|
+
this.native.initHash();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
update(data: BinaryLike, inputEncoding?: Encoding): this {
|
|
52
|
+
const buffer = binaryLikeToArrayBuffer(data, inputEncoding ?? 'utf8');
|
|
53
|
+
this.native.update(buffer);
|
|
54
|
+
return this;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
digest(): Buffer;
|
|
58
|
+
digest(encoding: Encoding): string;
|
|
59
|
+
digest(length: number): Buffer;
|
|
60
|
+
digest(encodingOrLength?: Encoding | number): Buffer | string {
|
|
61
|
+
let length: number | undefined;
|
|
62
|
+
let encoding: Encoding | undefined;
|
|
63
|
+
|
|
64
|
+
if (typeof encodingOrLength === 'number') {
|
|
65
|
+
length = encodingOrLength;
|
|
66
|
+
} else if (encodingOrLength) {
|
|
67
|
+
encoding = encodingOrLength;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const result = this.native.digest(length);
|
|
71
|
+
|
|
72
|
+
if (encoding && encoding !== 'buffer') {
|
|
73
|
+
return ab2str(result, encoding);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return Buffer.from(result);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
digestLength(length: number): Buffer {
|
|
80
|
+
return Buffer.from(this.native.digest(length));
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
reset(): this {
|
|
84
|
+
this.native.reset();
|
|
85
|
+
return this;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
copy(): Blake3 {
|
|
89
|
+
const copied = new Blake3();
|
|
90
|
+
// Replace the native with a copy
|
|
91
|
+
copied.native = this.native.copy() as NativeBlake3;
|
|
92
|
+
copied.mode = this.mode;
|
|
93
|
+
copied.keyData = this.keyData;
|
|
94
|
+
copied.contextData = this.contextData;
|
|
95
|
+
return copied;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
static getVersion(): string {
|
|
99
|
+
const native = NitroModules.createHybridObject<NativeBlake3>('Blake3');
|
|
100
|
+
native.initHash();
|
|
101
|
+
return native.getVersion();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export function createBlake3(opts?: Blake3Options): Blake3 {
|
|
106
|
+
return new Blake3(opts);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export function blake3(data: BinaryLike, opts?: Blake3Options): Uint8Array {
|
|
110
|
+
const hasher = new Blake3(opts);
|
|
111
|
+
hasher.update(data);
|
|
112
|
+
const length = opts?.dkLen ?? BLAKE3_OUT_LEN;
|
|
113
|
+
const result = hasher.digestLength(length);
|
|
114
|
+
return new Uint8Array(result);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
blake3.create = createBlake3;
|
|
118
|
+
|
|
119
|
+
export const blake3Exports = {
|
|
120
|
+
Blake3,
|
|
121
|
+
createBlake3,
|
|
122
|
+
blake3,
|
|
123
|
+
};
|