react-native-quick-crypto 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/QuickCrypto.podspec +1 -0
- package/android/CMakeLists.txt +4 -0
- package/android/build.gradle +5 -1
- package/cpp/argon2/HybridArgon2.cpp +10 -3
- package/cpp/blake3/HybridBlake3.cpp +5 -3
- package/cpp/cipher/CCMCipher.cpp +35 -26
- package/cpp/cipher/CCMCipher.hpp +2 -4
- package/cpp/cipher/ChaCha20Cipher.cpp +19 -27
- package/cpp/cipher/ChaCha20Cipher.hpp +2 -4
- package/cpp/cipher/ChaCha20Poly1305Cipher.cpp +41 -36
- package/cpp/cipher/ChaCha20Poly1305Cipher.hpp +2 -4
- package/cpp/cipher/GCMCipher.cpp +17 -20
- package/cpp/cipher/HybridCipher.cpp +44 -47
- package/cpp/cipher/HybridCipher.hpp +17 -1
- package/cpp/cipher/HybridRsaCipher.cpp +93 -56
- package/cpp/cipher/OCBCipher.cpp +5 -5
- package/cpp/cipher/XChaCha20Poly1305Cipher.cpp +27 -32
- package/cpp/cipher/XSalsa20Cipher.cpp +78 -16
- package/cpp/cipher/XSalsa20Cipher.hpp +25 -3
- package/cpp/cipher/XSalsa20Poly1305Cipher.cpp +32 -41
- package/cpp/dh/HybridDiffieHellman.cpp +29 -0
- package/cpp/ec/HybridEcKeyPair.cpp +35 -33
- package/cpp/ec/HybridEcKeyPair.hpp +3 -7
- package/cpp/ecdh/HybridECDH.cpp +23 -0
- package/cpp/ed25519/HybridEdKeyPair.cpp +73 -117
- package/cpp/ed25519/HybridEdKeyPair.hpp +5 -9
- package/cpp/hash/HybridHash.cpp +5 -7
- package/cpp/hkdf/HybridHkdf.cpp +6 -4
- package/cpp/hmac/HybridHmac.cpp +4 -6
- package/cpp/keys/HybridKeyObjectHandle.cpp +630 -2
- package/cpp/keys/HybridKeyObjectHandle.hpp +21 -1
- package/cpp/kmac/HybridKmac.cpp +4 -4
- package/cpp/mldsa/HybridMlDsaKeyPair.cpp +37 -49
- package/cpp/mlkem/HybridMlKemKeyPair.cpp +39 -43
- package/cpp/pbkdf2/HybridPbkdf2.cpp +7 -8
- package/cpp/rsa/HybridRsaKeyPair.cpp +5 -8
- package/cpp/rsa/HybridRsaKeyPair.hpp +4 -7
- package/cpp/scrypt/HybridScrypt.cpp +6 -4
- package/cpp/sign/HybridSignHandle.cpp +47 -72
- package/cpp/sign/HybridVerifyHandle.cpp +47 -67
- package/cpp/slhdsa/HybridSlhDsaKeyPair.cpp +245 -0
- package/cpp/slhdsa/HybridSlhDsaKeyPair.hpp +48 -0
- package/cpp/turboshake/HybridTurboShake.cpp +379 -0
- package/cpp/turboshake/HybridTurboShake.hpp +28 -0
- package/cpp/utils/HybridUtils.cpp +195 -43
- package/cpp/utils/HybridUtils.hpp +9 -2
- package/cpp/utils/QuickCryptoUtils.hpp +72 -0
- package/deps/blake3/README.md +6 -7
- package/deps/blake3/c/blake3.c +3 -2
- package/deps/blake3/c/blake3.h +2 -2
- package/deps/blake3/c/blake3_dispatch.c +2 -2
- package/deps/blake3/c/blake3_impl.h +1 -1
- package/deps/blake3/c/blake3_neon.c +5 -4
- package/deps/ncrypto/include/ncrypto/version.h +2 -2
- package/deps/ncrypto/include/ncrypto.h +9 -2
- package/deps/ncrypto/src/ncrypto.cpp +130 -35
- package/lib/commonjs/argon2.js +51 -2
- package/lib/commonjs/argon2.js.map +1 -1
- package/lib/commonjs/cipher.js +109 -11
- package/lib/commonjs/cipher.js.map +1 -1
- package/lib/commonjs/dhKeyPair.js +3 -0
- package/lib/commonjs/dhKeyPair.js.map +1 -1
- package/lib/commonjs/dsa.js +11 -2
- package/lib/commonjs/dsa.js.map +1 -1
- package/lib/commonjs/ec.js +37 -30
- package/lib/commonjs/ec.js.map +1 -1
- package/lib/commonjs/ed.js +60 -6
- package/lib/commonjs/ed.js.map +1 -1
- package/lib/commonjs/hash.js +67 -10
- package/lib/commonjs/hash.js.map +1 -1
- package/lib/commonjs/hkdf.js +33 -6
- package/lib/commonjs/hkdf.js.map +1 -1
- package/lib/commonjs/hmac.js +15 -5
- package/lib/commonjs/hmac.js.map +1 -1
- package/lib/commonjs/keys/classes.js +33 -7
- package/lib/commonjs/keys/classes.js.map +1 -1
- package/lib/commonjs/keys/generateKeyPair.js +85 -4
- package/lib/commonjs/keys/generateKeyPair.js.map +1 -1
- package/lib/commonjs/keys/index.js +50 -2
- package/lib/commonjs/keys/index.js.map +1 -1
- package/lib/commonjs/keys/publicCipher.js +10 -4
- package/lib/commonjs/keys/publicCipher.js.map +1 -1
- package/lib/commonjs/keys/signVerify.js +9 -2
- package/lib/commonjs/keys/signVerify.js.map +1 -1
- package/lib/commonjs/keys/utils.js +59 -1
- package/lib/commonjs/keys/utils.js.map +1 -1
- package/lib/commonjs/random.js +74 -11
- package/lib/commonjs/random.js.map +1 -1
- package/lib/commonjs/rsa.js +15 -5
- package/lib/commonjs/rsa.js.map +1 -1
- package/lib/commonjs/scrypt.js +47 -6
- package/lib/commonjs/scrypt.js.map +1 -1
- package/lib/commonjs/slhdsa.js +70 -0
- package/lib/commonjs/slhdsa.js.map +1 -0
- package/lib/commonjs/specs/slhDsaKeyPair.nitro.js +6 -0
- package/lib/commonjs/specs/slhDsaKeyPair.nitro.js.map +1 -0
- package/lib/commonjs/specs/turboshake.nitro.js +6 -0
- package/lib/commonjs/specs/turboshake.nitro.js.map +1 -0
- package/lib/commonjs/subtle.js +975 -253
- package/lib/commonjs/subtle.js.map +1 -1
- package/lib/commonjs/utils/cipher.js +18 -7
- package/lib/commonjs/utils/cipher.js.map +1 -1
- package/lib/commonjs/utils/conversion.js +86 -28
- package/lib/commonjs/utils/conversion.js.map +1 -1
- package/lib/commonjs/utils/errors.js +63 -4
- package/lib/commonjs/utils/errors.js.map +1 -1
- package/lib/commonjs/utils/timingSafeEqual.js +7 -2
- package/lib/commonjs/utils/timingSafeEqual.js.map +1 -1
- package/lib/commonjs/utils/types.js.map +1 -1
- package/lib/commonjs/utils/validation.js +46 -0
- package/lib/commonjs/utils/validation.js.map +1 -1
- package/lib/commonjs/x509certificate.js +6 -6
- package/lib/commonjs/x509certificate.js.map +1 -1
- package/lib/module/argon2.js +51 -2
- package/lib/module/argon2.js.map +1 -1
- package/lib/module/cipher.js +109 -11
- package/lib/module/cipher.js.map +1 -1
- package/lib/module/dhKeyPair.js +3 -0
- package/lib/module/dhKeyPair.js.map +1 -1
- package/lib/module/dsa.js +11 -2
- package/lib/module/dsa.js.map +1 -1
- package/lib/module/ec.js +38 -31
- package/lib/module/ec.js.map +1 -1
- package/lib/module/ed.js +61 -7
- package/lib/module/ed.js.map +1 -1
- package/lib/module/hash.js +67 -10
- package/lib/module/hash.js.map +1 -1
- package/lib/module/hkdf.js +33 -6
- package/lib/module/hkdf.js.map +1 -1
- package/lib/module/hmac.js +15 -5
- package/lib/module/hmac.js.map +1 -1
- package/lib/module/keys/classes.js +31 -5
- package/lib/module/keys/classes.js.map +1 -1
- package/lib/module/keys/generateKeyPair.js +86 -5
- package/lib/module/keys/generateKeyPair.js.map +1 -1
- package/lib/module/keys/index.js +50 -2
- package/lib/module/keys/index.js.map +1 -1
- package/lib/module/keys/publicCipher.js +10 -4
- package/lib/module/keys/publicCipher.js.map +1 -1
- package/lib/module/keys/signVerify.js +9 -2
- package/lib/module/keys/signVerify.js.map +1 -1
- package/lib/module/keys/utils.js +57 -1
- package/lib/module/keys/utils.js.map +1 -1
- package/lib/module/random.js +74 -12
- package/lib/module/random.js.map +1 -1
- package/lib/module/rsa.js +14 -4
- package/lib/module/rsa.js.map +1 -1
- package/lib/module/scrypt.js +47 -6
- package/lib/module/scrypt.js.map +1 -1
- package/lib/module/slhdsa.js +64 -0
- package/lib/module/slhdsa.js.map +1 -0
- package/lib/module/specs/slhDsaKeyPair.nitro.js +4 -0
- package/lib/module/specs/slhDsaKeyPair.nitro.js.map +1 -0
- package/lib/module/specs/turboshake.nitro.js +4 -0
- package/lib/module/specs/turboshake.nitro.js.map +1 -0
- package/lib/module/subtle.js +976 -254
- package/lib/module/subtle.js.map +1 -1
- package/lib/module/utils/cipher.js +18 -7
- package/lib/module/utils/cipher.js.map +1 -1
- package/lib/module/utils/conversion.js +84 -28
- package/lib/module/utils/conversion.js.map +1 -1
- package/lib/module/utils/errors.js +61 -4
- package/lib/module/utils/errors.js.map +1 -1
- package/lib/module/utils/timingSafeEqual.js +8 -3
- package/lib/module/utils/timingSafeEqual.js.map +1 -1
- package/lib/module/utils/types.js.map +1 -1
- package/lib/module/utils/validation.js +44 -0
- package/lib/module/utils/validation.js.map +1 -1
- package/lib/module/x509certificate.js +6 -6
- package/lib/module/x509certificate.js.map +1 -1
- package/lib/typescript/argon2.d.ts.map +1 -1
- package/lib/typescript/cipher.d.ts +2 -2
- package/lib/typescript/cipher.d.ts.map +1 -1
- package/lib/typescript/dhKeyPair.d.ts.map +1 -1
- package/lib/typescript/dsa.d.ts.map +1 -1
- package/lib/typescript/ec.d.ts.map +1 -1
- package/lib/typescript/ed.d.ts.map +1 -1
- package/lib/typescript/hash.d.ts +2 -2
- package/lib/typescript/hash.d.ts.map +1 -1
- package/lib/typescript/hkdf.d.ts.map +1 -1
- package/lib/typescript/hmac.d.ts +2 -2
- package/lib/typescript/hmac.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +13 -8
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/keys/classes.d.ts +10 -1
- package/lib/typescript/keys/classes.d.ts.map +1 -1
- package/lib/typescript/keys/generateKeyPair.d.ts +12 -1
- package/lib/typescript/keys/generateKeyPair.d.ts.map +1 -1
- package/lib/typescript/keys/index.d.ts +3 -1
- package/lib/typescript/keys/index.d.ts.map +1 -1
- package/lib/typescript/keys/publicCipher.d.ts.map +1 -1
- package/lib/typescript/keys/signVerify.d.ts.map +1 -1
- package/lib/typescript/keys/utils.d.ts +21 -4
- package/lib/typescript/keys/utils.d.ts.map +1 -1
- package/lib/typescript/random.d.ts +5 -1
- package/lib/typescript/random.d.ts.map +1 -1
- package/lib/typescript/rsa.d.ts.map +1 -1
- package/lib/typescript/scrypt.d.ts.map +1 -1
- package/lib/typescript/slhdsa.d.ts +19 -0
- package/lib/typescript/slhdsa.d.ts.map +1 -0
- package/lib/typescript/specs/keyObjectHandle.nitro.d.ts +9 -0
- package/lib/typescript/specs/keyObjectHandle.nitro.d.ts.map +1 -1
- package/lib/typescript/specs/slhDsaKeyPair.nitro.d.ts +16 -0
- package/lib/typescript/specs/slhDsaKeyPair.nitro.d.ts.map +1 -0
- package/lib/typescript/specs/turboshake.nitro.d.ts +11 -0
- package/lib/typescript/specs/turboshake.nitro.d.ts.map +1 -0
- package/lib/typescript/specs/utils.nitro.d.ts +0 -2
- package/lib/typescript/specs/utils.nitro.d.ts.map +1 -1
- package/lib/typescript/subtle.d.ts +3 -2
- package/lib/typescript/subtle.d.ts.map +1 -1
- package/lib/typescript/utils/cipher.d.ts +13 -1
- package/lib/typescript/utils/cipher.d.ts.map +1 -1
- package/lib/typescript/utils/conversion.d.ts +13 -9
- package/lib/typescript/utils/conversion.d.ts.map +1 -1
- package/lib/typescript/utils/errors.d.ts +12 -0
- package/lib/typescript/utils/errors.d.ts.map +1 -1
- package/lib/typescript/utils/timingSafeEqual.d.ts.map +1 -1
- package/lib/typescript/utils/types.d.ts +32 -15
- package/lib/typescript/utils/types.d.ts.map +1 -1
- package/lib/typescript/utils/validation.d.ts +3 -1
- package/lib/typescript/utils/validation.d.ts.map +1 -1
- package/lib/typescript/x509certificate.d.ts.map +1 -1
- package/nitrogen/generated/android/QuickCrypto+autolinking.cmake +2 -0
- package/nitrogen/generated/android/QuickCryptoOnLoad.cpp +20 -0
- package/nitrogen/generated/ios/QuickCryptoAutolinking.mm +20 -0
- package/nitrogen/generated/shared/c++/AsymmetricKeyType.hpp +48 -0
- package/nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.cpp +9 -0
- package/nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.hpp +9 -0
- package/nitrogen/generated/shared/c++/HybridSlhDsaKeyPairSpec.cpp +29 -0
- package/nitrogen/generated/shared/c++/HybridSlhDsaKeyPairSpec.hpp +72 -0
- package/nitrogen/generated/shared/c++/HybridTurboShakeSpec.cpp +22 -0
- package/nitrogen/generated/shared/c++/HybridTurboShakeSpec.hpp +70 -0
- package/nitrogen/generated/shared/c++/HybridUtilsSpec.cpp +0 -2
- package/nitrogen/generated/shared/c++/HybridUtilsSpec.hpp +0 -3
- package/nitrogen/generated/shared/c++/JWK.hpp +9 -1
- package/nitrogen/generated/shared/c++/JWKkty.hpp +4 -0
- package/nitrogen/generated/shared/c++/KangarooTwelveVariant.hpp +76 -0
- package/nitrogen/generated/shared/c++/TurboShakeVariant.hpp +76 -0
- package/package.json +38 -7
- package/src/argon2.ts +80 -2
- package/src/cipher.ts +139 -15
- package/src/dhKeyPair.ts +8 -0
- package/src/dsa.ts +19 -2
- package/src/ec.ts +52 -29
- package/src/ed.ts +95 -16
- package/src/hash.ts +125 -12
- package/src/hkdf.ts +44 -6
- package/src/hmac.ts +17 -7
- package/src/keys/classes.ts +46 -5
- package/src/keys/generateKeyPair.ts +151 -5
- package/src/keys/index.ts +73 -3
- package/src/keys/publicCipher.ts +10 -4
- package/src/keys/signVerify.ts +13 -2
- package/src/keys/utils.ts +78 -5
- package/src/random.ts +104 -11
- package/src/rsa.ts +26 -4
- package/src/scrypt.ts +73 -6
- package/src/slhdsa.ts +146 -0
- package/src/specs/keyObjectHandle.nitro.ts +17 -0
- package/src/specs/slhDsaKeyPair.nitro.ts +29 -0
- package/src/specs/turboshake.nitro.ts +21 -0
- package/src/specs/utils.nitro.ts +0 -2
- package/src/subtle.ts +1246 -333
- package/src/utils/cipher.ts +30 -8
- package/src/utils/conversion.ts +129 -40
- package/src/utils/errors.ts +72 -4
- package/src/utils/timingSafeEqual.ts +8 -3
- package/src/utils/types.ts +80 -15
- package/src/utils/validation.ts +70 -1
- package/src/x509certificate.ts +5 -6
- package/deps/blake3/.cargo/config.toml +0 -2
- package/deps/blake3/.git-blame-ignore-revs +0 -2
- package/deps/blake3/.github/workflows/build_b3sum.py +0 -38
- package/deps/blake3/.github/workflows/ci.yml +0 -491
- package/deps/blake3/.github/workflows/tag.yml +0 -43
- package/deps/blake3/.github/workflows/upload_github_release_asset.py +0 -73
- package/deps/blake3/CONTRIBUTING.md +0 -31
- package/deps/blake3/Cargo.toml +0 -135
- package/deps/blake3/b3sum/Cargo.lock +0 -513
- package/deps/blake3/b3sum/Cargo.toml +0 -26
- package/deps/blake3/b3sum/README.md +0 -72
- package/deps/blake3/b3sum/src/main.rs +0 -564
- package/deps/blake3/b3sum/src/unit_tests.rs +0 -235
- package/deps/blake3/b3sum/tests/cli_tests.rs +0 -680
- package/deps/blake3/b3sum/what_does_check_do.md +0 -176
- package/deps/blake3/benches/bench.rs +0 -623
- package/deps/blake3/build.rs +0 -389
- package/deps/blake3/c/CMakeLists.txt +0 -383
- package/deps/blake3/c/CMakePresets.json +0 -73
- package/deps/blake3/c/Makefile.testing +0 -82
- package/deps/blake3/c/blake3-config.cmake.in +0 -14
- package/deps/blake3/c/blake3_avx2.c +0 -326
- package/deps/blake3/c/blake3_avx2_x86-64_unix.S +0 -1815
- package/deps/blake3/c/blake3_avx2_x86-64_windows_gnu.S +0 -1817
- package/deps/blake3/c/blake3_avx2_x86-64_windows_msvc.asm +0 -1828
- package/deps/blake3/c/blake3_avx512.c +0 -1388
- package/deps/blake3/c/blake3_avx512_x86-64_unix.S +0 -4824
- package/deps/blake3/c/blake3_avx512_x86-64_windows_gnu.S +0 -2615
- package/deps/blake3/c/blake3_avx512_x86-64_windows_msvc.asm +0 -2634
- package/deps/blake3/c/blake3_c_rust_bindings/Cargo.toml +0 -32
- package/deps/blake3/c/blake3_c_rust_bindings/README.md +0 -4
- package/deps/blake3/c/blake3_c_rust_bindings/benches/bench.rs +0 -477
- package/deps/blake3/c/blake3_c_rust_bindings/build.rs +0 -253
- package/deps/blake3/c/blake3_c_rust_bindings/cross_test.sh +0 -31
- package/deps/blake3/c/blake3_c_rust_bindings/src/lib.rs +0 -333
- package/deps/blake3/c/blake3_c_rust_bindings/src/test.rs +0 -696
- package/deps/blake3/c/blake3_sse2.c +0 -566
- package/deps/blake3/c/blake3_sse2_x86-64_unix.S +0 -2291
- package/deps/blake3/c/blake3_sse2_x86-64_windows_gnu.S +0 -2332
- package/deps/blake3/c/blake3_sse2_x86-64_windows_msvc.asm +0 -2350
- package/deps/blake3/c/blake3_sse41.c +0 -560
- package/deps/blake3/c/blake3_sse41_x86-64_unix.S +0 -2028
- package/deps/blake3/c/blake3_sse41_x86-64_windows_gnu.S +0 -2069
- package/deps/blake3/c/blake3_sse41_x86-64_windows_msvc.asm +0 -2089
- package/deps/blake3/c/blake3_tbb.cpp +0 -37
- package/deps/blake3/c/dependencies/CMakeLists.txt +0 -3
- package/deps/blake3/c/dependencies/tbb/CMakeLists.txt +0 -28
- package/deps/blake3/c/example.c +0 -36
- package/deps/blake3/c/example_tbb.c +0 -57
- package/deps/blake3/c/libblake3.pc.in +0 -12
- package/deps/blake3/c/main.c +0 -166
- package/deps/blake3/c/test.py +0 -97
- package/deps/blake3/media/B3.svg +0 -70
- package/deps/blake3/media/BLAKE3.svg +0 -85
- package/deps/blake3/media/speed.svg +0 -1474
- package/deps/blake3/reference_impl/Cargo.toml +0 -8
- package/deps/blake3/reference_impl/README.md +0 -14
- package/deps/blake3/reference_impl/reference_impl.rs +0 -374
- package/deps/blake3/src/ffi_avx2.rs +0 -65
- package/deps/blake3/src/ffi_avx512.rs +0 -169
- package/deps/blake3/src/ffi_neon.rs +0 -82
- package/deps/blake3/src/ffi_sse2.rs +0 -126
- package/deps/blake3/src/ffi_sse41.rs +0 -126
- package/deps/blake3/src/guts.rs +0 -60
- package/deps/blake3/src/hazmat.rs +0 -704
- package/deps/blake3/src/io.rs +0 -64
- package/deps/blake3/src/join.rs +0 -92
- package/deps/blake3/src/lib.rs +0 -1835
- package/deps/blake3/src/platform.rs +0 -587
- package/deps/blake3/src/portable.rs +0 -198
- package/deps/blake3/src/rust_avx2.rs +0 -474
- package/deps/blake3/src/rust_sse2.rs +0 -775
- package/deps/blake3/src/rust_sse41.rs +0 -766
- package/deps/blake3/src/test.rs +0 -1049
- package/deps/blake3/src/traits.rs +0 -227
- package/deps/blake3/src/wasm32_simd.rs +0 -794
- package/deps/blake3/test_vectors/Cargo.toml +0 -19
- package/deps/blake3/test_vectors/cross_test.sh +0 -25
- package/deps/blake3/test_vectors/src/bin/generate.rs +0 -4
- package/deps/blake3/test_vectors/src/lib.rs +0 -350
- package/deps/blake3/test_vectors/test_vectors.json +0 -217
- package/deps/blake3/tools/compiler_version/Cargo.toml +0 -7
- package/deps/blake3/tools/compiler_version/build.rs +0 -6
- package/deps/blake3/tools/compiler_version/src/main.rs +0 -27
- package/deps/blake3/tools/instruction_set_support/Cargo.toml +0 -6
- package/deps/blake3/tools/instruction_set_support/src/main.rs +0 -10
- package/deps/blake3/tools/release.md +0 -16
- package/deps/ncrypto/.bazelignore +0 -4
- package/deps/ncrypto/.bazelrc +0 -1
- package/deps/ncrypto/.bazelversion +0 -1
- package/deps/ncrypto/.clang-format +0 -111
- package/deps/ncrypto/.github/workflows/bazel.yml +0 -58
- package/deps/ncrypto/.github/workflows/commitlint.yml +0 -16
- package/deps/ncrypto/.github/workflows/linter.yml +0 -38
- package/deps/ncrypto/.github/workflows/macos.yml +0 -43
- package/deps/ncrypto/.github/workflows/release-please.yml +0 -16
- package/deps/ncrypto/.github/workflows/ubuntu.yml +0 -128
- package/deps/ncrypto/.github/workflows/visual-studio.yml +0 -49
- package/deps/ncrypto/.python-version +0 -1
- package/deps/ncrypto/.release-please-manifest.json +0 -3
- package/deps/ncrypto/BUILD.bazel +0 -44
- package/deps/ncrypto/CHANGELOG.md +0 -37
- package/deps/ncrypto/CMakeLists.txt +0 -79
- package/deps/ncrypto/MODULE.bazel +0 -16
- package/deps/ncrypto/MODULE.bazel.lock +0 -461
- package/deps/ncrypto/cmake/CPM.cmake +0 -1225
- package/deps/ncrypto/cmake/ncrypto-flags.cmake +0 -17
- package/deps/ncrypto/ncrypto.pc.in +0 -10
- package/deps/ncrypto/patches/0001-Expose-libdecrepit-so-NodeJS-can-use-it-for-ncrypto.patch +0 -28
- package/deps/ncrypto/pyproject.toml +0 -38
- package/deps/ncrypto/release-please-config.json +0 -11
- package/deps/ncrypto/src/CMakeLists.txt +0 -40
- package/deps/ncrypto/tests/BUILD.bazel +0 -11
- package/deps/ncrypto/tests/CMakeLists.txt +0 -7
- package/deps/ncrypto/tests/basic.cpp +0 -856
- package/deps/ncrypto/tools/run-clang-format.sh +0 -42
- package/deps/simdutf/.clang-format +0 -4
- package/deps/simdutf/.github/ISSUE_TEMPLATE/bug_report.md +0 -62
- package/deps/simdutf/.github/ISSUE_TEMPLATE/config.yml +0 -1
- package/deps/simdutf/.github/ISSUE_TEMPLATE/feature_request.md +0 -35
- package/deps/simdutf/.github/ISSUE_TEMPLATE/standard-issue-template.md +0 -29
- package/deps/simdutf/.github/pull_request_template.md +0 -51
- package/deps/simdutf/.github/workflows/aarch64.yml +0 -39
- package/deps/simdutf/.github/workflows/alpine.yml +0 -27
- package/deps/simdutf/.github/workflows/amalgamation_demos.yml +0 -34
- package/deps/simdutf/.github/workflows/armv7.yml +0 -32
- package/deps/simdutf/.github/workflows/atomic_fuzz.yml +0 -25
- package/deps/simdutf/.github/workflows/cifuzz.yml +0 -37
- package/deps/simdutf/.github/workflows/clangformat.yml +0 -36
- package/deps/simdutf/.github/workflows/debian-latestcxxstandards.yml +0 -40
- package/deps/simdutf/.github/workflows/debian.yml +0 -33
- package/deps/simdutf/.github/workflows/documentation.yml +0 -36
- package/deps/simdutf/.github/workflows/emscripten.yml +0 -19
- package/deps/simdutf/.github/workflows/loongarch64-gcc-14.2.yml +0 -39
- package/deps/simdutf/.github/workflows/macos-latest.yml +0 -29
- package/deps/simdutf/.github/workflows/msys2-clang.yml +0 -48
- package/deps/simdutf/.github/workflows/msys2.yml +0 -50
- package/deps/simdutf/.github/workflows/ppc64le.yml +0 -29
- package/deps/simdutf/.github/workflows/rvv-1024-clang-18.yml +0 -35
- package/deps/simdutf/.github/workflows/rvv-128-clang-17.yml +0 -35
- package/deps/simdutf/.github/workflows/rvv-256-gcc-14.yml +0 -31
- package/deps/simdutf/.github/workflows/s390x.yml +0 -29
- package/deps/simdutf/.github/workflows/selective-amalgamation.yml +0 -29
- package/deps/simdutf/.github/workflows/typos.yml +0 -19
- package/deps/simdutf/.github/workflows/ubuntu22-cxx20.yml +0 -30
- package/deps/simdutf/.github/workflows/ubuntu22.yml +0 -32
- package/deps/simdutf/.github/workflows/ubuntu22_gcc12.yml +0 -27
- package/deps/simdutf/.github/workflows/ubuntu22sani.yml +0 -29
- package/deps/simdutf/.github/workflows/ubuntu24-cxxstandards.yml +0 -34
- package/deps/simdutf/.github/workflows/ubuntu24-unsignedchar.yml +0 -34
- package/deps/simdutf/.github/workflows/ubuntu24.yml +0 -32
- package/deps/simdutf/.github/workflows/ubuntu24sani.yml +0 -36
- package/deps/simdutf/.github/workflows/ubuntu24sani_clang.yml +0 -29
- package/deps/simdutf/.github/workflows/vs17-arm-ci.yml +0 -21
- package/deps/simdutf/.github/workflows/vs17-ci-cxx20.yml +0 -41
- package/deps/simdutf/.github/workflows/vs17-ci.yml +0 -41
- package/deps/simdutf/.github/workflows/vs17-clang-ci.yml +0 -41
- package/deps/simdutf/.github/workflows/vs17-cxxstandards.yml +0 -36
- package/deps/simdutf/AI_USAGE_POLICY.md +0 -56
- package/deps/simdutf/AUTHORS +0 -6
- package/deps/simdutf/CMakeLists.txt +0 -231
- package/deps/simdutf/CONTRIBUTING.md +0 -214
- package/deps/simdutf/CONTRIBUTORS +0 -1
- package/deps/simdutf/Doxyfile +0 -2584
- package/deps/simdutf/Makefile.crosscompile +0 -54
- package/deps/simdutf/README-RVV.md +0 -16
- package/deps/simdutf/SECURITY.md +0 -8
- package/deps/simdutf/benchmarks/CMakeLists.txt +0 -101
- package/deps/simdutf/benchmarks/alignment.cpp +0 -150
- package/deps/simdutf/benchmarks/base64/CMakeLists.txt +0 -30
- package/deps/simdutf/benchmarks/base64/benchmark_base64.cpp +0 -875
- package/deps/simdutf/benchmarks/base64/libbase64_spaces.h +0 -49
- package/deps/simdutf/benchmarks/base64/node_base64.h +0 -227
- package/deps/simdutf/benchmarks/base64/openssl3_base64.h +0 -334
- package/deps/simdutf/benchmarks/benchmark.cpp +0 -65
- package/deps/simdutf/benchmarks/benchmark_to_well_formed_utf16.cpp +0 -347
- package/deps/simdutf/benchmarks/competition/.clang-format-ignore +0 -5
- package/deps/simdutf/benchmarks/competition/CppCon2018/utf_utils.cpp +0 -1276
- package/deps/simdutf/benchmarks/competition/CppCon2018/utf_utils.h +0 -595
- package/deps/simdutf/benchmarks/competition/README.md +0 -7
- package/deps/simdutf/benchmarks/competition/hoehrmann/hoehrmann.h +0 -91
- package/deps/simdutf/benchmarks/competition/inoue2008/inoue_utf8_to_utf16.h +0 -444
- package/deps/simdutf/benchmarks/competition/inoue2008/inoue_utf8_to_utf16_tables.h +0 -13183
- package/deps/simdutf/benchmarks/competition/inoue2008/script.py +0 -73
- package/deps/simdutf/benchmarks/competition/llvm/ConvertUTF.cpp +0 -738
- package/deps/simdutf/benchmarks/competition/llvm/ConvertUTF.h +0 -293
- package/deps/simdutf/benchmarks/competition/u8u16/COPYRIGHT +0 -8
- package/deps/simdutf/benchmarks/competition/u8u16/Makefile +0 -44
- package/deps/simdutf/benchmarks/competition/u8u16/OSL3.0.txt +0 -169
- package/deps/simdutf/benchmarks/competition/u8u16/Profiling/BOM_Profiler.h +0 -148
- package/deps/simdutf/benchmarks/competition/u8u16/Profiling/i386_timer.h +0 -45
- package/deps/simdutf/benchmarks/competition/u8u16/Profiling/ppc_timer.c +0 -34
- package/deps/simdutf/benchmarks/competition/u8u16/README +0 -56
- package/deps/simdutf/benchmarks/competition/u8u16/config/config_defs.h +0 -43
- package/deps/simdutf/benchmarks/competition/u8u16/config/g4_config.h +0 -27
- package/deps/simdutf/benchmarks/competition/u8u16/config/mmx_config.h +0 -16
- package/deps/simdutf/benchmarks/competition/u8u16/config/p4_config.h +0 -18
- package/deps/simdutf/benchmarks/competition/u8u16/config/p4_ideal_config.h +0 -16
- package/deps/simdutf/benchmarks/competition/u8u16/config/spu_config.h +0 -28
- package/deps/simdutf/benchmarks/competition/u8u16/config/ssse3_config.h +0 -20
- package/deps/simdutf/benchmarks/competition/u8u16/iconv_u8u16.c +0 -2
- package/deps/simdutf/benchmarks/competition/u8u16/lib/altivec_simd.h +0 -440
- package/deps/simdutf/benchmarks/competition/u8u16/lib/libgen/make_basic_ops.py +0 -121
- package/deps/simdutf/benchmarks/competition/u8u16/lib/libgen/make_half_operand_versions.py +0 -158
- package/deps/simdutf/benchmarks/competition/u8u16/lib/libgen/make_test.py +0 -270
- package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd.h +0 -141
- package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd_basic.h +0 -216
- package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd_built_in.h +0 -119
- package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd_modified.h +0 -2430
- package/deps/simdutf/benchmarks/competition/u8u16/lib/outline.txt +0 -39
- package/deps/simdutf/benchmarks/competition/u8u16/lib/spu_simd.h +0 -421
- package/deps/simdutf/benchmarks/competition/u8u16/lib/sse_simd.h +0 -836
- package/deps/simdutf/benchmarks/competition/u8u16/lib/stdint.h +0 -222
- package/deps/simdutf/benchmarks/competition/u8u16/libu8u16_BE.c +0 -4
- package/deps/simdutf/benchmarks/competition/u8u16/libu8u16_LE.c +0 -5
- package/deps/simdutf/benchmarks/competition/u8u16/proto/u8u16.py +0 -390
- package/deps/simdutf/benchmarks/competition/u8u16/src/Makefile +0 -18
- package/deps/simdutf/benchmarks/competition/u8u16/src/bytelex.h +0 -448
- package/deps/simdutf/benchmarks/competition/u8u16/src/charsets/ASCII_EBCDIC.h +0 -284
- package/deps/simdutf/benchmarks/competition/u8u16/src/libu8u16.c +0 -1975
- package/deps/simdutf/benchmarks/competition/u8u16/src/libu8u16.pdf +0 -0
- package/deps/simdutf/benchmarks/competition/u8u16/src/libu8u16.w +0 -2263
- package/deps/simdutf/benchmarks/competition/u8u16/src/multiliteral.h +0 -239
- package/deps/simdutf/benchmarks/competition/u8u16/src/u8u16.c +0 -232
- package/deps/simdutf/benchmarks/competition/u8u16/src/x8x16.c +0 -194
- package/deps/simdutf/benchmarks/competition/u8u16/src/xml_error.c +0 -193
- package/deps/simdutf/benchmarks/competition/u8u16/src/xml_error.h +0 -167
- package/deps/simdutf/benchmarks/competition/u8u16/src/xmldecl.c +0 -288
- package/deps/simdutf/benchmarks/competition/u8u16/src/xmldecl.h +0 -117
- package/deps/simdutf/benchmarks/competition/u8u16/u8u16_g4.c +0 -2
- package/deps/simdutf/benchmarks/competition/u8u16/u8u16_mmx.c +0 -2
- package/deps/simdutf/benchmarks/competition/u8u16/u8u16_p4.c +0 -3
- package/deps/simdutf/benchmarks/competition/u8u16/u8u16_p4_ideal.c +0 -2
- package/deps/simdutf/benchmarks/competition/u8u16/u8u16_spu.c +0 -2
- package/deps/simdutf/benchmarks/competition/u8u16/u8u16_ssse3.c +0 -3
- package/deps/simdutf/benchmarks/competition/u8u16/x8x16_p4.c +0 -2
- package/deps/simdutf/benchmarks/competition/utf8lut/LICENSE +0 -23
- package/deps/simdutf/benchmarks/competition/utf8lut/data/test_minimal.txt +0 -44
- package/deps/simdutf/benchmarks/competition/utf8lut/readme.md +0 -106
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_clang_corr_tests.cmd +0 -11
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_clang_corr_tests.sh +0 -13
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_corr_tests.sh +0 -13
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_example.sh +0 -13
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_file_conv.sh +0 -14
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_iconv_lib.sh +0 -11
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_iconv_sample.sh +0 -8
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_corr_tests.cmd +0 -12
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_example.cmd +0 -13
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_file_conv.cmd +0 -14
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_iconv_lib.cmd +0 -11
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_iconv_sample.cmd +0 -8
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_corr_tests.cmd +0 -11
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_example.cmd +0 -12
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_file_conv.cmd +0 -13
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_iconv_lib.cmd +0 -10
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_iconv_sample.cmd +0 -9
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/html_table.py +0 -25
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/measure.py +0 -94
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/resize.py +0 -20
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/wipe_all.cmd +0 -2
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/wipe_interm.cmd +0 -1
- package/deps/simdutf/benchmarks/competition/utf8lut/src/base/CustomMemcpy.h +0 -75
- package/deps/simdutf/benchmarks/competition/utf8lut/src/base/PerfDefs.h +0 -47
- package/deps/simdutf/benchmarks/competition/utf8lut/src/base/Timing.cpp +0 -17
- package/deps/simdutf/benchmarks/competition/utf8lut/src/base/Timing.h +0 -76
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/AllProcessors.cpp +0 -35
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BaseBufferProcessor.cpp +0 -117
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BaseBufferProcessor.h +0 -210
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BufferDecoder.h +0 -158
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BufferEncoder.h +0 -104
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/ProcessorPlugins.h +0 -334
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/ProcessorSelector.h +0 -186
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/DecoderLut.cpp +0 -140
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/DecoderLut.h +0 -42
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/DecoderProcess.h +0 -100
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/Dfa.h +0 -57
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/EncoderLut.cpp +0 -85
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/EncoderLut.h +0 -27
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/EncoderProcess.h +0 -126
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/ProcessTrivial.h +0 -108
- package/deps/simdutf/benchmarks/competition/utf8lut/src/iconv/iconv.cpp +0 -139
- package/deps/simdutf/benchmarks/competition/utf8lut/src/iconv/iconv.h +0 -74
- package/deps/simdutf/benchmarks/competition/utf8lut/src/message/MessageConverter.cpp +0 -65
- package/deps/simdutf/benchmarks/competition/utf8lut/src/message/MessageConverter.h +0 -91
- package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/CorrectnessTests.cpp +0 -772
- package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/Example.cpp +0 -12
- package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/FileConverter.cpp +0 -486
- package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/iconv_sample.c +0 -162
- package/deps/simdutf/benchmarks/competition/utf8lut/src/utf8lut.h +0 -15
- package/deps/simdutf/benchmarks/competition/utf8sse4/fromutf8-sse.cpp +0 -292
- package/deps/simdutf/benchmarks/competition/utfcpp/LICENSE +0 -23
- package/deps/simdutf/benchmarks/competition/utfcpp/README.md +0 -1503
- package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/checked.h +0 -335
- package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/core.h +0 -338
- package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/cpp11.h +0 -103
- package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/cpp17.h +0 -103
- package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/unchecked.h +0 -274
- package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8.h +0 -34
- package/deps/simdutf/benchmarks/dataset/README.md +0 -155
- package/deps/simdutf/benchmarks/dataset/emoji.txt +0 -204
- package/deps/simdutf/benchmarks/dataset/scripts/utf8type.py +0 -40
- package/deps/simdutf/benchmarks/dataset/wikipedia_mars/Makefile +0 -80
- package/deps/simdutf/benchmarks/dataset/wikipedia_mars/convert_to_utf6.py +0 -20
- package/deps/simdutf/benchmarks/find/CMakeLists.txt +0 -6
- package/deps/simdutf/benchmarks/find/findbenchmark.cpp +0 -63
- package/deps/simdutf/benchmarks/find/findbenchmarker.h +0 -46
- package/deps/simdutf/benchmarks/shortbench.cpp +0 -555
- package/deps/simdutf/benchmarks/src/CMakeLists.txt +0 -52
- package/deps/simdutf/benchmarks/src/apple_arm_events.h +0 -1104
- package/deps/simdutf/benchmarks/src/benchmark.cpp +0 -3899
- package/deps/simdutf/benchmarks/src/benchmark.h +0 -317
- package/deps/simdutf/benchmarks/src/benchmark_base.cpp +0 -144
- package/deps/simdutf/benchmarks/src/benchmark_base.h +0 -98
- package/deps/simdutf/benchmarks/src/cmdline.cpp +0 -176
- package/deps/simdutf/benchmarks/src/cmdline.h +0 -35
- package/deps/simdutf/benchmarks/src/event_counter.h +0 -162
- package/deps/simdutf/benchmarks/src/linux-perf-events.h +0 -104
- package/deps/simdutf/benchmarks/stream.cpp +0 -209
- package/deps/simdutf/benchmarks/threaded.cpp +0 -123
- package/deps/simdutf/cmake/CPM.cmake +0 -1363
- package/deps/simdutf/cmake/JoinPaths.cmake +0 -23
- package/deps/simdutf/cmake/add_cpp_test.cmake +0 -68
- package/deps/simdutf/cmake/simdutf-config.cmake.in +0 -2
- package/deps/simdutf/cmake/simdutf-flags.cmake +0 -26
- package/deps/simdutf/cmake/toolchains-ci/riscv64-linux-gnu.cmake +0 -4
- package/deps/simdutf/cmake/toolchains-dev/README.md +0 -32
- package/deps/simdutf/cmake/toolchains-dev/aarch64.cmake +0 -14
- package/deps/simdutf/cmake/toolchains-dev/loongarch64.cmake +0 -22
- package/deps/simdutf/cmake/toolchains-dev/powerpc64.cmake +0 -16
- package/deps/simdutf/cmake/toolchains-dev/powerpc64le.cmake +0 -16
- package/deps/simdutf/cmake/toolchains-dev/riscv64.cmake +0 -16
- package/deps/simdutf/cmake/toolchains-dev/rvv-spike.cmake +0 -38
- package/deps/simdutf/doc/avx512.png +0 -0
- package/deps/simdutf/doc/logo.png +0 -0
- package/deps/simdutf/doc/logo.svg +0 -165
- package/deps/simdutf/doc/node2023.png +0 -0
- package/deps/simdutf/doc/shortinput.md +0 -78
- package/deps/simdutf/doc/utf16utf8.png +0 -0
- package/deps/simdutf/doc/utf8utf16.png +0 -0
- package/deps/simdutf/doc/widelogo.png +0 -0
- package/deps/simdutf/doxygen.py +0 -50
- package/deps/simdutf/fuzz/.clang-format +0 -9
- package/deps/simdutf/fuzz/CMakeLists.txt +0 -45
- package/deps/simdutf/fuzz/README.md +0 -168
- package/deps/simdutf/fuzz/atomic_base64.cpp +0 -448
- package/deps/simdutf/fuzz/base64.cpp +0 -278
- package/deps/simdutf/fuzz/build.sh +0 -83
- package/deps/simdutf/fuzz/conversion.cpp +0 -669
- package/deps/simdutf/fuzz/helpers/.clang-format-ignore +0 -1
- package/deps/simdutf/fuzz/helpers/common.h +0 -135
- package/deps/simdutf/fuzz/helpers/nameof.hpp +0 -1258
- package/deps/simdutf/fuzz/main.cpp +0 -72
- package/deps/simdutf/fuzz/minimize_and_cleanse.sh +0 -87
- package/deps/simdutf/fuzz/misc.cpp +0 -216
- package/deps/simdutf/fuzz/random_fuzz.sh +0 -154
- package/deps/simdutf/fuzz/roundtrip.cpp +0 -588
- package/deps/simdutf/fuzz/safe_conversion.cpp +0 -104
- package/deps/simdutf/riscv/Dockerfile +0 -16
- package/deps/simdutf/riscv/README.md +0 -24
- package/deps/simdutf/riscv/remove-docker-station +0 -8
- package/deps/simdutf/riscv/run-docker-station +0 -31
- package/deps/simdutf/scripts/.flake8 +0 -2
- package/deps/simdutf/scripts/Makefile +0 -2
- package/deps/simdutf/scripts/README_ADD_FUNCTION.md +0 -49
- package/deps/simdutf/scripts/add_function.py +0 -330
- package/deps/simdutf/scripts/amalgamation_tests.py +0 -156
- package/deps/simdutf/scripts/base64/Makefile +0 -2
- package/deps/simdutf/scripts/base64/README.md +0 -2
- package/deps/simdutf/scripts/base64/avx512.py +0 -76
- package/deps/simdutf/scripts/base64/neon_decode.py +0 -143
- package/deps/simdutf/scripts/base64/neon_generate_lut.py +0 -101
- package/deps/simdutf/scripts/base64/sse.py +0 -252
- package/deps/simdutf/scripts/base64/sseregular.py +0 -160
- package/deps/simdutf/scripts/base64/sseurl.py +0 -283
- package/deps/simdutf/scripts/base64/table.py +0 -59
- package/deps/simdutf/scripts/base64bench_print.py +0 -145
- package/deps/simdutf/scripts/benchmark-all.py +0 -119
- package/deps/simdutf/scripts/benchmark_print.py +0 -324
- package/deps/simdutf/scripts/check_feature_macros.py +0 -156
- package/deps/simdutf/scripts/check_typos.sh +0 -13
- package/deps/simdutf/scripts/clang_format.sh +0 -35
- package/deps/simdutf/scripts/clang_format_docker.sh +0 -38
- package/deps/simdutf/scripts/common.py +0 -24
- package/deps/simdutf/scripts/compilation_benchmark.py +0 -55
- package/deps/simdutf/scripts/compile_many_variations.sh +0 -64
- package/deps/simdutf/scripts/create_latex_table.py +0 -62
- package/deps/simdutf/scripts/docker/Dockerfile +0 -14
- package/deps/simdutf/scripts/docker/Makefile +0 -9
- package/deps/simdutf/scripts/docker/README.md +0 -30
- package/deps/simdutf/scripts/docker/llvm.gpg +0 -0
- package/deps/simdutf/scripts/ppc64_convert_utf16_to_utf8.py +0 -155
- package/deps/simdutf/scripts/prepare_doxygen.sh +0 -21
- package/deps/simdutf/scripts/release.py +0 -197
- package/deps/simdutf/scripts/shortinputplots.py +0 -97
- package/deps/simdutf/scripts/sse_convert_utf16_to_utf8.py +0 -422
- package/deps/simdutf/scripts/sse_convert_utf32_to_utf16.py +0 -105
- package/deps/simdutf/scripts/sse_utf8_utf16_decode.py +0 -186
- package/deps/simdutf/scripts/sse_validate_utf16le_proof.py +0 -137
- package/deps/simdutf/scripts/sse_validate_utf16le_testcases.py +0 -129
- package/deps/simdutf/scripts/table.py +0 -207
- package/deps/simdutf/scripts/tests/new.txt +0 -33
- package/deps/simdutf/scripts/tests/old.txt +0 -33
- package/deps/simdutf/scripts/tests/results.txt +0 -272
- package/deps/simdutf/simdutf.pc.in +0 -11
- package/deps/simdutf/singleheader/.flake8 +0 -2
- package/deps/simdutf/singleheader/CMakeLists.txt +0 -64
- package/deps/simdutf/singleheader/README-dev.md +0 -81
- package/deps/simdutf/singleheader/README.md +0 -19
- package/deps/simdutf/singleheader/amalgamate.py +0 -513
- package/deps/simdutf/singleheader/amalgamation_demo.c +0 -59
- package/deps/simdutf/singleheader/amalgamation_demo.cpp +0 -54
- package/deps/simdutf/singleheader/test-features.py +0 -262
- package/deps/simdutf/src/CMakeLists.txt +0 -78
- package/deps/simdutf/tests/CMakeLists.txt +0 -483
- package/deps/simdutf/tests/atomic_base64_tests.cpp +0 -2845
- package/deps/simdutf/tests/base64_tests.cpp +0 -3617
- package/deps/simdutf/tests/basic_fuzzer.cpp +0 -805
- package/deps/simdutf/tests/bele_tests.cpp +0 -182
- package/deps/simdutf/tests/constexpr_base64_tests.cpp +0 -387
- package/deps/simdutf/tests/convert_latin1_to_utf16be_tests.cpp +0 -52
- package/deps/simdutf/tests/convert_latin1_to_utf16le_tests.cpp +0 -80
- package/deps/simdutf/tests/convert_latin1_to_utf32_tests.cpp +0 -66
- package/deps/simdutf/tests/convert_latin1_to_utf8_tests.cpp +0 -120
- package/deps/simdutf/tests/convert_utf16_to_utf8_safe_tests.cpp +0 -203
- package/deps/simdutf/tests/convert_utf16_to_utf8_with_replacement_tests.cpp +0 -276
- package/deps/simdutf/tests/convert_utf16be_to_latin1_tests.cpp +0 -109
- package/deps/simdutf/tests/convert_utf16be_to_latin1_tests_with_errors.cpp +0 -136
- package/deps/simdutf/tests/convert_utf16be_to_utf32_tests.cpp +0 -193
- package/deps/simdutf/tests/convert_utf16be_to_utf32_with_errors_tests.cpp +0 -381
- package/deps/simdutf/tests/convert_utf16be_to_utf8_tests.cpp +0 -259
- package/deps/simdutf/tests/convert_utf16be_to_utf8_with_errors_tests.cpp +0 -266
- package/deps/simdutf/tests/convert_utf16le_to_latin1_tests.cpp +0 -148
- package/deps/simdutf/tests/convert_utf16le_to_latin1_tests_with_errors.cpp +0 -176
- package/deps/simdutf/tests/convert_utf16le_to_utf32_tests.cpp +0 -213
- package/deps/simdutf/tests/convert_utf16le_to_utf32_with_errors_tests.cpp +0 -318
- package/deps/simdutf/tests/convert_utf16le_to_utf8_tests.cpp +0 -343
- package/deps/simdutf/tests/convert_utf16le_to_utf8_with_errors_tests.cpp +0 -271
- package/deps/simdutf/tests/convert_utf32_to_latin1_tests.cpp +0 -111
- package/deps/simdutf/tests/convert_utf32_to_latin1_with_errors_tests.cpp +0 -96
- package/deps/simdutf/tests/convert_utf32_to_utf16be_tests.cpp +0 -148
- package/deps/simdutf/tests/convert_utf32_to_utf16be_with_errors_tests.cpp +0 -192
- package/deps/simdutf/tests/convert_utf32_to_utf16le_tests.cpp +0 -166
- package/deps/simdutf/tests/convert_utf32_to_utf16le_with_errors_tests.cpp +0 -215
- package/deps/simdutf/tests/convert_utf32_to_utf8_tests.cpp +0 -181
- package/deps/simdutf/tests/convert_utf32_to_utf8_with_errors_tests.cpp +0 -261
- package/deps/simdutf/tests/convert_utf8_to_latin1_tests.cpp +0 -516
- package/deps/simdutf/tests/convert_utf8_to_latin1_with_errors_tests.cpp +0 -579
- package/deps/simdutf/tests/convert_utf8_to_utf16be_tests.cpp +0 -412
- package/deps/simdutf/tests/convert_utf8_to_utf16be_with_errors_tests.cpp +0 -480
- package/deps/simdutf/tests/convert_utf8_to_utf16le_tests.cpp +0 -671
- package/deps/simdutf/tests/convert_utf8_to_utf16le_with_errors_tests.cpp +0 -455
- package/deps/simdutf/tests/convert_utf8_to_utf32_tests.cpp +0 -1204
- package/deps/simdutf/tests/convert_utf8_to_utf32_with_errors_tests.cpp +0 -337
- package/deps/simdutf/tests/convert_valid_utf16be_to_latin1_tests.cpp +0 -37
- package/deps/simdutf/tests/convert_valid_utf16be_to_utf32_tests.cpp +0 -97
- package/deps/simdutf/tests/convert_valid_utf16be_to_utf8_tests.cpp +0 -126
- package/deps/simdutf/tests/convert_valid_utf16le_to_latin1_tests.cpp +0 -71
- package/deps/simdutf/tests/convert_valid_utf16le_to_utf32_tests.cpp +0 -122
- package/deps/simdutf/tests/convert_valid_utf16le_to_utf8_tests.cpp +0 -244
- package/deps/simdutf/tests/convert_valid_utf32_to_latin1_tests.cpp +0 -49
- package/deps/simdutf/tests/convert_valid_utf32_to_utf16be_tests.cpp +0 -92
- package/deps/simdutf/tests/convert_valid_utf32_to_utf16le_tests.cpp +0 -114
- package/deps/simdutf/tests/convert_valid_utf32_to_utf8_tests.cpp +0 -109
- package/deps/simdutf/tests/convert_valid_utf8_to_latin1_tests.cpp +0 -84
- package/deps/simdutf/tests/convert_valid_utf8_to_utf16be_tests.cpp +0 -124
- package/deps/simdutf/tests/convert_valid_utf8_to_utf16le_tests.cpp +0 -221
- package/deps/simdutf/tests/convert_valid_utf8_to_utf32_tests.cpp +0 -155
- package/deps/simdutf/tests/count_utf16be.cpp +0 -64
- package/deps/simdutf/tests/count_utf16le.cpp +0 -61
- package/deps/simdutf/tests/count_utf8.cpp +0 -87
- package/deps/simdutf/tests/detect_encodings_tests.cpp +0 -312
- package/deps/simdutf/tests/embed/valid_utf8.txt +0 -1
- package/deps/simdutf/tests/embed_tests.cpp +0 -22
- package/deps/simdutf/tests/find_tests.cpp +0 -77
- package/deps/simdutf/tests/fixed_string_tests.cpp +0 -153
- package/deps/simdutf/tests/helpers/CMakeLists.txt +0 -25
- package/deps/simdutf/tests/helpers/compiletime_conversions.h +0 -222
- package/deps/simdutf/tests/helpers/fixed_string.h +0 -267
- package/deps/simdutf/tests/helpers/random_int.cpp +0 -30
- package/deps/simdutf/tests/helpers/random_int.h +0 -39
- package/deps/simdutf/tests/helpers/random_utf16.cpp +0 -123
- package/deps/simdutf/tests/helpers/random_utf16.h +0 -52
- package/deps/simdutf/tests/helpers/random_utf32.cpp +0 -41
- package/deps/simdutf/tests/helpers/random_utf32.h +0 -40
- package/deps/simdutf/tests/helpers/random_utf8.cpp +0 -93
- package/deps/simdutf/tests/helpers/random_utf8.h +0 -36
- package/deps/simdutf/tests/helpers/test.cpp +0 -231
- package/deps/simdutf/tests/helpers/test.h +0 -193
- package/deps/simdutf/tests/helpers/transcode_test_base.cpp +0 -1257
- package/deps/simdutf/tests/helpers/transcode_test_base.h +0 -683
- package/deps/simdutf/tests/helpers/utf16.h +0 -27
- package/deps/simdutf/tests/installation_tests/find/CMakeLists.txt +0 -43
- package/deps/simdutf/tests/installation_tests/from_fetch/CMakeLists.txt +0 -47
- package/deps/simdutf/tests/internal_tests.cpp +0 -27
- package/deps/simdutf/tests/null_safety_tests.cpp +0 -94
- package/deps/simdutf/tests/random_fuzzer.cpp +0 -779
- package/deps/simdutf/tests/readme_tests.cpp +0 -274
- package/deps/simdutf/tests/reference/CMakeLists.txt +0 -23
- package/deps/simdutf/tests/reference/decode_utf16.h +0 -81
- package/deps/simdutf/tests/reference/decode_utf32.h +0 -47
- package/deps/simdutf/tests/reference/encode_latin1.cpp +0 -1
- package/deps/simdutf/tests/reference/encode_latin1.h +0 -32
- package/deps/simdutf/tests/reference/encode_utf16.cpp +0 -49
- package/deps/simdutf/tests/reference/encode_utf16.h +0 -20
- package/deps/simdutf/tests/reference/encode_utf32.cpp +0 -1
- package/deps/simdutf/tests/reference/encode_utf32.h +0 -36
- package/deps/simdutf/tests/reference/encode_utf8.cpp +0 -1
- package/deps/simdutf/tests/reference/encode_utf8.h +0 -40
- package/deps/simdutf/tests/reference/validate_utf16.cpp +0 -60
- package/deps/simdutf/tests/reference/validate_utf16.h +0 -14
- package/deps/simdutf/tests/reference/validate_utf16_to_latin1.cpp +0 -35
- package/deps/simdutf/tests/reference/validate_utf16_to_latin1.h +0 -13
- package/deps/simdutf/tests/reference/validate_utf32.cpp +0 -27
- package/deps/simdutf/tests/reference/validate_utf32.h +0 -12
- package/deps/simdutf/tests/reference/validate_utf32_to_latin1.cpp +0 -27
- package/deps/simdutf/tests/reference/validate_utf32_to_latin1.h +0 -12
- package/deps/simdutf/tests/reference/validate_utf8.cpp +0 -82
- package/deps/simdutf/tests/reference/validate_utf8.h +0 -11
- package/deps/simdutf/tests/reference/validate_utf8_to_latin1.cpp +0 -43
- package/deps/simdutf/tests/reference/validate_utf8_to_latin1.h +0 -12
- package/deps/simdutf/tests/select_implementation.cpp +0 -43
- package/deps/simdutf/tests/simdutf_c_tests.cpp +0 -244
- package/deps/simdutf/tests/span_tests.cpp +0 -401
- package/deps/simdutf/tests/special_tests.cpp +0 -559
- package/deps/simdutf/tests/straight_c_test.c +0 -187
- package/deps/simdutf/tests/text_encoding_tests.cpp +0 -77
- package/deps/simdutf/tests/to_well_formed_utf16_tests.cpp +0 -377
- package/deps/simdutf/tests/utf8_length_from_utf16_tests.cpp +0 -202
- package/deps/simdutf/tests/validate_ascii_basic_tests.cpp +0 -165
- package/deps/simdutf/tests/validate_ascii_with_errors_tests.cpp +0 -77
- package/deps/simdutf/tests/validate_utf16be_basic_tests.cpp +0 -175
- package/deps/simdutf/tests/validate_utf16be_with_errors_tests.cpp +0 -188
- package/deps/simdutf/tests/validate_utf16le_basic_tests.cpp +0 -268
- package/deps/simdutf/tests/validate_utf16le_with_errors_tests.cpp +0 -274
- package/deps/simdutf/tests/validate_utf32_basic_tests.cpp +0 -92
- package/deps/simdutf/tests/validate_utf32_with_errors_tests.cpp +0 -114
- package/deps/simdutf/tests/validate_utf8_basic_tests.cpp +0 -178
- package/deps/simdutf/tests/validate_utf8_brute_force_tests.cpp +0 -88
- package/deps/simdutf/tests/validate_utf8_puzzler_tests.cpp +0 -33
- package/deps/simdutf/tests/validate_utf8_with_errors_tests.cpp +0 -228
- package/deps/simdutf/tools/CMakeLists.txt +0 -85
- package/deps/simdutf/tools/fastbase64.cpp +0 -250
- package/deps/simdutf/tools/sutf.cpp +0 -556
- package/deps/simdutf/tools/sutf.h +0 -40
- package/lib/tsconfig.tsbuildinfo +0 -1
|
@@ -40,10 +40,7 @@ void HybridEcKeyPair::generateKeyPairSync() {
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
// Clean up existing key if any
|
|
43
|
-
|
|
44
|
-
EVP_PKEY_free(this->pkey);
|
|
45
|
-
this->pkey = nullptr;
|
|
46
|
-
}
|
|
43
|
+
this->pkey_.reset();
|
|
47
44
|
|
|
48
45
|
// Get curve NID from curve name
|
|
49
46
|
int curve_nid = GetCurveFromName(this->curve.c_str());
|
|
@@ -105,17 +102,14 @@ void HybridEcKeyPair::generateKeyPairSync() {
|
|
|
105
102
|
throw std::runtime_error("Failed to generate EC key pair");
|
|
106
103
|
}
|
|
107
104
|
|
|
108
|
-
this->
|
|
105
|
+
this->pkey_.reset(raw_pkey);
|
|
109
106
|
}
|
|
110
107
|
|
|
111
108
|
KeyObject HybridEcKeyPair::importKey(const std::string& format, const std::shared_ptr<ArrayBuffer>& keyData,
|
|
112
109
|
const std::string& /* algorithm */, bool /* extractable */,
|
|
113
110
|
const std::vector<std::string>& /* keyUsages */) {
|
|
114
111
|
// Clean up any existing key
|
|
115
|
-
|
|
116
|
-
EVP_PKEY_free(this->pkey);
|
|
117
|
-
this->pkey = nullptr;
|
|
118
|
-
}
|
|
112
|
+
this->pkey_.reset();
|
|
119
113
|
// Reset curve state to avoid interference between different uses
|
|
120
114
|
this->curve.clear();
|
|
121
115
|
|
|
@@ -143,7 +137,7 @@ KeyObject HybridEcKeyPair::importKey(const std::string& format, const std::share
|
|
|
143
137
|
PKCS8_PRIV_KEY_INFO_free(p8inf);
|
|
144
138
|
BIO_free(pkcs8_bio);
|
|
145
139
|
if (pkcs8_pkey != nullptr) {
|
|
146
|
-
this->
|
|
140
|
+
this->pkey_.reset(pkcs8_pkey);
|
|
147
141
|
KeyObject keyObj;
|
|
148
142
|
return keyObj;
|
|
149
143
|
}
|
|
@@ -157,7 +151,7 @@ KeyObject HybridEcKeyPair::importKey(const std::string& format, const std::share
|
|
|
157
151
|
EVP_PKEY* spki_pkey = d2i_PUBKEY_bio(spki_bio, nullptr);
|
|
158
152
|
BIO_free(spki_bio);
|
|
159
153
|
if (spki_pkey != nullptr) {
|
|
160
|
-
this->
|
|
154
|
+
this->pkey_.reset(spki_pkey);
|
|
161
155
|
KeyObject keyObj;
|
|
162
156
|
return keyObj;
|
|
163
157
|
}
|
|
@@ -166,7 +160,7 @@ KeyObject HybridEcKeyPair::importKey(const std::string& format, const std::share
|
|
|
166
160
|
throw std::runtime_error("Failed to import EC key from DER data");
|
|
167
161
|
}
|
|
168
162
|
|
|
169
|
-
this->pkey
|
|
163
|
+
this->pkey_.reset(pkey);
|
|
170
164
|
|
|
171
165
|
// Return a placeholder KeyObject - this would need proper implementation
|
|
172
166
|
// For now, we just need the key imported into this->pkey for sign/verify
|
|
@@ -178,20 +172,20 @@ std::shared_ptr<ArrayBuffer> HybridEcKeyPair::exportKey(const KeyObject& key, co
|
|
|
178
172
|
// Suppress unused parameter warning
|
|
179
173
|
(void)key;
|
|
180
174
|
|
|
181
|
-
if (!this->
|
|
175
|
+
if (!this->pkey_) {
|
|
182
176
|
throw std::runtime_error("No key pair generated");
|
|
183
177
|
}
|
|
184
178
|
|
|
185
179
|
if (format == "der-spki") {
|
|
186
180
|
// Export public key in DER SPKI format
|
|
187
|
-
int len = i2d_PUBKEY(this->
|
|
181
|
+
int len = i2d_PUBKEY(this->pkey_.get(), nullptr);
|
|
188
182
|
if (len <= 0) {
|
|
189
183
|
throw std::runtime_error("Failed to get public key DER length");
|
|
190
184
|
}
|
|
191
185
|
|
|
192
186
|
std::vector<unsigned char> derData(len);
|
|
193
187
|
unsigned char* ptr = derData.data();
|
|
194
|
-
i2d_PUBKEY(this->
|
|
188
|
+
i2d_PUBKEY(this->pkey_.get(), &ptr);
|
|
195
189
|
return ToNativeArrayBuffer(std::string(derData.begin(), derData.end()));
|
|
196
190
|
} else if (format == "der-pkcs8") {
|
|
197
191
|
// Export private key in DER PKCS8 format
|
|
@@ -200,7 +194,7 @@ std::shared_ptr<ArrayBuffer> HybridEcKeyPair::exportKey(const KeyObject& key, co
|
|
|
200
194
|
throw std::runtime_error("Failed to create BIO for private key export");
|
|
201
195
|
}
|
|
202
196
|
|
|
203
|
-
if (i2d_PKCS8PrivateKey_bio(bio, this->
|
|
197
|
+
if (i2d_PKCS8PrivateKey_bio(bio, this->pkey_.get(), nullptr, nullptr, 0, nullptr, nullptr) != 1) {
|
|
204
198
|
BIO_free(bio);
|
|
205
199
|
throw std::runtime_error("Failed to export private key to DER PKCS8 format");
|
|
206
200
|
}
|
|
@@ -218,7 +212,7 @@ std::shared_ptr<ArrayBuffer> HybridEcKeyPair::exportKey(const KeyObject& key, co
|
|
|
218
212
|
throw std::runtime_error("Failed to create BIO for public key export");
|
|
219
213
|
}
|
|
220
214
|
|
|
221
|
-
if (PEM_write_bio_PUBKEY(bio, this->
|
|
215
|
+
if (PEM_write_bio_PUBKEY(bio, this->pkey_.get()) != 1) {
|
|
222
216
|
BIO_free(bio);
|
|
223
217
|
throw std::runtime_error("Failed to export public key to PEM SPKI format");
|
|
224
218
|
}
|
|
@@ -236,7 +230,7 @@ std::shared_ptr<ArrayBuffer> HybridEcKeyPair::exportKey(const KeyObject& key, co
|
|
|
236
230
|
throw std::runtime_error("Failed to create BIO for private key export");
|
|
237
231
|
}
|
|
238
232
|
|
|
239
|
-
if (PEM_write_bio_PKCS8PrivateKey(bio, this->
|
|
233
|
+
if (PEM_write_bio_PKCS8PrivateKey(bio, this->pkey_.get(), nullptr, nullptr, 0, nullptr, nullptr) != 1) {
|
|
240
234
|
BIO_free(bio);
|
|
241
235
|
throw std::runtime_error("Failed to export private key to PEM PKCS8 format");
|
|
242
236
|
}
|
|
@@ -261,7 +255,7 @@ std::shared_ptr<ArrayBuffer> HybridEcKeyPair::getPublicKey() {
|
|
|
261
255
|
throw std::runtime_error("Failed to create BIO for public key export");
|
|
262
256
|
}
|
|
263
257
|
|
|
264
|
-
if (i2d_PUBKEY_bio(bio, this->
|
|
258
|
+
if (i2d_PUBKEY_bio(bio, this->pkey_.get()) != 1) {
|
|
265
259
|
BIO_free(bio);
|
|
266
260
|
throw std::runtime_error("Failed to export public key to DER format");
|
|
267
261
|
}
|
|
@@ -277,13 +271,13 @@ std::shared_ptr<ArrayBuffer> HybridEcKeyPair::getPublicKey() {
|
|
|
277
271
|
}
|
|
278
272
|
|
|
279
273
|
std::shared_ptr<ArrayBuffer> HybridEcKeyPair::getPrivateKey() {
|
|
280
|
-
if (this->
|
|
274
|
+
if (!this->pkey_) {
|
|
281
275
|
throw std::runtime_error("No private key available");
|
|
282
276
|
}
|
|
283
277
|
|
|
284
278
|
// Export private key in PKCS8 DER format
|
|
285
279
|
BIO* bio = BIO_new(BIO_s_mem());
|
|
286
|
-
if (i2d_PKCS8PrivateKey_bio(bio, this->
|
|
280
|
+
if (i2d_PKCS8PrivateKey_bio(bio, this->pkey_.get(), nullptr, nullptr, 0, nullptr, nullptr) != 1) {
|
|
287
281
|
BIO_free(bio);
|
|
288
282
|
throw std::runtime_error("Failed to export private key");
|
|
289
283
|
}
|
|
@@ -350,7 +344,7 @@ std::shared_ptr<ArrayBuffer> HybridEcKeyPair::sign(const std::shared_ptr<ArrayBu
|
|
|
350
344
|
}
|
|
351
345
|
|
|
352
346
|
// Initialize signing
|
|
353
|
-
if (EVP_DigestSignInit(md_ctx.get(), nullptr, md, nullptr, this->
|
|
347
|
+
if (EVP_DigestSignInit(md_ctx.get(), nullptr, md, nullptr, this->pkey_.get()) <= 0) {
|
|
354
348
|
throw std::runtime_error("Failed to initialize ECDSA signing");
|
|
355
349
|
}
|
|
356
350
|
|
|
@@ -377,7 +371,7 @@ std::shared_ptr<ArrayBuffer> HybridEcKeyPair::sign(const std::shared_ptr<ArrayBu
|
|
|
377
371
|
signature.resize(sig_len);
|
|
378
372
|
|
|
379
373
|
// Web Crypto API requires IEEE P1363 format for ECDSA signatures
|
|
380
|
-
unsigned int n = getBytesOfRS(this->
|
|
374
|
+
unsigned int n = getBytesOfRS(this->pkey_.get());
|
|
381
375
|
if (n == 0) {
|
|
382
376
|
throw std::runtime_error("Failed to determine EC key order size for P1363 conversion");
|
|
383
377
|
}
|
|
@@ -415,7 +409,7 @@ bool HybridEcKeyPair::verify(const std::shared_ptr<ArrayBuffer>& data, const std
|
|
|
415
409
|
}
|
|
416
410
|
|
|
417
411
|
// Initialize verification
|
|
418
|
-
if (EVP_DigestVerifyInit(md_ctx.get(), nullptr, md, nullptr, this->
|
|
412
|
+
if (EVP_DigestVerifyInit(md_ctx.get(), nullptr, md, nullptr, this->pkey_.get()) <= 0) {
|
|
419
413
|
throw std::runtime_error("Failed to initialize ECDSA verification");
|
|
420
414
|
}
|
|
421
415
|
|
|
@@ -424,22 +418,30 @@ bool HybridEcKeyPair::verify(const std::shared_ptr<ArrayBuffer>& data, const std
|
|
|
424
418
|
throw std::runtime_error("Failed to update ECDSA verification with data");
|
|
425
419
|
}
|
|
426
420
|
|
|
427
|
-
// Web Crypto API passes IEEE P1363
|
|
421
|
+
// Web Crypto API typically passes IEEE P1363 (raw r||s, exactly 2*n bytes);
|
|
422
|
+
// the Node-API path with `dsaEncoding: 'der'` passes ASN.1 DER instead.
|
|
423
|
+
// Discriminate by length — anything other than 2*n is treated as DER and
|
|
424
|
+
// passed through unchanged. This matches what every other ECDSA verify
|
|
425
|
+
// wrapper (Node's, ncrypto's) does and is robust because well-formed DER
|
|
426
|
+
// ECDSA signatures are never exactly 2*n bytes for the curves we support.
|
|
428
427
|
const unsigned char* sig_data = static_cast<const unsigned char*>(signature->data());
|
|
429
428
|
size_t sig_len = signature->size();
|
|
430
429
|
std::unique_ptr<uint8_t[]> der_sig_buf;
|
|
431
430
|
|
|
432
|
-
unsigned int n = getBytesOfRS(this->
|
|
431
|
+
unsigned int n = getBytesOfRS(this->pkey_.get());
|
|
433
432
|
if (n == 0) {
|
|
434
433
|
throw std::runtime_error("Failed to determine EC key order size for DER conversion");
|
|
435
434
|
}
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
435
|
+
|
|
436
|
+
if (sig_len == 2 * n) {
|
|
437
|
+
size_t der_len = 0;
|
|
438
|
+
der_sig_buf = convertSignatureToDER(sig_data, sig_len, n, &der_len);
|
|
439
|
+
if (!der_sig_buf) {
|
|
440
|
+
throw std::runtime_error("Failed to convert ECDSA signature from P1363 to DER format");
|
|
441
|
+
}
|
|
442
|
+
sig_data = der_sig_buf.get();
|
|
443
|
+
sig_len = der_len;
|
|
440
444
|
}
|
|
441
|
-
sig_data = der_sig_buf.get();
|
|
442
|
-
sig_len = der_len;
|
|
443
445
|
|
|
444
446
|
int result = EVP_DigestVerifyFinal(md_ctx.get(), sig_data, sig_len);
|
|
445
447
|
|
|
@@ -451,7 +453,7 @@ bool HybridEcKeyPair::verify(const std::shared_ptr<ArrayBuffer>& data, const std
|
|
|
451
453
|
}
|
|
452
454
|
|
|
453
455
|
void HybridEcKeyPair::checkKeyPair() {
|
|
454
|
-
if (this->
|
|
456
|
+
if (!this->pkey_) {
|
|
455
457
|
throw std::runtime_error("EC KeyPair not initialized");
|
|
456
458
|
}
|
|
457
459
|
}
|
|
@@ -13,12 +13,7 @@ namespace margelo::nitro::crypto {
|
|
|
13
13
|
class HybridEcKeyPair : public HybridEcKeyPairSpec {
|
|
14
14
|
public:
|
|
15
15
|
HybridEcKeyPair() : HybridObject(TAG) {}
|
|
16
|
-
~HybridEcKeyPair()
|
|
17
|
-
if (pkey != nullptr) {
|
|
18
|
-
EVP_PKEY_free(pkey);
|
|
19
|
-
pkey = nullptr;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
16
|
+
~HybridEcKeyPair() override = default;
|
|
22
17
|
|
|
23
18
|
public:
|
|
24
19
|
// Methods
|
|
@@ -41,7 +36,8 @@ class HybridEcKeyPair : public HybridEcKeyPairSpec {
|
|
|
41
36
|
|
|
42
37
|
private:
|
|
43
38
|
std::string curve;
|
|
44
|
-
|
|
39
|
+
using EVP_PKEY_ptr = std::unique_ptr<EVP_PKEY, decltype(&EVP_PKEY_free)>;
|
|
40
|
+
EVP_PKEY_ptr pkey_{nullptr, EVP_PKEY_free};
|
|
45
41
|
|
|
46
42
|
static int GetCurveFromName(const char* name);
|
|
47
43
|
};
|
package/cpp/ecdh/HybridECDH.cpp
CHANGED
|
@@ -65,6 +65,29 @@ std::shared_ptr<ArrayBuffer> HybridECDH::computeSecret(const std::shared_ptr<Arr
|
|
|
65
65
|
throw std::runtime_error("ECDH: private key not set");
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
+
// Validate the peer's public key BEFORE building an EVP_PKEY from it.
|
|
69
|
+
// EVP_PKEY_fromdata() does NOT verify that the supplied public-key octets
|
|
70
|
+
// decode to a point on the configured curve, so an attacker can mount an
|
|
71
|
+
// invalid-curve attack: send a point on a related, weaker curve (or a
|
|
72
|
+
// small-order point) and recover bits of our private key from the
|
|
73
|
+
// resulting "shared secret". Reject malformed encodings, the identity
|
|
74
|
+
// point, and any point that is not on _group up front.
|
|
75
|
+
{
|
|
76
|
+
EC_POINT_ptr peerPoint(EC_POINT_new(_group.get()), EC_POINT_free);
|
|
77
|
+
if (!peerPoint) {
|
|
78
|
+
throw std::runtime_error("ECDH: failed to allocate EC_POINT for peer key validation");
|
|
79
|
+
}
|
|
80
|
+
if (EC_POINT_oct2point(_group.get(), peerPoint.get(), otherPublicKey->data(), otherPublicKey->size(), nullptr) != 1) {
|
|
81
|
+
throw std::runtime_error("ECDH: peer public key is malformed");
|
|
82
|
+
}
|
|
83
|
+
if (EC_POINT_is_at_infinity(_group.get(), peerPoint.get())) {
|
|
84
|
+
throw std::runtime_error("ECDH: peer public key is the identity point");
|
|
85
|
+
}
|
|
86
|
+
if (EC_POINT_is_on_curve(_group.get(), peerPoint.get(), nullptr) != 1) {
|
|
87
|
+
throw std::runtime_error("ECDH: peer public key is not on the configured curve");
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
68
91
|
// Build peer EVP_PKEY from raw public key octets
|
|
69
92
|
EVP_PKEY_ptr peerPkey(createEcEvpPkey(_curveName.c_str(), otherPublicKey->data(), otherPublicKey->size()), EVP_PKEY_free);
|
|
70
93
|
|
|
@@ -11,7 +11,6 @@ namespace margelo::nitro::crypto {
|
|
|
11
11
|
|
|
12
12
|
std::shared_ptr<ArrayBuffer> HybridEdKeyPair::diffieHellman(const std::shared_ptr<ArrayBuffer>& privateKey,
|
|
13
13
|
const std::shared_ptr<ArrayBuffer>& publicKey) {
|
|
14
|
-
using EVP_PKEY_ptr = std::unique_ptr<EVP_PKEY, decltype(&EVP_PKEY_free)>;
|
|
15
14
|
using EVP_PKEY_CTX_ptr = std::unique_ptr<EVP_PKEY_CTX, decltype(&EVP_PKEY_CTX_free)>;
|
|
16
15
|
|
|
17
16
|
// Determine key type from curve name
|
|
@@ -55,16 +54,16 @@ std::shared_ptr<ArrayBuffer> HybridEdKeyPair::diffieHellman(const std::shared_pt
|
|
|
55
54
|
}
|
|
56
55
|
|
|
57
56
|
// 7. Allocate memory for the shared secret
|
|
58
|
-
auto shared_secret =
|
|
57
|
+
auto shared_secret = std::make_unique<uint8_t[]>(shared_secret_len);
|
|
59
58
|
|
|
60
59
|
// 8. Derive the shared secret
|
|
61
|
-
if (EVP_PKEY_derive(ctx.get(), shared_secret, &shared_secret_len) <= 0) {
|
|
62
|
-
delete[] shared_secret;
|
|
60
|
+
if (EVP_PKEY_derive(ctx.get(), shared_secret.get(), &shared_secret_len) <= 0) {
|
|
63
61
|
throw std::runtime_error("Failed to derive shared secret: " + getOpenSSLError());
|
|
64
62
|
}
|
|
65
63
|
|
|
66
64
|
// 9. Return a newly-created ArrayBuffer from the raw buffer w/ cleanup
|
|
67
|
-
|
|
65
|
+
uint8_t* raw_ptr = shared_secret.get();
|
|
66
|
+
return std::make_shared<NativeArrayBuffer>(shared_secret.release(), shared_secret_len, [raw_ptr]() { delete[] raw_ptr; });
|
|
68
67
|
}
|
|
69
68
|
|
|
70
69
|
std::shared_ptr<Promise<void>> HybridEdKeyPair::generateKeyPair(double publicFormat, double publicType, double privateFormat,
|
|
@@ -98,34 +97,26 @@ void HybridEdKeyPair::generateKeyPairSync(double publicFormat, double publicType
|
|
|
98
97
|
this->privateType_ = static_cast<int>(privateType);
|
|
99
98
|
|
|
100
99
|
// Clean up existing key if any
|
|
101
|
-
|
|
102
|
-
EVP_PKEY_free(this->pkey);
|
|
103
|
-
this->pkey = nullptr;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
EVP_PKEY_CTX* pctx;
|
|
100
|
+
this->pkey_.reset();
|
|
107
101
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
if (pctx
|
|
102
|
+
std::unique_ptr<EVP_PKEY_CTX, decltype(&EVP_PKEY_CTX_free)> pctx(EVP_PKEY_CTX_new_from_name(nullptr, this->curve.c_str(), nullptr),
|
|
103
|
+
EVP_PKEY_CTX_free);
|
|
104
|
+
if (!pctx) {
|
|
111
105
|
throw std::runtime_error("Invalid curve name: " + this->curve);
|
|
112
106
|
}
|
|
113
107
|
|
|
114
108
|
// keygen init
|
|
115
|
-
if (EVP_PKEY_keygen_init(pctx) <= 0) {
|
|
116
|
-
EVP_PKEY_CTX_free(pctx);
|
|
109
|
+
if (EVP_PKEY_keygen_init(pctx.get()) <= 0) {
|
|
117
110
|
throw std::runtime_error("Failed to initialize keygen");
|
|
118
111
|
}
|
|
119
112
|
|
|
120
113
|
// generate key
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
114
|
+
EVP_PKEY* raw_pkey = nullptr;
|
|
115
|
+
EVP_PKEY_keygen(pctx.get(), &raw_pkey);
|
|
116
|
+
if (raw_pkey == nullptr) {
|
|
124
117
|
throw std::runtime_error("Failed to generate key");
|
|
125
118
|
}
|
|
126
|
-
|
|
127
|
-
// cleanup
|
|
128
|
-
EVP_PKEY_CTX_free(pctx);
|
|
119
|
+
this->pkey_.reset(raw_pkey);
|
|
129
120
|
}
|
|
130
121
|
|
|
131
122
|
std::shared_ptr<Promise<std::shared_ptr<ArrayBuffer>>> HybridEdKeyPair::sign(const std::shared_ptr<ArrayBuffer>& message,
|
|
@@ -146,55 +137,34 @@ std::shared_ptr<ArrayBuffer> HybridEdKeyPair::signSync(const std::shared_ptr<Arr
|
|
|
146
137
|
// Clear any previous OpenSSL errors to prevent pollution
|
|
147
138
|
clearOpenSSLErrors();
|
|
148
139
|
|
|
149
|
-
size_t sig_len = 0;
|
|
150
|
-
uint8_t* sig = NULL;
|
|
151
|
-
EVP_MD_CTX* md_ctx = nullptr;
|
|
152
|
-
EVP_PKEY_CTX* pkey_ctx = nullptr;
|
|
153
|
-
|
|
154
140
|
// get key to use for signing
|
|
155
|
-
|
|
141
|
+
EVP_PKEY_ptr pkey = this->importPrivateKey(key);
|
|
156
142
|
|
|
157
143
|
// key context
|
|
158
|
-
|
|
159
|
-
if (md_ctx
|
|
144
|
+
std::unique_ptr<EVP_MD_CTX, decltype(&EVP_MD_CTX_free)> md_ctx(EVP_MD_CTX_new(), EVP_MD_CTX_free);
|
|
145
|
+
if (!md_ctx) {
|
|
160
146
|
throw std::runtime_error("Error creating signing context");
|
|
161
147
|
}
|
|
162
148
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
EVP_MD_CTX_free(md_ctx);
|
|
166
|
-
throw std::runtime_error("Error creating signing context: " + this->curve);
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
if (EVP_DigestSignInit(md_ctx, &pkey_ctx, NULL, NULL, pkey) <= 0) {
|
|
170
|
-
EVP_MD_CTX_free(md_ctx);
|
|
171
|
-
EVP_PKEY_CTX_free(pkey_ctx);
|
|
172
|
-
char* err = ERR_error_string(ERR_get_error(), NULL);
|
|
173
|
-
throw std::runtime_error("Failed to initialize signing: " + std::string(err));
|
|
149
|
+
if (EVP_DigestSignInit(md_ctx.get(), nullptr, NULL, NULL, pkey.get()) <= 0) {
|
|
150
|
+
throw std::runtime_error("Failed to initialize signing: " + getOpenSSLError());
|
|
174
151
|
}
|
|
175
152
|
|
|
176
153
|
// Calculate the required size for the signature by passing a NULL buffer.
|
|
177
|
-
|
|
178
|
-
|
|
154
|
+
size_t sig_len = 0;
|
|
155
|
+
if (EVP_DigestSign(md_ctx.get(), NULL, &sig_len, message.get()->data(), message.get()->size()) <= 0) {
|
|
179
156
|
throw std::runtime_error("Failed to calculate signature size");
|
|
180
157
|
}
|
|
181
|
-
sig =
|
|
158
|
+
auto sig = std::make_unique<uint8_t[]>(sig_len);
|
|
182
159
|
|
|
183
160
|
// Actually calculate the signature
|
|
184
|
-
if (EVP_DigestSign(md_ctx, sig, &sig_len, message.get()->data(), message.get()->size()) <= 0) {
|
|
185
|
-
EVP_MD_CTX_free(md_ctx);
|
|
186
|
-
delete[] sig;
|
|
161
|
+
if (EVP_DigestSign(md_ctx.get(), sig.get(), &sig_len, message.get()->data(), message.get()->size()) <= 0) {
|
|
187
162
|
throw std::runtime_error("Failed to calculate signature");
|
|
188
163
|
}
|
|
189
164
|
|
|
190
165
|
// return value for JS
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
// Clean up
|
|
194
|
-
EVP_MD_CTX_free(md_ctx);
|
|
195
|
-
// Note: pkey_ctx is freed automatically by EVP_MD_CTX_free when using EVP_DigestSignInit
|
|
196
|
-
|
|
197
|
-
return signature;
|
|
166
|
+
uint8_t* raw_ptr = sig.get();
|
|
167
|
+
return std::make_shared<NativeArrayBuffer>(sig.release(), sig_len, [raw_ptr]() { delete[] raw_ptr; });
|
|
198
168
|
}
|
|
199
169
|
|
|
200
170
|
std::shared_ptr<Promise<bool>> HybridEdKeyPair::verify(const std::shared_ptr<ArrayBuffer>& signature,
|
|
@@ -218,36 +188,23 @@ bool HybridEdKeyPair::verifySync(const std::shared_ptr<ArrayBuffer>& signature,
|
|
|
218
188
|
clearOpenSSLErrors();
|
|
219
189
|
|
|
220
190
|
// get key to use for verifying
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
EVP_MD_CTX* md_ctx = nullptr;
|
|
224
|
-
EVP_PKEY_CTX* pkey_ctx = nullptr;
|
|
191
|
+
EVP_PKEY_ptr pkey = this->importPublicKey(key);
|
|
225
192
|
|
|
226
193
|
// key context
|
|
227
|
-
|
|
228
|
-
if (md_ctx
|
|
194
|
+
std::unique_ptr<EVP_MD_CTX, decltype(&EVP_MD_CTX_free)> md_ctx(EVP_MD_CTX_new(), EVP_MD_CTX_free);
|
|
195
|
+
if (!md_ctx) {
|
|
229
196
|
throw std::runtime_error("Error creating verify context");
|
|
230
197
|
}
|
|
231
198
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
EVP_MD_CTX_free(md_ctx);
|
|
235
|
-
throw std::runtime_error("Error creating verify context: " + this->curve);
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
if (EVP_DigestVerifyInit(md_ctx, &pkey_ctx, NULL, NULL, pkey) <= 0) {
|
|
239
|
-
EVP_MD_CTX_free(md_ctx);
|
|
240
|
-
EVP_PKEY_CTX_free(pkey_ctx);
|
|
241
|
-
char* err = ERR_error_string(ERR_get_error(), NULL);
|
|
242
|
-
throw std::runtime_error("Failed to initialize verify: " + std::string(err));
|
|
199
|
+
if (EVP_DigestVerifyInit(md_ctx.get(), nullptr, NULL, NULL, pkey.get()) <= 0) {
|
|
200
|
+
throw std::runtime_error("Failed to initialize verify: " + getOpenSSLError());
|
|
243
201
|
}
|
|
244
202
|
|
|
245
203
|
// verify
|
|
246
|
-
auto res = EVP_DigestVerify(md_ctx, signature.get()->data(), signature.get()->size(), message.get()->data(), message.get()->size());
|
|
204
|
+
auto res = EVP_DigestVerify(md_ctx.get(), signature.get()->data(), signature.get()->size(), message.get()->data(), message.get()->size());
|
|
247
205
|
|
|
248
206
|
// return value for JS
|
|
249
207
|
if (res < 0) {
|
|
250
|
-
EVP_MD_CTX_free(md_ctx);
|
|
251
208
|
throw std::runtime_error("Failed to verify");
|
|
252
209
|
}
|
|
253
210
|
return res == 1; // true if 1, false if 0
|
|
@@ -258,7 +215,7 @@ std::shared_ptr<ArrayBuffer> HybridEdKeyPair::getPublicKey() {
|
|
|
258
215
|
|
|
259
216
|
// If format is DER (0) or PEM (1), export in SPKI format
|
|
260
217
|
if (publicFormat_ == 0 || publicFormat_ == 1) {
|
|
261
|
-
BIO
|
|
218
|
+
std::unique_ptr<BIO, decltype(&BIO_free)> bio(BIO_new(BIO_s_mem()), BIO_free);
|
|
262
219
|
if (!bio) {
|
|
263
220
|
throw std::runtime_error("Failed to create BIO for public key export");
|
|
264
221
|
}
|
|
@@ -266,36 +223,35 @@ std::shared_ptr<ArrayBuffer> HybridEdKeyPair::getPublicKey() {
|
|
|
266
223
|
int result;
|
|
267
224
|
if (publicFormat_ == 1) {
|
|
268
225
|
// PEM format
|
|
269
|
-
result = PEM_write_bio_PUBKEY(bio, this->
|
|
226
|
+
result = PEM_write_bio_PUBKEY(bio.get(), this->pkey_.get());
|
|
270
227
|
} else {
|
|
271
228
|
// DER format
|
|
272
|
-
result = i2d_PUBKEY_bio(bio, this->
|
|
229
|
+
result = i2d_PUBKEY_bio(bio.get(), this->pkey_.get());
|
|
273
230
|
}
|
|
274
231
|
|
|
275
232
|
if (result != 1) {
|
|
276
|
-
BIO_free(bio);
|
|
277
233
|
throw std::runtime_error("Failed to export public key");
|
|
278
234
|
}
|
|
279
235
|
|
|
280
236
|
BUF_MEM* bptr;
|
|
281
|
-
BIO_get_mem_ptr(bio, &bptr);
|
|
237
|
+
BIO_get_mem_ptr(bio.get(), &bptr);
|
|
282
238
|
|
|
283
|
-
|
|
284
|
-
memcpy(data, bptr->data, bptr->length);
|
|
239
|
+
auto data = std::make_unique<uint8_t[]>(bptr->length);
|
|
240
|
+
memcpy(data.get(), bptr->data, bptr->length);
|
|
285
241
|
size_t len = bptr->length;
|
|
286
242
|
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
return std::make_shared<NativeArrayBuffer>(data, len, [=]() { delete[] data; });
|
|
243
|
+
uint8_t* raw_ptr = data.get();
|
|
244
|
+
return std::make_shared<NativeArrayBuffer>(data.release(), len, [raw_ptr]() { delete[] raw_ptr; });
|
|
290
245
|
}
|
|
291
246
|
|
|
292
247
|
// Default: raw format
|
|
293
248
|
size_t len = 0;
|
|
294
|
-
EVP_PKEY_get_raw_public_key(this->
|
|
295
|
-
|
|
296
|
-
EVP_PKEY_get_raw_public_key(this->
|
|
249
|
+
EVP_PKEY_get_raw_public_key(this->pkey_.get(), nullptr, &len);
|
|
250
|
+
auto publ = std::make_unique<uint8_t[]>(len);
|
|
251
|
+
EVP_PKEY_get_raw_public_key(this->pkey_.get(), publ.get(), &len);
|
|
297
252
|
|
|
298
|
-
|
|
253
|
+
uint8_t* raw_ptr = publ.get();
|
|
254
|
+
return std::make_shared<NativeArrayBuffer>(publ.release(), len, [raw_ptr]() { delete[] raw_ptr; });
|
|
299
255
|
}
|
|
300
256
|
|
|
301
257
|
std::shared_ptr<ArrayBuffer> HybridEdKeyPair::getPrivateKey() {
|
|
@@ -303,7 +259,7 @@ std::shared_ptr<ArrayBuffer> HybridEdKeyPair::getPrivateKey() {
|
|
|
303
259
|
|
|
304
260
|
// If format is DER (0) or PEM (1), export in PKCS8 format
|
|
305
261
|
if (privateFormat_ == 0 || privateFormat_ == 1) {
|
|
306
|
-
BIO
|
|
262
|
+
std::unique_ptr<BIO, decltype(&BIO_free)> bio(BIO_new(BIO_s_mem()), BIO_free);
|
|
307
263
|
if (!bio) {
|
|
308
264
|
throw std::runtime_error("Failed to create BIO for private key export");
|
|
309
265
|
}
|
|
@@ -311,40 +267,42 @@ std::shared_ptr<ArrayBuffer> HybridEdKeyPair::getPrivateKey() {
|
|
|
311
267
|
int result;
|
|
312
268
|
if (privateFormat_ == 1) {
|
|
313
269
|
// PEM format (PKCS8)
|
|
314
|
-
result = PEM_write_bio_PrivateKey(bio, this->
|
|
270
|
+
result = PEM_write_bio_PrivateKey(bio.get(), this->pkey_.get(), nullptr, nullptr, 0, nullptr, nullptr);
|
|
315
271
|
} else {
|
|
316
272
|
// DER format (PKCS8)
|
|
317
|
-
result = i2d_PrivateKey_bio(bio, this->
|
|
273
|
+
result = i2d_PrivateKey_bio(bio.get(), this->pkey_.get());
|
|
318
274
|
}
|
|
319
275
|
|
|
320
276
|
if (result != 1) {
|
|
321
|
-
BIO_free(bio);
|
|
322
277
|
throw std::runtime_error("Failed to export private key");
|
|
323
278
|
}
|
|
324
279
|
|
|
325
280
|
BUF_MEM* bptr;
|
|
326
|
-
BIO_get_mem_ptr(bio, &bptr);
|
|
281
|
+
BIO_get_mem_ptr(bio.get(), &bptr);
|
|
327
282
|
|
|
328
|
-
|
|
329
|
-
memcpy(data, bptr->data, bptr->length);
|
|
283
|
+
auto data = std::make_unique<uint8_t[]>(bptr->length);
|
|
284
|
+
memcpy(data.get(), bptr->data, bptr->length);
|
|
330
285
|
size_t len = bptr->length;
|
|
331
286
|
|
|
332
|
-
|
|
287
|
+
// Zero the BIO's internal buffer — it held private key bytes (PEM/DER PKCS8)
|
|
288
|
+
secureZero(bptr->data, bptr->length);
|
|
333
289
|
|
|
334
|
-
|
|
290
|
+
uint8_t* raw_ptr = data.get();
|
|
291
|
+
return std::make_shared<NativeArrayBuffer>(data.release(), len, [raw_ptr]() { delete[] raw_ptr; });
|
|
335
292
|
}
|
|
336
293
|
|
|
337
294
|
// Default: raw format
|
|
338
295
|
size_t len = 0;
|
|
339
|
-
EVP_PKEY_get_raw_private_key(this->
|
|
340
|
-
|
|
341
|
-
EVP_PKEY_get_raw_private_key(this->
|
|
296
|
+
EVP_PKEY_get_raw_private_key(this->pkey_.get(), nullptr, &len);
|
|
297
|
+
auto priv = std::make_unique<uint8_t[]>(len);
|
|
298
|
+
EVP_PKEY_get_raw_private_key(this->pkey_.get(), priv.get(), &len);
|
|
342
299
|
|
|
343
|
-
|
|
300
|
+
uint8_t* raw_ptr = priv.get();
|
|
301
|
+
return std::make_shared<NativeArrayBuffer>(priv.release(), len, [raw_ptr]() { delete[] raw_ptr; });
|
|
344
302
|
}
|
|
345
303
|
|
|
346
304
|
void HybridEdKeyPair::checkKeyPair() {
|
|
347
|
-
if (this->
|
|
305
|
+
if (!this->pkey_) {
|
|
348
306
|
throw std::runtime_error("Keypair not initialized");
|
|
349
307
|
}
|
|
350
308
|
}
|
|
@@ -353,8 +311,7 @@ void HybridEdKeyPair::setCurve(const std::string& curve) {
|
|
|
353
311
|
this->curve = curve;
|
|
354
312
|
}
|
|
355
313
|
|
|
356
|
-
|
|
357
|
-
EVP_PKEY* pkey = nullptr;
|
|
314
|
+
auto HybridEdKeyPair::importPublicKey(const std::optional<std::shared_ptr<ArrayBuffer>>& key) -> EVP_PKEY_ptr {
|
|
358
315
|
if (key.has_value()) {
|
|
359
316
|
// Determine key type from curve name
|
|
360
317
|
int keyType = EVP_PKEY_ED25519;
|
|
@@ -366,19 +323,18 @@ EVP_PKEY* HybridEdKeyPair::importPublicKey(const std::optional<std::shared_ptr<A
|
|
|
366
323
|
keyType = EVP_PKEY_X448;
|
|
367
324
|
}
|
|
368
325
|
|
|
369
|
-
pkey
|
|
370
|
-
if (pkey
|
|
326
|
+
EVP_PKEY_ptr pkey(EVP_PKEY_new_raw_public_key(keyType, NULL, key.value()->data(), key.value()->size()), EVP_PKEY_free);
|
|
327
|
+
if (!pkey) {
|
|
371
328
|
throw std::runtime_error("Failed to read public key");
|
|
372
329
|
}
|
|
373
|
-
|
|
374
|
-
this->checkKeyPair();
|
|
375
|
-
pkey = this->pkey;
|
|
330
|
+
return pkey;
|
|
376
331
|
}
|
|
377
|
-
|
|
332
|
+
this->checkKeyPair();
|
|
333
|
+
EVP_PKEY_up_ref(this->pkey_.get());
|
|
334
|
+
return EVP_PKEY_ptr(this->pkey_.get(), EVP_PKEY_free);
|
|
378
335
|
}
|
|
379
336
|
|
|
380
|
-
|
|
381
|
-
EVP_PKEY* pkey = nullptr;
|
|
337
|
+
auto HybridEdKeyPair::importPrivateKey(const std::optional<std::shared_ptr<ArrayBuffer>>& key) -> EVP_PKEY_ptr {
|
|
382
338
|
if (key.has_value()) {
|
|
383
339
|
// Determine key type from curve name
|
|
384
340
|
int keyType = EVP_PKEY_ED25519;
|
|
@@ -390,15 +346,15 @@ EVP_PKEY* HybridEdKeyPair::importPrivateKey(const std::optional<std::shared_ptr<
|
|
|
390
346
|
keyType = EVP_PKEY_X448;
|
|
391
347
|
}
|
|
392
348
|
|
|
393
|
-
pkey
|
|
394
|
-
if (pkey
|
|
349
|
+
EVP_PKEY_ptr pkey(EVP_PKEY_new_raw_private_key(keyType, NULL, key.value()->data(), key.value()->size()), EVP_PKEY_free);
|
|
350
|
+
if (!pkey) {
|
|
395
351
|
throw std::runtime_error("Failed to read private key");
|
|
396
352
|
}
|
|
397
|
-
|
|
398
|
-
this->checkKeyPair();
|
|
399
|
-
pkey = this->pkey;
|
|
353
|
+
return pkey;
|
|
400
354
|
}
|
|
401
|
-
|
|
355
|
+
this->checkKeyPair();
|
|
356
|
+
EVP_PKEY_up_ref(this->pkey_.get());
|
|
357
|
+
return EVP_PKEY_ptr(this->pkey_.get(), EVP_PKEY_free);
|
|
402
358
|
}
|
|
403
359
|
|
|
404
360
|
} // namespace margelo::nitro::crypto
|
|
@@ -11,12 +11,7 @@ namespace margelo::nitro::crypto {
|
|
|
11
11
|
class HybridEdKeyPair : public HybridEdKeyPairSpec {
|
|
12
12
|
public:
|
|
13
13
|
HybridEdKeyPair() : HybridObject(TAG) {}
|
|
14
|
-
~HybridEdKeyPair()
|
|
15
|
-
if (pkey != nullptr) {
|
|
16
|
-
EVP_PKEY_free(pkey);
|
|
17
|
-
pkey = nullptr;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
14
|
+
~HybridEdKeyPair() override = default;
|
|
20
15
|
|
|
21
16
|
public:
|
|
22
17
|
// Methods
|
|
@@ -54,7 +49,8 @@ class HybridEdKeyPair : public HybridEdKeyPairSpec {
|
|
|
54
49
|
|
|
55
50
|
private:
|
|
56
51
|
std::string curve;
|
|
57
|
-
|
|
52
|
+
using EVP_PKEY_ptr = std::unique_ptr<EVP_PKEY, decltype(&EVP_PKEY_free)>;
|
|
53
|
+
EVP_PKEY_ptr pkey_{nullptr, EVP_PKEY_free};
|
|
58
54
|
|
|
59
55
|
// Encoding configuration for key export
|
|
60
56
|
// Format: -1 = default (raw), 0 = DER, 1 = PEM
|
|
@@ -64,8 +60,8 @@ class HybridEdKeyPair : public HybridEdKeyPairSpec {
|
|
|
64
60
|
int privateFormat_ = -1;
|
|
65
61
|
int privateType_ = -1;
|
|
66
62
|
|
|
67
|
-
|
|
68
|
-
|
|
63
|
+
EVP_PKEY_ptr importPublicKey(const std::optional<std::shared_ptr<ArrayBuffer>>& key);
|
|
64
|
+
EVP_PKEY_ptr importPrivateKey(const std::optional<std::shared_ptr<ArrayBuffer>>& key);
|
|
69
65
|
};
|
|
70
66
|
|
|
71
67
|
} // namespace margelo::nitro::crypto
|