react-native-quick-crypto 1.0.0-beta.2 → 1.0.0-beta.21
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 +143 -7
- package/README.md +12 -6
- package/android/CMakeLists.txt +82 -21
- package/android/build.gradle +47 -4
- package/android/src/main/cpp/cpp-adapter.cpp +3 -10
- package/android/src/main/java/com/margelo/nitro/quickcrypto/QuickCryptoPackage.java +13 -10
- 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/HybridCipher.cpp +322 -0
- package/cpp/cipher/HybridCipher.hpp +68 -0
- package/cpp/cipher/HybridCipherFactory.hpp +97 -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 +300 -0
- package/cpp/ed25519/HybridEdKeyPair.hpp +63 -0
- 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 +243 -0
- package/cpp/keys/HybridKeyObjectHandle.hpp +42 -0
- package/cpp/keys/KeyObjectData.cpp +226 -0
- package/cpp/keys/KeyObjectData.hpp +71 -0
- package/cpp/keys/node.h +5 -0
- package/cpp/pbkdf2/HybridPbkdf2.cpp +51 -0
- package/cpp/pbkdf2/HybridPbkdf2.hpp +24 -0
- package/cpp/random/HybridRandom.cpp +32 -18
- package/cpp/random/HybridRandom.hpp +18 -30
- package/cpp/rsa/HybridRsaKeyPair.cpp +154 -0
- package/cpp/rsa/HybridRsaKeyPair.hpp +43 -0
- package/cpp/utils/Macros.hpp +68 -0
- package/cpp/utils/Utils.hpp +53 -1
- 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 +356 -0
- package/deps/fastpbkdf2/fastpbkdf2.h +68 -0
- 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/ec.js +344 -0
- package/lib/commonjs/ec.js.map +1 -0
- package/lib/commonjs/ed.js +185 -0
- package/lib/commonjs/ed.js.map +1 -0
- 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 +152 -32
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/keys/classes.js +250 -0
- package/lib/commonjs/keys/classes.js.map +1 -0
- package/lib/commonjs/keys/generateKeyPair.js +102 -0
- package/lib/commonjs/keys/generateKeyPair.js.map +1 -0
- package/lib/commonjs/keys/index.js +89 -0
- package/lib/commonjs/keys/index.js.map +1 -0
- package/lib/commonjs/keys/signVerify.js +41 -0
- package/lib/commonjs/keys/signVerify.js.map +1 -0
- package/lib/commonjs/keys/utils.js +123 -0
- package/lib/commonjs/keys/utils.js.map +1 -0
- package/lib/commonjs/pbkdf2.js +89 -0
- package/lib/commonjs/pbkdf2.js.map +1 -0
- package/lib/commonjs/random.js +9 -3
- package/lib/commonjs/random.js.map +1 -1
- package/lib/commonjs/rsa.js +129 -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/edKeyPair.nitro.js +6 -0
- package/lib/commonjs/specs/edKeyPair.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/keyObjectHandle.nitro.js +6 -0
- package/lib/commonjs/specs/keyObjectHandle.nitro.js.map +1 -0
- package/lib/commonjs/specs/pbkdf2.nitro.js +6 -0
- package/lib/commonjs/specs/pbkdf2.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/subtle.js +365 -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 +140 -6
- package/lib/commonjs/utils/conversion.js.map +1 -1
- package/lib/commonjs/utils/errors.js +14 -0
- package/lib/commonjs/utils/errors.js.map +1 -0
- package/lib/commonjs/utils/hashnames.js +91 -0
- package/lib/commonjs/utils/hashnames.js.map +1 -0
- package/lib/commonjs/utils/index.js +65 -5
- 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 +52 -0
- package/lib/commonjs/utils/types.js.map +1 -1
- package/lib/commonjs/utils/validation.js +98 -0
- package/lib/commonjs/utils/validation.js.map +1 -0
- 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/ec.js +336 -0
- package/lib/module/ec.js.map +1 -0
- package/lib/module/ed.js +178 -0
- package/lib/module/ed.js.map +1 -0
- 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 +33 -29
- package/lib/module/index.js.map +1 -1
- package/lib/module/keys/classes.js +241 -0
- package/lib/module/keys/classes.js.map +1 -0
- package/lib/module/keys/generateKeyPair.js +96 -0
- package/lib/module/keys/generateKeyPair.js.map +1 -0
- package/lib/module/keys/index.js +32 -0
- package/lib/module/keys/index.js.map +1 -0
- package/lib/module/keys/signVerify.js +41 -0
- package/lib/module/keys/signVerify.js.map +1 -0
- package/lib/module/keys/utils.js +114 -0
- package/lib/module/keys/utils.js.map +1 -0
- package/lib/module/pbkdf2.js +83 -0
- package/lib/module/pbkdf2.js.map +1 -0
- package/lib/module/random.js +7 -1
- package/lib/module/random.js.map +1 -1
- package/lib/module/rsa.js +123 -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/edKeyPair.nitro.js +4 -0
- package/lib/module/specs/edKeyPair.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/keyObjectHandle.nitro.js +4 -0
- package/lib/module/specs/keyObjectHandle.nitro.js.map +1 -0
- package/lib/module/specs/pbkdf2.nitro.js +4 -0
- package/lib/module/specs/pbkdf2.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/subtle.js +360 -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 +120 -8
- package/lib/module/utils/conversion.js.map +1 -1
- package/lib/module/utils/errors.js +10 -0
- package/lib/module/utils/errors.js.map +1 -0
- package/lib/module/utils/hashnames.js +89 -0
- package/lib/module/utils/hashnames.js.map +1 -0
- package/lib/module/utils/index.js +6 -5
- 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 +53 -0
- package/lib/module/utils/types.js.map +1 -1
- package/lib/module/utils/validation.js +87 -0
- package/lib/module/utils/validation.js.map +1 -0
- 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/ec.d.ts +13 -0
- package/lib/typescript/ec.d.ts.map +1 -0
- package/lib/typescript/ed.d.ts +43 -0
- package/lib/typescript/ed.d.ts.map +1 -0
- 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 +110 -9
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/keys/classes.d.ts +79 -0
- package/lib/typescript/keys/classes.d.ts.map +1 -0
- package/lib/typescript/keys/generateKeyPair.d.ts +6 -0
- package/lib/typescript/keys/generateKeyPair.d.ts.map +1 -0
- package/lib/typescript/keys/index.d.ts +7 -0
- package/lib/typescript/keys/index.d.ts.map +1 -0
- package/lib/typescript/keys/signVerify.d.ts +1 -0
- package/lib/typescript/keys/signVerify.d.ts.map +1 -0
- package/lib/typescript/keys/utils.d.ts +34 -0
- package/lib/typescript/keys/utils.d.ts.map +1 -0
- package/lib/typescript/pbkdf2.d.ts +12 -0
- package/lib/typescript/pbkdf2.d.ts.map +1 -0
- package/lib/typescript/random.d.ts +11 -5
- package/lib/typescript/random.d.ts.map +1 -1
- package/lib/typescript/rsa.d.ts +10 -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 +17 -0
- package/lib/typescript/specs/edKeyPair.nitro.d.ts.map +1 -0
- 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 +14 -0
- package/lib/typescript/specs/keyObjectHandle.nitro.d.ts.map +1 -0
- package/lib/typescript/specs/pbkdf2.nitro.d.ts +9 -0
- package/lib/typescript/specs/pbkdf2.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/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 +24 -2
- package/lib/typescript/utils/conversion.d.ts.map +1 -1
- package/lib/typescript/utils/errors.d.ts +7 -0
- package/lib/typescript/utils/errors.d.ts.map +1 -0
- package/lib/typescript/utils/hashnames.d.ts +13 -0
- package/lib/typescript/utils/hashnames.d.ts.map +1 -0
- package/lib/typescript/utils/index.d.ts +6 -5
- 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 +252 -2
- package/lib/typescript/utils/types.d.ts.map +1 -1
- package/lib/typescript/utils/validation.d.ts +13 -0
- package/lib/typescript/utils/validation.d.ts.map +1 -0
- package/nitrogen/generated/.gitattributes +1 -0
- package/nitrogen/generated/android/QuickCrypto+autolinking.cmake +47 -4
- package/nitrogen/generated/android/QuickCrypto+autolinking.gradle +4 -3
- package/nitrogen/generated/android/QuickCryptoOnLoad.cpp +144 -0
- package/nitrogen/generated/android/QuickCryptoOnLoad.hpp +25 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/crypto/QuickCryptoOnLoad.kt +35 -0
- package/nitrogen/generated/ios/QuickCrypto+autolinking.rb +11 -8
- package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Bridge.cpp +11 -3
- package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Bridge.hpp +5 -3
- package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Umbrella.hpp +16 -7
- package/nitrogen/generated/ios/QuickCryptoAutolinking.mm +135 -0
- package/nitrogen/generated/ios/QuickCryptoAutolinking.swift +12 -0
- package/nitrogen/generated/shared/c++/CFRGKeyPairType.hpp +84 -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 +30 -0
- package/nitrogen/generated/shared/c++/HybridEdKeyPairSpec.hpp +75 -0
- 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 +26 -0
- package/nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.hpp +92 -0
- package/nitrogen/generated/shared/c++/HybridPbkdf2Spec.cpp +22 -0
- package/nitrogen/generated/shared/c++/HybridPbkdf2Spec.hpp +66 -0
- package/nitrogen/generated/shared/c++/HybridRandomSpec.cpp +2 -3
- package/nitrogen/generated/shared/c++/HybridRandomSpec.hpp +9 -6
- package/nitrogen/generated/shared/c++/HybridRsaKeyPairSpec.cpp +29 -0
- package/nitrogen/generated/shared/c++/HybridRsaKeyPairSpec.hpp +77 -0
- package/nitrogen/generated/shared/c++/JWK.hpp +161 -0
- package/nitrogen/generated/shared/c++/JWKkty.hpp +84 -0
- package/nitrogen/generated/shared/c++/JWKuse.hpp +76 -0
- package/nitrogen/generated/shared/c++/KFormatType.hpp +63 -0
- package/nitrogen/generated/shared/c++/KeyDetail.hpp +92 -0
- package/nitrogen/generated/shared/c++/KeyEncoding.hpp +64 -0
- package/nitrogen/generated/shared/c++/KeyObject.hpp +67 -0
- package/nitrogen/generated/shared/c++/KeyType.hpp +63 -0
- package/nitrogen/generated/shared/c++/KeyUsage.hpp +116 -0
- package/nitrogen/generated/shared/c++/NamedCurve.hpp +80 -0
- package/package.json +66 -39
- package/src/blake3.ts +123 -0
- package/src/cipher.ts +335 -0
- package/src/ec.ts +432 -0
- package/src/ed.ts +256 -0
- 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 +32 -29
- package/src/keys/classes.ts +317 -0
- package/src/keys/generateKeyPair.ts +145 -0
- package/src/keys/index.ts +52 -0
- package/src/keys/signVerify.ts +39 -0
- package/src/keys/utils.ts +190 -0
- package/src/pbkdf2.ts +154 -0
- package/src/random.ts +26 -23
- package/src/rsa.ts +176 -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 +43 -0
- package/src/specs/hash.nitro.ts +10 -0
- package/src/specs/hmac.nitro.ts +7 -0
- package/src/specs/keyObjectHandle.nitro.ts +31 -0
- package/src/specs/pbkdf2.nitro.ts +18 -0
- package/src/specs/random.nitro.ts +2 -2
- package/src/specs/rsaKeyPair.nitro.ts +33 -0
- package/src/subtle.ts +614 -0
- package/src/utils/cipher.ts +60 -0
- package/src/utils/conversion.ts +143 -9
- package/src/utils/errors.ts +15 -0
- package/src/utils/hashnames.ts +98 -0
- package/src/utils/index.ts +6 -6
- package/src/utils/noble.ts +85 -0
- package/src/utils/types.ts +423 -3
- package/src/utils/validation.ts +130 -0
- package/ios/QuickCryptoOnLoad.mm +0 -19
- package/lib/module/package.json +0 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#include <cstddef>
|
|
2
|
+
#include <cstdint>
|
|
3
|
+
|
|
4
|
+
#include <oneapi/tbb/parallel_invoke.h>
|
|
5
|
+
|
|
6
|
+
#include "blake3_impl.h"
|
|
7
|
+
|
|
8
|
+
static_assert(TBB_USE_EXCEPTIONS == 0,
|
|
9
|
+
"This file should be compiled with C++ exceptions disabled.");
|
|
10
|
+
|
|
11
|
+
extern "C" void blake3_compress_subtree_wide_join_tbb(
|
|
12
|
+
// shared params
|
|
13
|
+
const uint32_t key[8], uint8_t flags, bool use_tbb,
|
|
14
|
+
// left-hand side params
|
|
15
|
+
const uint8_t *l_input, size_t l_input_len, uint64_t l_chunk_counter,
|
|
16
|
+
uint8_t *l_cvs, size_t *l_n,
|
|
17
|
+
// right-hand side params
|
|
18
|
+
const uint8_t *r_input, size_t r_input_len, uint64_t r_chunk_counter,
|
|
19
|
+
uint8_t *r_cvs, size_t *r_n) noexcept {
|
|
20
|
+
if (!use_tbb) {
|
|
21
|
+
*l_n = blake3_compress_subtree_wide(l_input, l_input_len, key,
|
|
22
|
+
l_chunk_counter, flags, l_cvs, use_tbb);
|
|
23
|
+
*r_n = blake3_compress_subtree_wide(r_input, r_input_len, key,
|
|
24
|
+
r_chunk_counter, flags, r_cvs, use_tbb);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
oneapi::tbb::parallel_invoke(
|
|
29
|
+
[=]() {
|
|
30
|
+
*l_n = blake3_compress_subtree_wide(
|
|
31
|
+
l_input, l_input_len, key, l_chunk_counter, flags, l_cvs, use_tbb);
|
|
32
|
+
},
|
|
33
|
+
[=]() {
|
|
34
|
+
*r_n = blake3_compress_subtree_wide(
|
|
35
|
+
r_input, r_input_len, key, r_chunk_counter, flags, r_cvs, use_tbb);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
find_package(TBB 2021.11.0 QUIET)
|
|
2
|
+
|
|
3
|
+
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.11)
|
|
4
|
+
include(FetchContent)
|
|
5
|
+
|
|
6
|
+
if(NOT TBB_FOUND AND BLAKE3_FETCH_TBB)
|
|
7
|
+
set(CMAKE_C_STANDARD 99)
|
|
8
|
+
set(CMAKE_C_EXTENSIONS OFF)
|
|
9
|
+
|
|
10
|
+
set(CMAKE_CXX_STANDARD 20)
|
|
11
|
+
set(CMAKE_CXX_EXTENSIONS ON)
|
|
12
|
+
|
|
13
|
+
option(TBB_TEST OFF "")
|
|
14
|
+
option(TBBMALLOC_BUILD OFF "")
|
|
15
|
+
|
|
16
|
+
mark_as_advanced(TBB_TEST)
|
|
17
|
+
mark_as_advanced(TBBMALLOC_BUILD)
|
|
18
|
+
|
|
19
|
+
FetchContent_Declare(
|
|
20
|
+
TBB
|
|
21
|
+
GIT_REPOSITORY https://github.com/uxlfoundation/oneTBB
|
|
22
|
+
GIT_TAG 0c0ff192a2304e114bc9e6557582dfba101360ff # v2022.0.0
|
|
23
|
+
GIT_SHALLOW TRUE
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
FetchContent_MakeAvailable(TBB)
|
|
27
|
+
endif()
|
|
28
|
+
endif()
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#include "blake3.h"
|
|
2
|
+
#include <errno.h>
|
|
3
|
+
#include <stdio.h>
|
|
4
|
+
#include <string.h>
|
|
5
|
+
#include <unistd.h>
|
|
6
|
+
|
|
7
|
+
int main(void) {
|
|
8
|
+
// Initialize the hasher.
|
|
9
|
+
blake3_hasher hasher;
|
|
10
|
+
blake3_hasher_init(&hasher);
|
|
11
|
+
|
|
12
|
+
// Read input bytes from stdin.
|
|
13
|
+
unsigned char buf[65536];
|
|
14
|
+
while (1) {
|
|
15
|
+
ssize_t n = read(STDIN_FILENO, buf, sizeof(buf));
|
|
16
|
+
if (n > 0) {
|
|
17
|
+
blake3_hasher_update(&hasher, buf, n);
|
|
18
|
+
} else if (n == 0) {
|
|
19
|
+
break; // end of file
|
|
20
|
+
} else {
|
|
21
|
+
fprintf(stderr, "read failed: %s\n", strerror(errno));
|
|
22
|
+
return 1;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Finalize the hash. BLAKE3_OUT_LEN is the default output length, 32 bytes.
|
|
27
|
+
uint8_t output[BLAKE3_OUT_LEN];
|
|
28
|
+
blake3_hasher_finalize(&hasher, output, BLAKE3_OUT_LEN);
|
|
29
|
+
|
|
30
|
+
// Print the hash as hexadecimal.
|
|
31
|
+
for (size_t i = 0; i < BLAKE3_OUT_LEN; i++) {
|
|
32
|
+
printf("%02x", output[i]);
|
|
33
|
+
}
|
|
34
|
+
printf("\n");
|
|
35
|
+
return 0;
|
|
36
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
#include "blake3.h"
|
|
2
|
+
#include <errno.h>
|
|
3
|
+
#include <fcntl.h>
|
|
4
|
+
#include <stdio.h>
|
|
5
|
+
#include <string.h>
|
|
6
|
+
#include <sys/mman.h>
|
|
7
|
+
#include <sys/stat.h>
|
|
8
|
+
#include <unistd.h>
|
|
9
|
+
|
|
10
|
+
int main(int argc, char **argv) {
|
|
11
|
+
// For each filepath argument, memory map it and hash it.
|
|
12
|
+
for (int i = 1; i < argc; i++) {
|
|
13
|
+
// Open and memory map the file.
|
|
14
|
+
int fd = open(argv[i], O_RDONLY);
|
|
15
|
+
if (fd == -1) {
|
|
16
|
+
fprintf(stderr, "open failed: %s\n", strerror(errno));
|
|
17
|
+
return 1;
|
|
18
|
+
}
|
|
19
|
+
struct stat statbuf;
|
|
20
|
+
if (fstat(fd, &statbuf) == -1) {
|
|
21
|
+
fprintf(stderr, "stat failed: %s\n", strerror(errno));
|
|
22
|
+
return 1;
|
|
23
|
+
}
|
|
24
|
+
void *mapped = mmap(NULL, statbuf.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
|
|
25
|
+
if (mapped == MAP_FAILED) {
|
|
26
|
+
fprintf(stderr, "mmap failed: %s\n", strerror(errno));
|
|
27
|
+
return 1;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Initialize the hasher.
|
|
31
|
+
blake3_hasher hasher;
|
|
32
|
+
blake3_hasher_init(&hasher);
|
|
33
|
+
|
|
34
|
+
// Hash the mapped file using multiple threads.
|
|
35
|
+
blake3_hasher_update_tbb(&hasher, mapped, statbuf.st_size);
|
|
36
|
+
|
|
37
|
+
// Unmap and close the file.
|
|
38
|
+
if (munmap(mapped, statbuf.st_size) == -1) {
|
|
39
|
+
fprintf(stderr, "munmap failed: %s\n", strerror(errno));
|
|
40
|
+
return 1;
|
|
41
|
+
}
|
|
42
|
+
if (close(fd) == -1) {
|
|
43
|
+
fprintf(stderr, "close failed: %s\n", strerror(errno));
|
|
44
|
+
return 1;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Finalize the hash. BLAKE3_OUT_LEN is the default output length, 32 bytes.
|
|
48
|
+
uint8_t output[BLAKE3_OUT_LEN];
|
|
49
|
+
blake3_hasher_finalize(&hasher, output, BLAKE3_OUT_LEN);
|
|
50
|
+
|
|
51
|
+
// Print the hash as hexadecimal.
|
|
52
|
+
for (size_t i = 0; i < BLAKE3_OUT_LEN; i++) {
|
|
53
|
+
printf("%02x", output[i]);
|
|
54
|
+
}
|
|
55
|
+
printf("\n");
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
prefix="@CMAKE_INSTALL_PREFIX@"
|
|
2
|
+
exec_prefix="${prefix}"
|
|
3
|
+
libdir="@PKG_CONFIG_INSTALL_LIBDIR@"
|
|
4
|
+
includedir="@PKG_CONFIG_INSTALL_INCLUDEDIR@"
|
|
5
|
+
|
|
6
|
+
Name: @PROJECT_NAME@
|
|
7
|
+
Description: @PROJECT_DESCRIPTION@
|
|
8
|
+
Version: @PROJECT_VERSION@
|
|
9
|
+
|
|
10
|
+
Requires: @PKG_CONFIG_REQUIRES@
|
|
11
|
+
Libs: -L"${libdir}" -lblake3 @PKG_CONFIG_LIBS@
|
|
12
|
+
Cflags: -I"${includedir}" @PKG_CONFIG_CFLAGS@
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This main file is intended for testing via `make test`. It does not build in
|
|
3
|
+
* other settings. See README.md in this directory for examples of how to build
|
|
4
|
+
* C code.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#include <assert.h>
|
|
8
|
+
#include <errno.h>
|
|
9
|
+
#include <stdbool.h>
|
|
10
|
+
#include <stdint.h>
|
|
11
|
+
#include <stdio.h>
|
|
12
|
+
#include <stdlib.h>
|
|
13
|
+
|
|
14
|
+
#include "blake3.h"
|
|
15
|
+
#include "blake3_impl.h"
|
|
16
|
+
|
|
17
|
+
#define HASH_MODE 0
|
|
18
|
+
#define KEYED_HASH_MODE 1
|
|
19
|
+
#define DERIVE_KEY_MODE 2
|
|
20
|
+
|
|
21
|
+
static void hex_char_value(uint8_t c, uint8_t *value, bool *valid) {
|
|
22
|
+
if ('0' <= c && c <= '9') {
|
|
23
|
+
*value = c - '0';
|
|
24
|
+
*valid = true;
|
|
25
|
+
} else if ('a' <= c && c <= 'f') {
|
|
26
|
+
*value = 10 + c - 'a';
|
|
27
|
+
*valid = true;
|
|
28
|
+
} else {
|
|
29
|
+
*valid = false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
static int parse_key(char *hex_key, uint8_t out[BLAKE3_KEY_LEN]) {
|
|
34
|
+
size_t hex_len = strlen(hex_key);
|
|
35
|
+
if (hex_len != 64) {
|
|
36
|
+
fprintf(stderr, "Expected a 64-char hexadecimal key, got %zu chars.\n",
|
|
37
|
+
hex_len);
|
|
38
|
+
return 1;
|
|
39
|
+
}
|
|
40
|
+
for (size_t i = 0; i < 64; i++) {
|
|
41
|
+
uint8_t value;
|
|
42
|
+
bool valid;
|
|
43
|
+
hex_char_value(hex_key[i], &value, &valid);
|
|
44
|
+
if (!valid) {
|
|
45
|
+
fprintf(stderr, "Invalid hex char.\n");
|
|
46
|
+
return 1;
|
|
47
|
+
}
|
|
48
|
+
if (i % 2 == 0) {
|
|
49
|
+
out[i / 2] = 0;
|
|
50
|
+
value <<= 4;
|
|
51
|
+
}
|
|
52
|
+
out[i / 2] += value;
|
|
53
|
+
}
|
|
54
|
+
return 0;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/* A little repetition here */
|
|
58
|
+
enum cpu_feature {
|
|
59
|
+
SSE2 = 1 << 0,
|
|
60
|
+
SSSE3 = 1 << 1,
|
|
61
|
+
SSE41 = 1 << 2,
|
|
62
|
+
AVX = 1 << 3,
|
|
63
|
+
AVX2 = 1 << 4,
|
|
64
|
+
AVX512F = 1 << 5,
|
|
65
|
+
AVX512VL = 1 << 6,
|
|
66
|
+
/* ... */
|
|
67
|
+
UNDEFINED = 1 << 30
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
extern enum cpu_feature g_cpu_features;
|
|
71
|
+
enum cpu_feature get_cpu_features(void);
|
|
72
|
+
|
|
73
|
+
int main(int argc, char **argv) {
|
|
74
|
+
size_t out_len = BLAKE3_OUT_LEN;
|
|
75
|
+
uint8_t key[BLAKE3_KEY_LEN];
|
|
76
|
+
char *context = "";
|
|
77
|
+
uint8_t mode = HASH_MODE;
|
|
78
|
+
while (argc > 1) {
|
|
79
|
+
if (argc <= 2) {
|
|
80
|
+
fprintf(stderr, "Odd number of arguments.\n");
|
|
81
|
+
return 1;
|
|
82
|
+
}
|
|
83
|
+
if (strcmp("--length", argv[1]) == 0) {
|
|
84
|
+
char *endptr = NULL;
|
|
85
|
+
errno = 0;
|
|
86
|
+
unsigned long long out_len_ll = strtoull(argv[2], &endptr, 10);
|
|
87
|
+
if (errno != 0 || out_len_ll > SIZE_MAX || endptr == argv[2] ||
|
|
88
|
+
*endptr != 0) {
|
|
89
|
+
fprintf(stderr, "Bad length argument.\n");
|
|
90
|
+
return 1;
|
|
91
|
+
}
|
|
92
|
+
out_len = (size_t)out_len_ll;
|
|
93
|
+
} else if (strcmp("--keyed", argv[1]) == 0) {
|
|
94
|
+
mode = KEYED_HASH_MODE;
|
|
95
|
+
int ret = parse_key(argv[2], key);
|
|
96
|
+
if (ret != 0) {
|
|
97
|
+
return ret;
|
|
98
|
+
}
|
|
99
|
+
} else if (strcmp("--derive-key", argv[1]) == 0) {
|
|
100
|
+
mode = DERIVE_KEY_MODE;
|
|
101
|
+
context = argv[2];
|
|
102
|
+
} else {
|
|
103
|
+
fprintf(stderr, "Unknown flag.\n");
|
|
104
|
+
return 1;
|
|
105
|
+
}
|
|
106
|
+
argc -= 2;
|
|
107
|
+
argv += 2;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/*
|
|
111
|
+
* We're going to hash the input multiple times, so we need to buffer it all.
|
|
112
|
+
* This is just for test cases, so go ahead and assume that the input is less
|
|
113
|
+
* than 1 MiB.
|
|
114
|
+
*/
|
|
115
|
+
size_t buf_capacity = 1 << 20;
|
|
116
|
+
uint8_t *buf = malloc(buf_capacity);
|
|
117
|
+
assert(buf != NULL);
|
|
118
|
+
size_t buf_len = 0;
|
|
119
|
+
while (1) {
|
|
120
|
+
size_t n = fread(&buf[buf_len], 1, buf_capacity - buf_len, stdin);
|
|
121
|
+
if (n == 0) {
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
buf_len += n;
|
|
125
|
+
assert(buf_len < buf_capacity);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
const int mask = get_cpu_features();
|
|
129
|
+
int feature = 0;
|
|
130
|
+
do {
|
|
131
|
+
fprintf(stderr, "Testing 0x%08X\n", feature);
|
|
132
|
+
g_cpu_features = feature;
|
|
133
|
+
blake3_hasher hasher;
|
|
134
|
+
switch (mode) {
|
|
135
|
+
case HASH_MODE:
|
|
136
|
+
blake3_hasher_init(&hasher);
|
|
137
|
+
break;
|
|
138
|
+
case KEYED_HASH_MODE:
|
|
139
|
+
blake3_hasher_init_keyed(&hasher, key);
|
|
140
|
+
break;
|
|
141
|
+
case DERIVE_KEY_MODE:
|
|
142
|
+
blake3_hasher_init_derive_key(&hasher, context);
|
|
143
|
+
break;
|
|
144
|
+
default:
|
|
145
|
+
abort();
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
blake3_hasher_update(&hasher, buf, buf_len);
|
|
149
|
+
|
|
150
|
+
/* TODO: An incremental output reader API to avoid this allocation. */
|
|
151
|
+
uint8_t *out = malloc(out_len);
|
|
152
|
+
if (out_len > 0 && out == NULL) {
|
|
153
|
+
fprintf(stderr, "malloc() failed.\n");
|
|
154
|
+
return 1;
|
|
155
|
+
}
|
|
156
|
+
blake3_hasher_finalize(&hasher, out, out_len);
|
|
157
|
+
for (size_t i = 0; i < out_len; i++) {
|
|
158
|
+
printf("%02x", out[i]);
|
|
159
|
+
}
|
|
160
|
+
printf("\n");
|
|
161
|
+
free(out);
|
|
162
|
+
feature = (feature - mask) & mask;
|
|
163
|
+
} while (feature != 0);
|
|
164
|
+
free(buf);
|
|
165
|
+
return 0;
|
|
166
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
#! /usr/bin/env python3
|
|
2
|
+
|
|
3
|
+
from binascii import hexlify
|
|
4
|
+
import json
|
|
5
|
+
from os import path
|
|
6
|
+
import subprocess
|
|
7
|
+
|
|
8
|
+
HERE = path.dirname(__file__)
|
|
9
|
+
TEST_VECTORS_PATH = path.join(HERE, "..", "test_vectors", "test_vectors.json")
|
|
10
|
+
TEST_VECTORS = json.load(open(TEST_VECTORS_PATH))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def run_blake3(args, input):
|
|
14
|
+
output = subprocess.run([path.join(HERE, "blake3")] + args,
|
|
15
|
+
input=input,
|
|
16
|
+
stdout=subprocess.PIPE,
|
|
17
|
+
check=True)
|
|
18
|
+
return output.stdout.decode().strip()
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
# Fill the input with a repeating byte pattern. We use a cycle length of 251,
|
|
22
|
+
# because that's the largest prime number less than 256. This makes it unlikely
|
|
23
|
+
# to swapping any two adjacent input blocks or chunks will give the same
|
|
24
|
+
# answer.
|
|
25
|
+
def make_test_input(length):
|
|
26
|
+
i = 0
|
|
27
|
+
buf = bytearray()
|
|
28
|
+
while len(buf) < length:
|
|
29
|
+
buf.append(i)
|
|
30
|
+
i = (i + 1) % 251
|
|
31
|
+
return buf
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def main():
|
|
35
|
+
for case in TEST_VECTORS["cases"]:
|
|
36
|
+
input_len = case["input_len"]
|
|
37
|
+
input = make_test_input(input_len)
|
|
38
|
+
hex_key = hexlify(TEST_VECTORS["key"].encode())
|
|
39
|
+
context_string = TEST_VECTORS["context_string"]
|
|
40
|
+
expected_hash_xof = case["hash"]
|
|
41
|
+
expected_hash = expected_hash_xof[:64]
|
|
42
|
+
expected_keyed_hash_xof = case["keyed_hash"]
|
|
43
|
+
expected_keyed_hash = expected_keyed_hash_xof[:64]
|
|
44
|
+
expected_derive_key_xof = case["derive_key"]
|
|
45
|
+
expected_derive_key = expected_derive_key_xof[:64]
|
|
46
|
+
|
|
47
|
+
# Test the default hash.
|
|
48
|
+
test_hash = run_blake3([], input)
|
|
49
|
+
for line in test_hash.splitlines():
|
|
50
|
+
assert expected_hash == line, \
|
|
51
|
+
"hash({}): {} != {}".format(input_len, expected_hash, line)
|
|
52
|
+
|
|
53
|
+
# Test the extended hash.
|
|
54
|
+
xof_len = len(expected_hash_xof) // 2
|
|
55
|
+
test_hash_xof = run_blake3(["--length", str(xof_len)], input)
|
|
56
|
+
for line in test_hash_xof.splitlines():
|
|
57
|
+
assert expected_hash_xof == line, \
|
|
58
|
+
"hash_xof({}): {} != {}".format(
|
|
59
|
+
input_len, expected_hash_xof, line)
|
|
60
|
+
|
|
61
|
+
# Test the default keyed hash.
|
|
62
|
+
test_keyed_hash = run_blake3(["--keyed", hex_key], input)
|
|
63
|
+
for line in test_keyed_hash.splitlines():
|
|
64
|
+
assert expected_keyed_hash == line, \
|
|
65
|
+
"keyed_hash({}): {} != {}".format(
|
|
66
|
+
input_len, expected_keyed_hash, line)
|
|
67
|
+
|
|
68
|
+
# Test the extended keyed hash.
|
|
69
|
+
xof_len = len(expected_keyed_hash_xof) // 2
|
|
70
|
+
test_keyed_hash_xof = run_blake3(
|
|
71
|
+
["--keyed", hex_key, "--length",
|
|
72
|
+
str(xof_len)], input)
|
|
73
|
+
for line in test_keyed_hash_xof.splitlines():
|
|
74
|
+
assert expected_keyed_hash_xof == line, \
|
|
75
|
+
"keyed_hash_xof({}): {} != {}".format(
|
|
76
|
+
input_len, expected_keyed_hash_xof, line)
|
|
77
|
+
|
|
78
|
+
# Test the default derive key.
|
|
79
|
+
test_derive_key = run_blake3(["--derive-key", context_string], input)
|
|
80
|
+
for line in test_derive_key.splitlines():
|
|
81
|
+
assert expected_derive_key == line, \
|
|
82
|
+
"derive_key({}): {} != {}".format(
|
|
83
|
+
input_len, expected_derive_key, line)
|
|
84
|
+
|
|
85
|
+
# Test the extended derive key.
|
|
86
|
+
xof_len = len(expected_derive_key_xof) // 2
|
|
87
|
+
test_derive_key_xof = run_blake3(
|
|
88
|
+
["--derive-key", context_string, "--length",
|
|
89
|
+
str(xof_len)], input)
|
|
90
|
+
for line in test_derive_key_xof.splitlines():
|
|
91
|
+
assert expected_derive_key_xof == line, \
|
|
92
|
+
"derive_key_xof({}): {} != {}".format(
|
|
93
|
+
input_len, expected_derive_key_xof, line)
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
if __name__ == "__main__":
|
|
97
|
+
main()
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
+
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
3
|
+
|
|
4
|
+
<svg
|
|
5
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
6
|
+
xmlns:cc="http://creativecommons.org/ns#"
|
|
7
|
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
8
|
+
xmlns:svg="http://www.w3.org/2000/svg"
|
|
9
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
10
|
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
11
|
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
12
|
+
width="13.356165mm"
|
|
13
|
+
height="7.1437497mm"
|
|
14
|
+
viewBox="0 0 13.356165 7.1437497"
|
|
15
|
+
version="1.1"
|
|
16
|
+
id="svg8"
|
|
17
|
+
sodipodi:docname="B3.svg"
|
|
18
|
+
inkscape:version="0.92.4 5da689c313, 2019-01-14">
|
|
19
|
+
<defs
|
|
20
|
+
id="defs2" />
|
|
21
|
+
<sodipodi:namedview
|
|
22
|
+
id="base"
|
|
23
|
+
pagecolor="#ffffff"
|
|
24
|
+
bordercolor="#666666"
|
|
25
|
+
borderopacity="1.0"
|
|
26
|
+
inkscape:pageopacity="0.0"
|
|
27
|
+
inkscape:pageshadow="2"
|
|
28
|
+
inkscape:zoom="4"
|
|
29
|
+
inkscape:cx="72.73328"
|
|
30
|
+
inkscape:cy="-34.835127"
|
|
31
|
+
inkscape:document-units="mm"
|
|
32
|
+
inkscape:current-layer="layer1"
|
|
33
|
+
showgrid="false"
|
|
34
|
+
inkscape:window-width="1920"
|
|
35
|
+
inkscape:window-height="1016"
|
|
36
|
+
inkscape:window-x="0"
|
|
37
|
+
inkscape:window-y="27"
|
|
38
|
+
inkscape:window-maximized="1" />
|
|
39
|
+
<metadata
|
|
40
|
+
id="metadata5">
|
|
41
|
+
<rdf:RDF>
|
|
42
|
+
<cc:Work
|
|
43
|
+
rdf:about="">
|
|
44
|
+
<dc:format>image/svg+xml</dc:format>
|
|
45
|
+
<dc:type
|
|
46
|
+
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
47
|
+
<dc:title />
|
|
48
|
+
</cc:Work>
|
|
49
|
+
</rdf:RDF>
|
|
50
|
+
</metadata>
|
|
51
|
+
<g
|
|
52
|
+
inkscape:label="Layer 1"
|
|
53
|
+
inkscape:groupmode="layer"
|
|
54
|
+
id="layer1"
|
|
55
|
+
transform="translate(-24.441005,-113.52518)">
|
|
56
|
+
<g
|
|
57
|
+
aria-label="B3"
|
|
58
|
+
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
|
59
|
+
id="text868">
|
|
60
|
+
<path
|
|
61
|
+
d="m 28.176921,113.52518 q 0.635,0 1.0795,0.14817 0.455084,0.13758 0.740834,0.40216 0.296333,0.254 0.433916,0.61384 0.137584,0.35983 0.137584,0.79375 0,0.62441 -0.264584,1.00541 -0.254,0.381 -0.762,0.58209 0.508,0.21166 0.783167,0.61383 0.275167,0.39158 0.275167,1.016 0,0.43392 -0.137584,0.79375 -0.137583,0.35983 -0.433916,0.62442 -0.28575,0.254 -0.740834,0.40216 -0.4445,0.14817 -1.0795,0.14817 h -3.174999 q -0.592667,0 -0.592667,-0.58208 v -5.97959 q 0,-0.58208 0.592667,-0.58208 z m -2.508249,5.78908 q 0,0.11642 0.137583,0.11642 h 2.434166 q 0.5715,0 0.836084,-0.24342 0.264583,-0.24341 0.264583,-0.68791 0,-0.92075 -1.100667,-0.92075 h -2.571749 z m 0,-2.77283 h 2.539999 q 1.100667,0 1.100667,-0.85725 0,-0.42333 -0.264583,-0.67733 -0.254,-0.254 -0.8255,-0.254 h -2.413 q -0.137583,0 -0.137583,0.127 z"
|
|
62
|
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Nasalization;-inkscape-font-specification:Nasalization;stroke-width:0.26458332"
|
|
63
|
+
id="path814" />
|
|
64
|
+
<path
|
|
65
|
+
d="m 35.38417,113.52518 q 0.635,0 1.0795,0.14817 0.455083,0.13758 0.740833,0.40216 0.296333,0.254 0.433917,0.60325 0.137583,0.34925 0.137583,0.762 0,0.635 -0.264583,1.03717 -0.254,0.39158 -0.751417,0.60325 0.508,0.21167 0.772583,0.62442 0.264584,0.40216 0.264584,1.04775 0,0.40216 -0.137584,0.75141 -0.137583,0.34925 -0.423333,0.61384 -0.28575,0.254 -0.740833,0.40216 -0.4445,0.14817 -1.0795,0.14817 h -3.608917 v -1.24883 h 3.608917 q 0.550333,0 0.814917,-0.23284 0.264583,-0.24341 0.264583,-0.67733 0,-0.85725 -1.090083,-0.85725 h -2.201334 v -1.13242 h 2.169584 q 0.550333,0 0.814916,-0.20108 0.275167,-0.21167 0.275167,-0.65617 0,-0.40216 -0.254,-0.64558 -0.254,-0.24342 -0.8255,-0.24342 h -3.566583 v -1.24883 z"
|
|
66
|
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Nasalization;-inkscape-font-specification:Nasalization;stroke-width:0.26458332"
|
|
67
|
+
id="path816" />
|
|
68
|
+
</g>
|
|
69
|
+
</g>
|
|
70
|
+
</svg>
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
+
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
3
|
+
|
|
4
|
+
<svg
|
|
5
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
6
|
+
xmlns:cc="http://creativecommons.org/ns#"
|
|
7
|
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
8
|
+
xmlns:svg="http://www.w3.org/2000/svg"
|
|
9
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
10
|
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
11
|
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
12
|
+
width="43.063534mm"
|
|
13
|
+
height="7.2707496mm"
|
|
14
|
+
viewBox="0 0 43.063534 7.2707496"
|
|
15
|
+
version="1.1"
|
|
16
|
+
id="svg8"
|
|
17
|
+
sodipodi:docname="BLAKE3.svg"
|
|
18
|
+
inkscape:version="0.92.4 5da689c313, 2019-01-14">
|
|
19
|
+
<defs
|
|
20
|
+
id="defs2" />
|
|
21
|
+
<sodipodi:namedview
|
|
22
|
+
id="base"
|
|
23
|
+
pagecolor="#ffffff"
|
|
24
|
+
bordercolor="#666666"
|
|
25
|
+
borderopacity="1.0"
|
|
26
|
+
inkscape:pageopacity="0.0"
|
|
27
|
+
inkscape:pageshadow="2"
|
|
28
|
+
inkscape:zoom="4"
|
|
29
|
+
inkscape:cx="72.73328"
|
|
30
|
+
inkscape:cy="-34.835127"
|
|
31
|
+
inkscape:document-units="mm"
|
|
32
|
+
inkscape:current-layer="layer1"
|
|
33
|
+
showgrid="false"
|
|
34
|
+
inkscape:window-width="1920"
|
|
35
|
+
inkscape:window-height="1016"
|
|
36
|
+
inkscape:window-x="0"
|
|
37
|
+
inkscape:window-y="27"
|
|
38
|
+
inkscape:window-maximized="1" />
|
|
39
|
+
<metadata
|
|
40
|
+
id="metadata5">
|
|
41
|
+
<rdf:RDF>
|
|
42
|
+
<cc:Work
|
|
43
|
+
rdf:about="">
|
|
44
|
+
<dc:format>image/svg+xml</dc:format>
|
|
45
|
+
<dc:type
|
|
46
|
+
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
47
|
+
</cc:Work>
|
|
48
|
+
</rdf:RDF>
|
|
49
|
+
</metadata>
|
|
50
|
+
<g
|
|
51
|
+
inkscape:label="Layer 1"
|
|
52
|
+
inkscape:groupmode="layer"
|
|
53
|
+
id="layer1"
|
|
54
|
+
transform="translate(-24.441005,-113.39818)">
|
|
55
|
+
<g
|
|
56
|
+
aria-label="BLAKE3"
|
|
57
|
+
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
|
58
|
+
id="text868">
|
|
59
|
+
<path
|
|
60
|
+
d="m 28.176921,113.52518 q 0.635,0 1.0795,0.14817 0.455084,0.13758 0.740834,0.40216 0.296333,0.254 0.433916,0.61384 0.137584,0.35983 0.137584,0.79375 0,0.62441 -0.264584,1.00541 -0.254,0.381 -0.762,0.58209 0.508,0.21166 0.783167,0.61383 0.275167,0.39158 0.275167,1.016 0,0.43392 -0.137584,0.79375 -0.137583,0.35983 -0.433916,0.62442 -0.28575,0.254 -0.740834,0.40216 -0.4445,0.14817 -1.0795,0.14817 h -3.174999 q -0.592667,0 -0.592667,-0.58208 v -5.97959 q 0,-0.58208 0.592667,-0.58208 z m -2.508249,5.78908 q 0,0.11642 0.137583,0.11642 h 2.434166 q 0.5715,0 0.836084,-0.24342 0.264583,-0.24341 0.264583,-0.68791 0,-0.92075 -1.100667,-0.92075 h -2.571749 z m 0,-2.77283 h 2.539999 q 1.100667,0 1.100667,-0.85725 0,-0.42333 -0.264583,-0.67733 -0.254,-0.254 -0.8255,-0.254 h -2.413 q -0.137583,0 -0.137583,0.127 z"
|
|
61
|
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Nasalization;-inkscape-font-specification:Nasalization;stroke-width:0.26458332"
|
|
62
|
+
id="path814" />
|
|
63
|
+
<path
|
|
64
|
+
d="m 33.22517,113.52518 v 4.66725 q 0,0.254 0.0635,0.48683 0.07408,0.22225 0.243417,0.39159 0.169333,0.15875 0.4445,0.254 0.28575,0.0953 0.709083,0.0953 h 2.772833 v 1.24883 h -2.846916 q -0.709084,0 -1.217084,-0.17992 -0.497416,-0.1905 -0.814916,-0.51858 -0.3175,-0.32808 -0.465667,-0.77258 -0.137583,-0.45509 -0.137583,-0.99484 v -4.67783 z"
|
|
65
|
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Nasalization;-inkscape-font-specification:Nasalization;stroke-width:0.26458332"
|
|
66
|
+
id="path816" />
|
|
67
|
+
<path
|
|
68
|
+
d="M 39.342334,120.66893 H 37.9665 l 2.50825,-6.35 q 0.201084,-0.508 0.560917,-0.70908 0.370417,-0.21167 0.941917,-0.21167 0.560916,0 0.92075,0.21167 0.370416,0.20108 0.560916,0.70908 l 2.413,6.35 h -1.386416 l -2.169584,-5.74675 q -0.09525,-0.24342 -0.34925,-0.24342 -0.254,0 -0.359833,0.24342 z"
|
|
69
|
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Nasalization;-inkscape-font-specification:Nasalization;stroke-width:0.26458332"
|
|
70
|
+
id="path818" />
|
|
71
|
+
<path
|
|
72
|
+
d="m 48.179401,113.52518 v 3.02683 h 0.687917 q 0.455083,0 0.740833,-0.0212 0.296333,-0.0318 0.486833,-0.127 0.1905,-0.0953 0.3175,-0.26459 0.137584,-0.17991 0.28575,-0.47625 l 1.090084,-2.13783 h 1.344083 l -1.121833,2.2225 q -0.243417,0.47625 -0.518584,0.79375 -0.275166,0.3175 -0.719666,0.508 0.254,0.0635 0.4445,0.17992 0.1905,0.10583 0.34925,0.27516 0.169333,0.15875 0.3175,0.39159 0.148166,0.22225 0.306916,0.52916 l 1.153584,2.24367 h -1.397 l -1.090084,-2.11667 q -0.148166,-0.28575 -0.28575,-0.45508 -0.137583,-0.16933 -0.34925,-0.26458 -0.211666,-0.0952 -0.529166,-0.11642 -0.3175,-0.0317 -0.8255,-0.0317 h -0.687917 v 2.9845 h -1.248833 v -7.14375 z"
|
|
73
|
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Nasalization;-inkscape-font-specification:Nasalization;stroke-width:0.26458332"
|
|
74
|
+
id="path820" />
|
|
75
|
+
<path
|
|
76
|
+
d="m 60.127965,113.52518 v 1.24883 h -3.577166 q -0.5715,0 -0.8255,0.24342 -0.254,0.24342 -0.254,0.65617 0,0.84666 1.090083,0.84666 h 3.513667 v 1.13242 h -3.545417 q -1.090083,0 -1.090083,0.86783 0,0.42334 0.264583,0.66675 0.264583,0.23284 0.814917,0.23284 h 3.6195 v 1.24883 h -3.6195 q -0.635,0 -1.090083,-0.14817 -0.4445,-0.14816 -0.740834,-0.40216 -0.28575,-0.26459 -0.423333,-0.62442 -0.127,-0.35983 -0.127,-0.77258 0,-0.61384 0.264583,-1.016 0.264584,-0.41275 0.762,-0.62442 -1.005416,-0.41275 -1.005416,-1.60867 0,-0.42333 0.137583,-0.78316 0.137583,-0.35984 0.423333,-0.61384 0.296334,-0.26458 0.740834,-0.40216 0.455083,-0.14817 1.090083,-0.14817 z"
|
|
77
|
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Nasalization;-inkscape-font-specification:Nasalization;stroke-width:0.26458332"
|
|
78
|
+
id="path822" />
|
|
79
|
+
<path
|
|
80
|
+
d="m 65.091539,113.52518 q 0.635,0 1.0795,0.14817 0.455083,0.13758 0.740833,0.40216 0.296333,0.254 0.433917,0.60325 0.137583,0.34925 0.137583,0.762 0,0.635 -0.264583,1.03717 -0.254,0.39158 -0.751417,0.60325 0.508,0.21167 0.772583,0.62442 0.264584,0.40216 0.264584,1.04775 0,0.40216 -0.137584,0.75141 -0.137583,0.34925 -0.423333,0.61384 -0.28575,0.254 -0.740833,0.40216 -0.4445,0.14817 -1.0795,0.14817 h -3.608917 v -1.24883 h 3.608917 q 0.550333,0 0.814916,-0.23284 0.264584,-0.24341 0.264584,-0.67733 0,-0.85725 -1.090084,-0.85725 h -2.201333 v -1.13242 h 2.169583 q 0.550334,0 0.814917,-0.20108 0.275167,-0.21167 0.275167,-0.65617 0,-0.40216 -0.254,-0.64558 -0.254,-0.24342 -0.8255,-0.24342 h -3.566583 v -1.24883 z"
|
|
81
|
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Nasalization;-inkscape-font-specification:Nasalization;stroke-width:0.26458332"
|
|
82
|
+
id="path824" />
|
|
83
|
+
</g>
|
|
84
|
+
</g>
|
|
85
|
+
</svg>
|