@pezkuwi/util-crypto 14.0.2 → 14.0.4
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/LICENSE +201 -0
- package/README.md +4 -4
- package/address/addressToEvm.d.ts +5 -0
- package/address/addressToEvm.js +8 -0
- package/address/check.d.ts +8 -0
- package/address/check.js +26 -0
- package/address/checksum.d.ts +1 -0
- package/address/checksum.js +16 -0
- package/address/decode.d.ts +2 -0
- package/address/decode.js +29 -0
- package/address/defaults.d.ts +6 -0
- package/address/defaults.js +8 -0
- package/address/derive.d.ts +8 -0
- package/address/derive.js +24 -0
- package/address/encode.d.ts +2 -0
- package/address/encode.js +23 -0
- package/address/encodeDerived.d.ts +9 -0
- package/address/encodeDerived.js +12 -0
- package/address/encodeMulti.d.ts +9 -0
- package/address/encodeMulti.js +11 -0
- package/address/eq.d.ts +15 -0
- package/{src/address/eq.ts → address/eq.js} +2 -7
- package/address/evmToAddress.d.ts +7 -0
- package/address/evmToAddress.js +14 -0
- package/{src/address/index.ts → address/index.d.ts} +0 -5
- package/address/index.js +16 -0
- package/address/is.d.ts +2 -0
- package/address/is.js +9 -0
- package/address/keyDerived.d.ts +2 -0
- package/address/keyDerived.js +8 -0
- package/address/keyMulti.d.ts +2 -0
- package/address/keyMulti.js +8 -0
- package/address/setSS58Format.d.ts +6 -0
- package/address/setSS58Format.js +11 -0
- package/address/sort.d.ts +2 -0
- package/address/sort.js +7 -0
- package/address/sshash.d.ts +1 -0
- package/address/sshash.js +6 -0
- package/address/types.d.ts +1 -0
- package/address/types.js +1 -0
- package/address/util.d.ts +1 -0
- package/address/util.js +4 -0
- package/address/validate.d.ts +2 -0
- package/address/validate.js +4 -0
- package/base32/bs32.d.ts +26 -0
- package/{src/base32/bs32.ts → base32/bs32.js} +8 -21
- package/base32/helpers.d.ts +25 -0
- package/base32/helpers.js +61 -0
- package/{src/base32/index.ts → base32/index.d.ts} +0 -4
- package/base32/index.js +4 -0
- package/base58/bs58.d.ts +26 -0
- package/{src/base58/bs58.ts → base58/bs58.js} +4 -13
- package/{src/base58/index.ts → base58/index.d.ts} +0 -4
- package/base58/index.js +4 -0
- package/base64/bs64.d.ts +26 -0
- package/{src/base64/bs64.ts → base64/bs64.js} +4 -13
- package/{src/base64/index.ts → base64/index.d.ts} +0 -4
- package/base64/index.js +6 -0
- package/base64/pad.d.ts +5 -0
- package/base64/pad.js +7 -0
- package/base64/trim.d.ts +5 -0
- package/base64/trim.js +10 -0
- package/blake2/asU8a.d.ts +20 -0
- package/{src/blake2/asU8a.ts → blake2/asU8a.js} +8 -16
- package/{src/blake2/index.ts → blake2/index.d.ts} +0 -4
- package/blake2/index.js +4 -0
- package/bn.d.ts +30 -0
- package/{src/bn.ts → bn.js} +0 -7
- package/bridge.d.ts +82 -0
- package/bridge.js +168 -0
- package/bundle-polkadot-util-crypto.js +11813 -0
- package/{src/bundle.ts → bundle.d.ts} +0 -7
- package/bundle.js +26 -0
- package/bundleInit.d.ts +1 -0
- package/bundleInit.js +5 -0
- package/cjs/address/addressToEvm.d.ts +5 -0
- package/cjs/address/addressToEvm.js +11 -0
- package/cjs/address/check.d.ts +8 -0
- package/cjs/address/check.js +29 -0
- package/cjs/address/checksum.d.ts +1 -0
- package/cjs/address/checksum.js +19 -0
- package/cjs/address/decode.d.ts +2 -0
- package/cjs/address/decode.js +32 -0
- package/cjs/address/defaults.d.ts +6 -0
- package/cjs/address/defaults.js +11 -0
- package/cjs/address/derive.d.ts +8 -0
- package/cjs/address/derive.js +27 -0
- package/cjs/address/encode.d.ts +2 -0
- package/cjs/address/encode.js +26 -0
- package/cjs/address/encodeDerived.d.ts +9 -0
- package/cjs/address/encodeDerived.js +15 -0
- package/cjs/address/encodeMulti.d.ts +9 -0
- package/cjs/address/encodeMulti.js +14 -0
- package/cjs/address/eq.d.ts +15 -0
- package/cjs/address/eq.js +22 -0
- package/cjs/address/evmToAddress.d.ts +7 -0
- package/cjs/address/evmToAddress.js +17 -0
- package/cjs/address/index.d.ts +16 -0
- package/cjs/address/index.js +35 -0
- package/cjs/address/is.d.ts +2 -0
- package/cjs/address/is.js +12 -0
- package/cjs/address/keyDerived.d.ts +2 -0
- package/cjs/address/keyDerived.js +11 -0
- package/cjs/address/keyMulti.d.ts +2 -0
- package/cjs/address/keyMulti.js +11 -0
- package/cjs/address/setSS58Format.d.ts +6 -0
- package/cjs/address/setSS58Format.js +14 -0
- package/cjs/address/sort.d.ts +2 -0
- package/cjs/address/sort.js +10 -0
- package/cjs/address/sshash.d.ts +1 -0
- package/cjs/address/sshash.js +9 -0
- package/cjs/address/types.d.ts +1 -0
- package/cjs/address/types.js +2 -0
- package/cjs/address/util.d.ts +1 -0
- package/cjs/address/util.js +7 -0
- package/cjs/address/validate.d.ts +2 -0
- package/cjs/address/validate.js +7 -0
- package/cjs/base32/bs32.d.ts +26 -0
- package/cjs/base32/bs32.js +43 -0
- package/cjs/base32/helpers.d.ts +25 -0
- package/cjs/base32/helpers.js +67 -0
- package/cjs/base32/index.d.ts +4 -0
- package/cjs/base32/index.js +11 -0
- package/cjs/base58/bs58.d.ts +26 -0
- package/cjs/base58/bs58.js +37 -0
- package/cjs/base58/index.d.ts +4 -0
- package/cjs/base58/index.js +11 -0
- package/cjs/base64/bs64.d.ts +26 -0
- package/cjs/base64/bs64.js +37 -0
- package/cjs/base64/index.d.ts +6 -0
- package/cjs/base64/index.js +15 -0
- package/cjs/base64/pad.d.ts +5 -0
- package/cjs/base64/pad.js +10 -0
- package/cjs/base64/trim.d.ts +5 -0
- package/cjs/base64/trim.js +13 -0
- package/cjs/blake2/asU8a.d.ts +20 -0
- package/cjs/blake2/asU8a.js +36 -0
- package/cjs/blake2/index.d.ts +4 -0
- package/cjs/blake2/index.js +9 -0
- package/cjs/bn.d.ts +30 -0
- package/cjs/bn.js +11 -0
- package/cjs/bridge.d.ts +82 -0
- package/cjs/bridge.js +172 -0
- package/cjs/bundle.d.ts +26 -0
- package/cjs/bundle.js +31 -0
- package/cjs/bundleInit.d.ts +1 -0
- package/cjs/bundleInit.js +7 -0
- package/cjs/crypto.d.ts +3 -0
- package/cjs/crypto.js +16 -0
- package/cjs/ed25519/deriveHard.d.ts +1 -0
- package/cjs/ed25519/deriveHard.js +12 -0
- package/{src/ed25519/index.ts → cjs/ed25519/index.d.ts} +0 -3
- package/cjs/ed25519/index.js +20 -0
- package/cjs/ed25519/pair/fromRandom.d.ts +16 -0
- package/cjs/ed25519/pair/fromRandom.js +22 -0
- package/cjs/ed25519/pair/fromSecret.d.ts +16 -0
- package/{src/ed25519/pair/fromSecret.ts → cjs/ed25519/pair/fromSecret.js} +11 -14
- package/cjs/ed25519/pair/fromSeed.d.ts +16 -0
- package/cjs/ed25519/pair/fromSeed.js +34 -0
- package/cjs/ed25519/pair/fromString.d.ts +16 -0
- package/cjs/ed25519/pair/fromString.js +23 -0
- package/cjs/ed25519/sign.d.ts +16 -0
- package/cjs/ed25519/sign.js +33 -0
- package/cjs/ed25519/verify.d.ts +15 -0
- package/cjs/ed25519/verify.js +39 -0
- package/cjs/ethereum/encode.d.ts +2 -0
- package/cjs/ethereum/encode.js +28 -0
- package/{src/ethereum/index.ts → cjs/ethereum/index.d.ts} +0 -3
- package/cjs/ethereum/index.js +9 -0
- package/cjs/ethereum/isAddress.d.ts +1 -0
- package/cjs/ethereum/isAddress.js +14 -0
- package/cjs/ethereum/isChecksum.d.ts +1 -0
- package/cjs/ethereum/isChecksum.js +20 -0
- package/cjs/hd/ethereum/index.d.ts +2 -0
- package/cjs/hd/ethereum/index.js +47 -0
- package/{src/hd/index.ts → cjs/hd/index.d.ts} +0 -3
- package/cjs/hd/index.js +9 -0
- package/cjs/hd/ledger/derivePrivate.d.ts +1 -0
- package/cjs/hd/ledger/derivePrivate.js +15 -0
- package/cjs/hd/ledger/index.d.ts +2 -0
- package/cjs/hd/ledger/index.js +33 -0
- package/cjs/hd/ledger/master.d.ts +1 -0
- package/cjs/hd/ledger/master.js +19 -0
- package/cjs/hd/validatePath.d.ts +2 -0
- package/cjs/hd/validatePath.js +20 -0
- package/cjs/helpers.d.ts +12 -0
- package/cjs/helpers.js +24 -0
- package/cjs/hmac/index.d.ts +1 -0
- package/cjs/hmac/index.js +7 -0
- package/cjs/hmac/shaAsU8a.d.ts +15 -0
- package/cjs/hmac/shaAsU8a.js +40 -0
- package/cjs/index.d.ts +2 -0
- package/cjs/index.js +5 -0
- package/cjs/init.d.ts +10 -0
- package/cjs/init.js +43 -0
- package/cjs/json/constants.d.ts +6 -0
- package/cjs/json/constants.js +8 -0
- package/cjs/json/decrypt.d.ts +2 -0
- package/cjs/json/decrypt.js +16 -0
- package/cjs/json/decryptData.d.ts +2 -0
- package/cjs/json/decryptData.js +32 -0
- package/cjs/json/encrypt.d.ts +2 -0
- package/cjs/json/encrypt.js +18 -0
- package/cjs/json/encryptFormat.d.ts +2 -0
- package/cjs/json/encryptFormat.js +17 -0
- package/{src/json/index.ts → cjs/json/index.d.ts} +0 -3
- package/cjs/json/index.js +11 -0
- package/cjs/json/types.d.ts +16 -0
- package/cjs/json/types.js +2 -0
- package/cjs/keccak/asU8a.d.ts +30 -0
- package/cjs/keccak/asU8a.js +36 -0
- package/{src/keccak/index.ts → cjs/keccak/index.d.ts} +0 -4
- package/cjs/keccak/index.js +11 -0
- package/cjs/key/DeriveJunction.d.ts +12 -0
- package/cjs/key/DeriveJunction.js +62 -0
- package/cjs/key/extractPath.d.ts +9 -0
- package/cjs/key/extractPath.js +26 -0
- package/cjs/key/extractSuri.d.ts +11 -0
- package/cjs/key/extractSuri.js +25 -0
- package/cjs/key/fromPath.d.ts +3 -0
- package/cjs/key/fromPath.js +21 -0
- package/cjs/key/hdkdDerive.d.ts +3 -0
- package/cjs/key/hdkdDerive.js +11 -0
- package/cjs/key/hdkdEcdsa.d.ts +1 -0
- package/cjs/key/hdkdEcdsa.js +7 -0
- package/cjs/key/hdkdEd25519.d.ts +1 -0
- package/cjs/key/hdkdEd25519.js +6 -0
- package/cjs/key/hdkdSr25519.d.ts +3 -0
- package/cjs/key/hdkdSr25519.js +10 -0
- package/{src/key/index.ts → cjs/key/index.d.ts} +0 -3
- package/cjs/key/index.js +18 -0
- package/cjs/mnemonic/bip39.d.ts +5 -0
- package/cjs/mnemonic/bip39.js +90 -0
- package/cjs/mnemonic/generate.d.ts +13 -0
- package/cjs/mnemonic/generate.js +23 -0
- package/{src/mnemonic/index.ts → cjs/mnemonic/index.d.ts} +0 -3
- package/cjs/mnemonic/index.js +16 -0
- package/cjs/mnemonic/toEntropy.d.ts +1 -0
- package/cjs/mnemonic/toEntropy.js +11 -0
- package/cjs/mnemonic/toLegacySeed.d.ts +18 -0
- package/cjs/mnemonic/toLegacySeed.js +37 -0
- package/cjs/mnemonic/toMiniSecret.d.ts +1 -0
- package/cjs/mnemonic/toMiniSecret.js +20 -0
- package/cjs/mnemonic/validate.d.ts +14 -0
- package/cjs/mnemonic/validate.js +24 -0
- package/cjs/mnemonic/wordlists/en.d.ts +2 -0
- package/cjs/mnemonic/wordlists/en.js +3 -0
- package/cjs/mnemonic/wordlists/es.d.ts +2 -0
- package/cjs/mnemonic/wordlists/es.js +3 -0
- package/cjs/mnemonic/wordlists/fr.d.ts +2 -0
- package/cjs/mnemonic/wordlists/fr.js +3 -0
- package/{src/mnemonic/wordlists/index.ts → cjs/mnemonic/wordlists/index.d.ts} +0 -3
- package/cjs/mnemonic/wordlists/index.js +20 -0
- package/cjs/mnemonic/wordlists/it.d.ts +2 -0
- package/cjs/mnemonic/wordlists/it.js +3 -0
- package/cjs/mnemonic/wordlists/jp.d.ts +2 -0
- package/cjs/mnemonic/wordlists/jp.js +3 -0
- package/cjs/mnemonic/wordlists/ko.d.ts +2 -0
- package/cjs/mnemonic/wordlists/ko.js +3 -0
- package/cjs/mnemonic/wordlists/zh-s.d.ts +2 -0
- package/cjs/mnemonic/wordlists/zh-s.js +3 -0
- package/cjs/mnemonic/wordlists/zh-t.d.ts +2 -0
- package/cjs/mnemonic/wordlists/zh-t.js +3 -0
- package/cjs/nacl/decrypt.d.ts +15 -0
- package/cjs/nacl/decrypt.js +21 -0
- package/cjs/nacl/encrypt.d.ts +20 -0
- package/cjs/nacl/encrypt.js +25 -0
- package/{src/nacl/index.ts → cjs/nacl/index.d.ts} +0 -3
- package/cjs/nacl/index.js +10 -0
- package/cjs/nacl/tweetnacl.d.ts +2 -0
- package/cjs/nacl/tweetnacl.js +238 -0
- package/cjs/networks.d.ts +1 -0
- package/cjs/networks.js +7 -0
- package/cjs/package.json +3 -0
- package/cjs/packageDetect.d.ts +1 -0
- package/cjs/packageDetect.js +8 -0
- package/cjs/packageInfo.d.ts +6 -0
- package/cjs/packageInfo.js +4 -0
- package/cjs/pbkdf2/encode.d.ts +7 -0
- package/cjs/pbkdf2/encode.js +19 -0
- package/cjs/pbkdf2/index.d.ts +1 -0
- package/cjs/pbkdf2/index.js +5 -0
- package/cjs/random/asNumber.d.ts +15 -0
- package/cjs/random/asNumber.js +23 -0
- package/cjs/random/asU8a.d.ts +20 -0
- package/cjs/random/asU8a.js +28 -0
- package/{src/random/index.ts → cjs/random/index.d.ts} +0 -4
- package/cjs/random/index.js +11 -0
- package/cjs/scrypt/defaults.d.ts +3 -0
- package/cjs/scrypt/defaults.js +16 -0
- package/cjs/scrypt/encode.d.ts +8 -0
- package/cjs/scrypt/encode.js +18 -0
- package/cjs/scrypt/fromU8a.d.ts +7 -0
- package/cjs/scrypt/fromU8a.js +27 -0
- package/{src/scrypt/index.ts → cjs/scrypt/index.d.ts} +0 -3
- package/cjs/scrypt/index.js +9 -0
- package/cjs/scrypt/toU8a.d.ts +2 -0
- package/cjs/scrypt/toU8a.js +8 -0
- package/cjs/scrypt/types.d.ts +6 -0
- package/cjs/scrypt/types.js +2 -0
- package/cjs/secp256k1/compress.d.ts +1 -0
- package/cjs/secp256k1/compress.js +17 -0
- package/cjs/secp256k1/deriveHard.d.ts +1 -0
- package/cjs/secp256k1/deriveHard.js +13 -0
- package/cjs/secp256k1/expand.d.ts +1 -0
- package/cjs/secp256k1/expand.js +20 -0
- package/cjs/secp256k1/hasher.d.ts +2 -0
- package/cjs/secp256k1/hasher.js +10 -0
- package/{src/secp256k1/index.ts → cjs/secp256k1/index.d.ts} +0 -3
- package/cjs/secp256k1/index.js +17 -0
- package/cjs/secp256k1/pair/fromSeed.d.ts +6 -0
- package/cjs/secp256k1/pair/fromSeed.js +34 -0
- package/cjs/secp256k1/recover.d.ts +6 -0
- package/cjs/secp256k1/recover.js +29 -0
- package/cjs/secp256k1/sign.d.ts +7 -0
- package/cjs/secp256k1/sign.js +23 -0
- package/cjs/secp256k1/tweakAdd.d.ts +1 -0
- package/cjs/secp256k1/tweakAdd.js +48 -0
- package/cjs/secp256k1/types.d.ts +1 -0
- package/cjs/secp256k1/types.js +2 -0
- package/cjs/secp256k1/verify.d.ts +6 -0
- package/cjs/secp256k1/verify.js +23 -0
- package/cjs/sha/asU8a.d.ts +15 -0
- package/cjs/sha/asU8a.js +22 -0
- package/{src/sha/index.ts → cjs/sha/index.d.ts} +0 -4
- package/cjs/sha/index.js +10 -0
- package/cjs/signature/index.d.ts +4 -0
- package/cjs/signature/index.js +8 -0
- package/cjs/signature/verify.d.ts +2 -0
- package/cjs/signature/verify.js +81 -0
- package/cjs/sr25519/agreement.d.ts +5 -0
- package/cjs/sr25519/agreement.js +20 -0
- package/cjs/sr25519/derive.d.ts +2 -0
- package/cjs/sr25519/derive.js +16 -0
- package/cjs/sr25519/deriveHard.d.ts +1 -0
- package/cjs/sr25519/deriveHard.js +7 -0
- package/cjs/sr25519/derivePublic.d.ts +1 -0
- package/cjs/sr25519/derivePublic.js +16 -0
- package/cjs/sr25519/deriveSoft.d.ts +1 -0
- package/cjs/sr25519/deriveSoft.js +7 -0
- package/{src/sr25519/index.ts → cjs/sr25519/index.d.ts} +0 -3
- package/cjs/sr25519/index.js +21 -0
- package/cjs/sr25519/pair/fromSeed.d.ts +6 -0
- package/cjs/sr25519/pair/fromSeed.js +22 -0
- package/cjs/sr25519/pair/fromU8a.d.ts +2 -0
- package/cjs/sr25519/pair/fromU8a.js +17 -0
- package/cjs/sr25519/pair/toU8a.d.ts +2 -0
- package/cjs/sr25519/pair/toU8a.js +7 -0
- package/cjs/sr25519/sign.d.ts +6 -0
- package/cjs/sr25519/sign.js +19 -0
- package/cjs/sr25519/verify.d.ts +5 -0
- package/cjs/sr25519/verify.js +21 -0
- package/cjs/sr25519/vrfSign.d.ts +6 -0
- package/cjs/sr25519/vrfSign.js +19 -0
- package/cjs/sr25519/vrfVerify.d.ts +5 -0
- package/cjs/sr25519/vrfVerify.js +22 -0
- package/cjs/types.d.ts +26 -0
- package/cjs/types.js +5 -0
- package/cjs/wbg.d.ts +36 -0
- package/cjs/wbg.js +65 -0
- package/cjs/xxhash/asU8a.d.ts +20 -0
- package/cjs/xxhash/asU8a.js +39 -0
- package/{src/xxhash/index.ts → cjs/xxhash/index.d.ts} +0 -4
- package/cjs/xxhash/index.js +9 -0
- package/cjs/xxhash/xxhash64.d.ts +1 -0
- package/cjs/xxhash/xxhash64.js +103 -0
- package/crypto.d.ts +3 -0
- package/crypto.js +12 -0
- package/ed25519/deriveHard.d.ts +1 -0
- package/ed25519/deriveHard.js +9 -0
- package/ed25519/index.d.ts +10 -0
- package/ed25519/index.js +10 -0
- package/ed25519/pair/fromRandom.d.ts +16 -0
- package/{src/ed25519/pair/fromRandom.ts → ed25519/pair/fromRandom.js} +2 -8
- package/ed25519/pair/fromSecret.d.ts +16 -0
- package/ed25519/pair/fromSecret.js +23 -0
- package/ed25519/pair/fromSeed.d.ts +16 -0
- package/{src/ed25519/pair/fromSeed.ts → ed25519/pair/fromSeed.js} +11 -21
- package/ed25519/pair/fromString.d.ts +16 -0
- package/{src/ed25519/pair/fromString.ts → ed25519/pair/fromString.js} +2 -13
- package/ed25519/sign.d.ts +16 -0
- package/ed25519/sign.js +30 -0
- package/ed25519/verify.d.ts +15 -0
- package/ed25519/verify.js +36 -0
- package/ethereum/encode.d.ts +2 -0
- package/ethereum/encode.js +25 -0
- package/ethereum/index.d.ts +3 -0
- package/ethereum/index.js +3 -0
- package/ethereum/isAddress.d.ts +1 -0
- package/ethereum/isAddress.js +11 -0
- package/ethereum/isChecksum.d.ts +1 -0
- package/ethereum/isChecksum.js +17 -0
- package/hd/ethereum/index.d.ts +2 -0
- package/hd/ethereum/index.js +44 -0
- package/hd/index.d.ts +3 -0
- package/hd/index.js +3 -0
- package/hd/ledger/derivePrivate.d.ts +1 -0
- package/hd/ledger/derivePrivate.js +12 -0
- package/hd/ledger/index.d.ts +2 -0
- package/hd/ledger/index.js +30 -0
- package/hd/ledger/master.d.ts +1 -0
- package/hd/ledger/master.js +16 -0
- package/hd/validatePath.d.ts +2 -0
- package/hd/validatePath.js +16 -0
- package/helpers.d.ts +12 -0
- package/helpers.js +19 -0
- package/hmac/index.d.ts +1 -0
- package/hmac/index.js +1 -0
- package/hmac/shaAsU8a.d.ts +15 -0
- package/{src/hmac/shaAsU8a.ts → hmac/shaAsU8a.js} +11 -23
- package/index.d.ts +2 -0
- package/index.js +2 -0
- package/init.d.ts +10 -0
- package/init.js +40 -0
- package/json/constants.d.ts +6 -0
- package/json/constants.js +5 -0
- package/json/decrypt.d.ts +2 -0
- package/json/decrypt.js +13 -0
- package/json/decryptData.d.ts +2 -0
- package/json/decryptData.js +29 -0
- package/json/encrypt.d.ts +2 -0
- package/json/encrypt.js +15 -0
- package/json/encryptFormat.d.ts +2 -0
- package/json/encryptFormat.js +14 -0
- package/json/index.d.ts +4 -0
- package/json/index.js +4 -0
- package/json/types.d.ts +16 -0
- package/json/types.js +1 -0
- package/keccak/asU8a.d.ts +30 -0
- package/{src/keccak/asU8a.ts → keccak/asU8a.js} +1 -13
- package/keccak/index.d.ts +4 -0
- package/keccak/index.js +4 -0
- package/key/DeriveJunction.d.ts +12 -0
- package/key/DeriveJunction.js +58 -0
- package/key/extractPath.d.ts +9 -0
- package/key/extractPath.js +23 -0
- package/key/extractSuri.d.ts +11 -0
- package/key/extractSuri.js +22 -0
- package/key/fromPath.d.ts +3 -0
- package/key/fromPath.js +18 -0
- package/key/hdkdDerive.d.ts +3 -0
- package/key/hdkdDerive.js +8 -0
- package/key/hdkdEcdsa.d.ts +1 -0
- package/{src/key/hdkdEcdsa.ts → key/hdkdEcdsa.js} +0 -4
- package/key/hdkdEd25519.d.ts +1 -0
- package/{src/key/hdkdEd25519.ts → key/hdkdEd25519.js} +0 -4
- package/key/hdkdSr25519.d.ts +3 -0
- package/key/hdkdSr25519.js +7 -0
- package/key/index.d.ts +9 -0
- package/key/index.js +9 -0
- package/mnemonic/bip39.d.ts +5 -0
- package/mnemonic/bip39.js +82 -0
- package/mnemonic/generate.d.ts +13 -0
- package/{src/mnemonic/generate.ts → mnemonic/generate.js} +4 -9
- package/mnemonic/index.d.ts +8 -0
- package/mnemonic/index.js +8 -0
- package/mnemonic/toEntropy.d.ts +1 -0
- package/mnemonic/toEntropy.js +8 -0
- package/mnemonic/toLegacySeed.d.ts +18 -0
- package/{src/mnemonic/toLegacySeed.ts → mnemonic/toLegacySeed.js} +12 -17
- package/mnemonic/toMiniSecret.d.ts +1 -0
- package/mnemonic/toMiniSecret.js +17 -0
- package/mnemonic/validate.d.ts +14 -0
- package/{src/mnemonic/validate.ts → mnemonic/validate.js} +4 -9
- package/mnemonic/wordlists/en.d.ts +2 -0
- package/{src/mnemonic/wordlists/en.ts → mnemonic/wordlists/en.js} +0 -6
- package/mnemonic/wordlists/es.d.ts +2 -0
- package/{src/mnemonic/wordlists/es.ts → mnemonic/wordlists/es.js} +0 -6
- package/mnemonic/wordlists/fr.d.ts +2 -0
- package/{src/mnemonic/wordlists/fr.ts → mnemonic/wordlists/fr.js} +0 -6
- package/mnemonic/wordlists/index.d.ts +8 -0
- package/mnemonic/wordlists/index.js +8 -0
- package/mnemonic/wordlists/it.d.ts +2 -0
- package/{src/mnemonic/wordlists/it.ts → mnemonic/wordlists/it.js} +0 -6
- package/mnemonic/wordlists/jp.d.ts +2 -0
- package/{src/mnemonic/wordlists/jp.ts → mnemonic/wordlists/jp.js} +0 -6
- package/mnemonic/wordlists/ko.d.ts +2 -0
- package/{src/mnemonic/wordlists/ko.ts → mnemonic/wordlists/ko.js} +0 -6
- package/mnemonic/wordlists/zh-s.d.ts +2 -0
- package/{src/mnemonic/wordlists/zh-s.ts → mnemonic/wordlists/zh-s.js} +0 -6
- package/mnemonic/wordlists/zh-t.d.ts +2 -0
- package/{src/mnemonic/wordlists/zh-t.ts → mnemonic/wordlists/zh-t.js} +0 -6
- package/nacl/decrypt.d.ts +15 -0
- package/{src/nacl/decrypt.ts → nacl/decrypt.js} +2 -6
- package/nacl/encrypt.d.ts +20 -0
- package/{src/nacl/encrypt.ts → nacl/encrypt.js} +5 -14
- package/nacl/index.d.ts +5 -0
- package/nacl/index.js +5 -0
- package/nacl/tweetnacl.d.ts +2 -0
- package/nacl/tweetnacl.js +234 -0
- package/networks.d.ts +1 -0
- package/networks.js +1 -0
- package/package.json +2022 -10
- package/packageDetect.d.ts +1 -0
- package/{src/packageDetect.ts → packageDetect.js} +0 -8
- package/packageInfo.d.ts +6 -0
- package/packageInfo.js +1 -0
- package/pbkdf2/encode.d.ts +7 -0
- package/pbkdf2/encode.js +16 -0
- package/pbkdf2/index.d.ts +1 -0
- package/pbkdf2/index.js +1 -0
- package/random/asNumber.d.ts +15 -0
- package/{src/random/asNumber.ts → random/asNumber.js} +2 -10
- package/random/asU8a.d.ts +20 -0
- package/{src/random/asU8a.ts → random/asU8a.js} +2 -8
- package/random/index.d.ts +5 -0
- package/random/index.js +5 -0
- package/scrypt/defaults.d.ts +3 -0
- package/scrypt/defaults.js +13 -0
- package/scrypt/encode.d.ts +8 -0
- package/scrypt/encode.js +15 -0
- package/scrypt/fromU8a.d.ts +7 -0
- package/scrypt/fromU8a.js +24 -0
- package/scrypt/index.d.ts +3 -0
- package/scrypt/index.js +3 -0
- package/scrypt/toU8a.d.ts +2 -0
- package/scrypt/toU8a.js +5 -0
- package/scrypt/types.d.ts +6 -0
- package/scrypt/types.js +1 -0
- package/secp256k1/compress.d.ts +1 -0
- package/secp256k1/compress.js +14 -0
- package/secp256k1/deriveHard.d.ts +1 -0
- package/secp256k1/deriveHard.js +10 -0
- package/secp256k1/expand.d.ts +1 -0
- package/secp256k1/expand.js +17 -0
- package/secp256k1/hasher.d.ts +2 -0
- package/secp256k1/hasher.js +7 -0
- package/secp256k1/index.d.ts +7 -0
- package/secp256k1/index.js +7 -0
- package/secp256k1/pair/fromSeed.d.ts +6 -0
- package/secp256k1/pair/fromSeed.js +31 -0
- package/secp256k1/recover.d.ts +6 -0
- package/secp256k1/recover.js +26 -0
- package/secp256k1/sign.d.ts +7 -0
- package/secp256k1/sign.js +20 -0
- package/secp256k1/tweakAdd.d.ts +1 -0
- package/secp256k1/tweakAdd.js +45 -0
- package/secp256k1/types.d.ts +1 -0
- package/secp256k1/types.js +1 -0
- package/secp256k1/verify.d.ts +6 -0
- package/secp256k1/verify.js +20 -0
- package/sha/asU8a.d.ts +15 -0
- package/{src/sha/asU8a.ts → sha/asU8a.js} +1 -12
- package/sha/index.d.ts +4 -0
- package/sha/index.js +4 -0
- package/signature/index.d.ts +4 -0
- package/signature/index.js +4 -0
- package/signature/verify.d.ts +2 -0
- package/signature/verify.js +78 -0
- package/sr25519/agreement.d.ts +5 -0
- package/sr25519/agreement.js +17 -0
- package/sr25519/derive.d.ts +2 -0
- package/sr25519/derive.js +12 -0
- package/sr25519/deriveHard.d.ts +1 -0
- package/{src/sr25519/deriveHard.ts → sr25519/deriveHard.js} +0 -6
- package/sr25519/derivePublic.d.ts +1 -0
- package/sr25519/derivePublic.js +12 -0
- package/sr25519/deriveSoft.d.ts +1 -0
- package/{src/sr25519/deriveSoft.ts → sr25519/deriveSoft.js} +0 -6
- package/sr25519/index.d.ts +9 -0
- package/sr25519/index.js +9 -0
- package/sr25519/pair/fromSeed.d.ts +6 -0
- package/sr25519/pair/fromSeed.js +18 -0
- package/sr25519/pair/fromU8a.d.ts +2 -0
- package/sr25519/pair/fromU8a.js +14 -0
- package/sr25519/pair/toU8a.d.ts +2 -0
- package/sr25519/pair/toU8a.js +4 -0
- package/sr25519/sign.d.ts +6 -0
- package/sr25519/sign.js +15 -0
- package/sr25519/verify.d.ts +5 -0
- package/sr25519/verify.js +17 -0
- package/sr25519/vrfSign.d.ts +6 -0
- package/sr25519/vrfSign.js +15 -0
- package/sr25519/vrfVerify.d.ts +5 -0
- package/sr25519/vrfVerify.js +18 -0
- package/types.d.ts +26 -0
- package/types.js +2 -0
- package/wbg.d.ts +36 -0
- package/wbg.js +61 -0
- package/xxhash/asU8a.d.ts +20 -0
- package/{src/xxhash/asU8a.ts → xxhash/asU8a.js} +11 -21
- package/xxhash/index.d.ts +4 -0
- package/xxhash/index.js +4 -0
- package/xxhash/xxhash64.d.ts +1 -0
- package/xxhash/xxhash64.js +100 -0
- package/src/address/addressToEvm.spec.ts +0 -16
- package/src/address/addressToEvm.ts +0 -12
- package/src/address/check.spec.ts +0 -44
- package/src/address/check.ts +0 -34
- package/src/address/checksum.spec.ts +0 -45
- package/src/address/checksum.ts +0 -25
- package/src/address/decode.spec.ts +0 -138
- package/src/address/decode.ts +0 -41
- package/src/address/defaults.ts +0 -12
- package/src/address/derive.spec.ts +0 -26
- package/src/address/derive.ts +0 -36
- package/src/address/encode.spec.ts +0 -177
- package/src/address/encode.ts +0 -43
- package/src/address/encodeDerived.spec.ts +0 -14
- package/src/address/encodeDerived.ts +0 -19
- package/src/address/encodeMulti.spec.ts +0 -18
- package/src/address/encodeMulti.ts +0 -18
- package/src/address/eq.spec.ts +0 -45
- package/src/address/evmToAddress.spec.ts +0 -20
- package/src/address/evmToAddress.ts +0 -24
- package/src/address/is.spec.ts +0 -113
- package/src/address/is.ts +0 -14
- package/src/address/keyDerived.spec.ts +0 -24
- package/src/address/keyDerived.ts +0 -22
- package/src/address/keyMulti.spec.ts +0 -20
- package/src/address/keyMulti.ts +0 -23
- package/src/address/setSS58Format.spec.ts +0 -21
- package/src/address/setSS58Format.ts +0 -20
- package/src/address/sort.spec.ts +0 -22
- package/src/address/sort.ts +0 -17
- package/src/address/sshash.ts +0 -12
- package/src/address/types.ts +0 -6
- package/src/address/util.ts +0 -8
- package/src/address/validate.spec.ts +0 -113
- package/src/address/validate.ts +0 -10
- package/src/base32/decode.spec.ts +0 -34
- package/src/base32/encode.spec.ts +0 -30
- package/src/base32/helpers.ts +0 -93
- package/src/base32/is.spec.ts +0 -32
- package/src/base32/validate.spec.ts +0 -44
- package/src/base58/decode.spec.ts +0 -31
- package/src/base58/encode.spec.ts +0 -26
- package/src/base58/validate.spec.ts +0 -20
- package/src/base64/decode.spec.ts +0 -42
- package/src/base64/encode.spec.ts +0 -14
- package/src/base64/pad.spec.ts +0 -14
- package/src/base64/pad.ts +0 -10
- package/src/base64/trim.spec.ts +0 -14
- package/src/base64/trim.ts +0 -14
- package/src/base64/validate.spec.ts +0 -32
- package/src/blake2/asHex.spec.ts +0 -57
- package/src/blake2/asU8a.spec.ts +0 -74
- package/src/bundleInit.ts +0 -11
- package/src/crypto.spec.ts +0 -18
- package/src/crypto.ts +0 -18
- package/src/ed25519/deriveHard.ts +0 -18
- package/src/ed25519/pair/fromRandom.spec.ts +0 -28
- package/src/ed25519/pair/fromSecret.spec.ts +0 -33
- package/src/ed25519/pair/fromSeed.spec.ts +0 -42
- package/src/ed25519/pair/fromString.spec.ts +0 -17
- package/src/ed25519/sign.spec.ts +0 -40
- package/src/ed25519/sign.ts +0 -38
- package/src/ed25519/verify.spec.ts +0 -84
- package/src/ed25519/verify.ts +0 -41
- package/src/ethereum/encode.spec.ts +0 -59
- package/src/ethereum/encode.ts +0 -39
- package/src/ethereum/isAddress.spec.ts +0 -34
- package/src/ethereum/isAddress.ts +0 -16
- package/src/ethereum/isChecksum.ts +0 -27
- package/src/ethereum/isCheksum.spec.ts +0 -30
- package/src/hd/ethereum/index.spec.ts +0 -54
- package/src/hd/ethereum/index.ts +0 -69
- package/src/hd/ledger/derivePrivate.ts +0 -34
- package/src/hd/ledger/index.spec.ts +0 -64
- package/src/hd/ledger/index.ts +0 -42
- package/src/hd/ledger/master.spec.ts +0 -19
- package/src/hd/ledger/master.ts +0 -26
- package/src/hd/validatePath.spec.ts +0 -30
- package/src/hd/validatePath.ts +0 -24
- package/src/helpers.ts +0 -38
- package/src/hmac/index.ts +0 -4
- package/src/hmac/shaAsU8a.spec.ts +0 -45
- package/src/index.ts +0 -6
- package/src/json/constants.ts +0 -11
- package/src/json/decrypt.ts +0 -25
- package/src/json/decryptData.ts +0 -45
- package/src/json/encrypt.ts +0 -25
- package/src/json/encryptFormat.ts +0 -20
- package/src/json/types.ts +0 -22
- package/src/keccak/asHex.spec.ts +0 -30
- package/src/keccak/asU8a.spec.ts +0 -56
- package/src/key/DeriveJunction.ts +0 -79
- package/src/key/extractPath.spec.ts +0 -51
- package/src/key/extractPath.ts +0 -37
- package/src/key/extractSuri.spec.ts +0 -147
- package/src/key/extractSuri.ts +0 -40
- package/src/key/fromPath.ts +0 -28
- package/src/key/hdkdDerive.ts +0 -17
- package/src/key/hdkdSr25519.ts +0 -14
- package/src/mnemonic/bip39.spec.ts +0 -80
- package/src/mnemonic/bip39.ts +0 -127
- package/src/mnemonic/generate.spec.ts +0 -58
- package/src/mnemonic/toEntropy.spec.ts +0 -36
- package/src/mnemonic/toEntropy.ts +0 -13
- package/src/mnemonic/toLegacySeed.spec.ts +0 -52
- package/src/mnemonic/toMiniSecret.spec.ts +0 -67
- package/src/mnemonic/toMiniSecret.ts +0 -23
- package/src/mnemonic/toMiniSecretCmp.spec.ts +0 -64
- package/src/mnemonic/validate.spec.ts +0 -39
- package/src/mod.ts +0 -4
- package/src/nacl/decrypt.spec.ts +0 -26
- package/src/nacl/encrypt.spec.ts +0 -20
- package/src/nacl/tweetnacl-secretbox-data.spec.ts +0 -4629
- package/src/nacl/tweetnacl-secretbox.spec.ts +0 -161
- package/src/nacl/tweetnacl.ts +0 -1159
- package/src/networks.ts +0 -5
- package/src/packageInfo.ts +0 -6
- package/src/pbkdf2/encode.spec.ts +0 -54
- package/src/pbkdf2/encode.ts +0 -29
- package/src/pbkdf2/index.ts +0 -4
- package/src/random/asHex.spec.ts +0 -38
- package/src/random/asNumber.spec.ts +0 -16
- package/src/random/asU8a.spec.ts +0 -36
- package/src/scrypt/defaults.ts +0 -19
- package/src/scrypt/encode.spec.ts +0 -43
- package/src/scrypt/encode.ts +0 -30
- package/src/scrypt/fromU8a.ts +0 -44
- package/src/scrypt/toU8a.ts +0 -17
- package/src/scrypt/types.ts +0 -9
- package/src/secp256k1/compress.spec.ts +0 -47
- package/src/secp256k1/compress.ts +0 -21
- package/src/secp256k1/deriveHard.ts +0 -17
- package/src/secp256k1/expand.spec.ts +0 -47
- package/src/secp256k1/expand.ts +0 -30
- package/src/secp256k1/hasher.spec.ts +0 -24
- package/src/secp256k1/hasher.ts +0 -13
- package/src/secp256k1/pair/fromSeed.spec.ts +0 -75
- package/src/secp256k1/pair/fromSeed.ts +0 -42
- package/src/secp256k1/recover.spec.ts +0 -35
- package/src/secp256k1/recover.ts +0 -36
- package/src/secp256k1/sign.spec.ts +0 -39
- package/src/secp256k1/sign.ts +0 -37
- package/src/secp256k1/signVerify.spec.ts +0 -94
- package/src/secp256k1/tweakAdd.spec.ts +0 -35
- package/src/secp256k1/tweakAdd.ts +0 -65
- package/src/secp256k1/types.ts +0 -4
- package/src/secp256k1/verify.spec.ts +0 -81
- package/src/secp256k1/verify.ts +0 -32
- package/src/sha/asU8a256.spec.ts +0 -55
- package/src/sha/asU8a512.spec.ts +0 -33
- package/src/signature/index.ts +0 -8
- package/src/signature/verify.spec.ts +0 -230
- package/src/signature/verify.ts +0 -114
- package/src/sr25519/agreement.spec.ts +0 -31
- package/src/sr25519/agreement.ts +0 -23
- package/src/sr25519/derive.ts +0 -21
- package/src/sr25519/derivePublic.ts +0 -18
- package/src/sr25519/pair/fromSeed.spec.ts +0 -35
- package/src/sr25519/pair/fromSeed.ts +0 -28
- package/src/sr25519/pair/fromU8a.ts +0 -23
- package/src/sr25519/pair/testing.spec.ts +0 -161
- package/src/sr25519/pair/toU8a.ts +0 -10
- package/src/sr25519/sign.spec.ts +0 -28
- package/src/sr25519/sign.ts +0 -22
- package/src/sr25519/verify.spec.ts +0 -42
- package/src/sr25519/verify.ts +0 -23
- package/src/sr25519/vrfSign.ts +0 -24
- package/src/sr25519/vrfSignVerify.spec.ts +0 -73
- package/src/sr25519/vrfVerify.ts +0 -25
- package/src/test/index.ts +0 -8
- package/src/test/performance.ts +0 -17
- package/src/types.ts +0 -33
- package/src/xxhash/asHex.spec.ts +0 -36
- package/src/xxhash/asU8a.spec.ts +0 -48
- package/src/xxhash/xxhash64.ts +0 -155
- package/tsconfig.build.json +0 -18
- package/tsconfig.spec.json +0 -20
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util-crypto authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import { isHex } from '@pezkuwi/util';
|
|
5
|
-
|
|
6
|
-
import { isEthereumChecksum } from './isChecksum.js';
|
|
7
|
-
|
|
8
|
-
export function isEthereumAddress (address?: string): boolean {
|
|
9
|
-
if (!address || address.length !== 42 || !isHex(address)) {
|
|
10
|
-
return false;
|
|
11
|
-
} else if (/^(0x)?[0-9a-f]{40}$/.test(address) || /^(0x)?[0-9A-F]{40}$/.test(address)) {
|
|
12
|
-
return true;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
return isEthereumChecksum(address);
|
|
16
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util-crypto authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import { u8aToHex } from '@pezkuwi/util';
|
|
5
|
-
|
|
6
|
-
import { keccakAsU8a } from '../keccak/index.js';
|
|
7
|
-
|
|
8
|
-
function isInvalidChar (char: string, byte: number): boolean {
|
|
9
|
-
return char !== (
|
|
10
|
-
byte > 7
|
|
11
|
-
? char.toUpperCase()
|
|
12
|
-
: char.toLowerCase()
|
|
13
|
-
);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export function isEthereumChecksum (_address: string): boolean {
|
|
17
|
-
const address = _address.replace('0x', '');
|
|
18
|
-
const hash = u8aToHex(keccakAsU8a(address.toLowerCase()), -1, false);
|
|
19
|
-
|
|
20
|
-
for (let i = 0; i < 40; i++) {
|
|
21
|
-
if (isInvalidChar(address[i], parseInt(hash[i], 16))) {
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
return true;
|
|
27
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util-crypto authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
-
|
|
6
|
-
import { isEthereumChecksum } from './index.js';
|
|
7
|
-
|
|
8
|
-
const ADDRESS = '0x00a329c0648769A73afAc7F9381E08FB43dBEA72';
|
|
9
|
-
|
|
10
|
-
describe('isEthereumChecksum', () => {
|
|
11
|
-
it('returns false on invalid address', () => {
|
|
12
|
-
expect(isEthereumChecksum('0x00a329c0648769')).toBe(false);
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
it('returns false on non-checksum address', () => {
|
|
16
|
-
expect(isEthereumChecksum('0x1234567890abcdeedcba1234567890abcdeedcba')).toBe(false);
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
it('returns false when fully lowercase', () => {
|
|
20
|
-
expect(isEthereumChecksum(ADDRESS.toLowerCase())).toBe(false);
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
it('returns false when fully uppercase', () => {
|
|
24
|
-
expect(isEthereumChecksum(ADDRESS.toUpperCase().replace('0X', '0x'))).toBe(false);
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
it('returns true on a checksummed address', () => {
|
|
28
|
-
expect(isEthereumChecksum(ADDRESS)).toBe(true);
|
|
29
|
-
});
|
|
30
|
-
});
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util-crypto authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
-
|
|
6
|
-
import { mnemonicToLegacySeed } from '@pezkuwi/util-crypto';
|
|
7
|
-
|
|
8
|
-
import { hdEthereum } from './index.js';
|
|
9
|
-
|
|
10
|
-
describe('hdEthereum', (): void => {
|
|
11
|
-
const PHRASE = 'seed sock milk update focus rotate barely fade car face mechanic mercy';
|
|
12
|
-
const derivationPath = 'm/44\'/60\'/0\'/0/0';
|
|
13
|
-
const PUBLIC = new Uint8Array([
|
|
14
|
-
3, 118, 64, 77, 247, 27, 4, 157,
|
|
15
|
-
236, 206, 251, 221, 230, 244, 154, 147,
|
|
16
|
-
189, 131, 249, 169, 102, 78, 3, 185,
|
|
17
|
-
153, 19, 89, 40, 24, 25, 139, 131,
|
|
18
|
-
93
|
|
19
|
-
]);
|
|
20
|
-
const SECRET = new Uint8Array([
|
|
21
|
-
166, 162, 203, 17, 2, 206, 110, 176,
|
|
22
|
-
18, 102, 230, 144, 90, 158, 25, 232,
|
|
23
|
-
43, 180, 176, 49, 189, 149, 3, 71,
|
|
24
|
-
243, 228, 223, 104, 125, 132, 58, 228
|
|
25
|
-
]
|
|
26
|
-
);
|
|
27
|
-
const PUBLICDERIVED = new Uint8Array([
|
|
28
|
-
3, 129, 53, 27, 27, 70, 210, 96,
|
|
29
|
-
43, 9, 146, 187, 93, 85, 49, 249,
|
|
30
|
-
193, 105, 107, 8, 18, 254, 178, 83,
|
|
31
|
-
75, 104, 132, 173, 196, 126, 46, 29,
|
|
32
|
-
139
|
|
33
|
-
]);
|
|
34
|
-
const SECRETDERIVED = new Uint8Array([
|
|
35
|
-
7, 13, 195, 17, 115, 0, 1, 25,
|
|
36
|
-
24, 226, 107, 2, 23, 105, 69, 204,
|
|
37
|
-
21, 195, 213, 72, 207, 73, 253, 132,
|
|
38
|
-
24, 217, 127, 147, 175, 105, 158, 70
|
|
39
|
-
]);
|
|
40
|
-
|
|
41
|
-
it('derives the right key pair from a mnemonic', (): void => {
|
|
42
|
-
const key = hdEthereum(mnemonicToLegacySeed(PHRASE, '', false, 64));
|
|
43
|
-
|
|
44
|
-
expect(key.publicKey).toEqual(PUBLIC);
|
|
45
|
-
expect(key.secretKey).toEqual(SECRET);
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
it('derives the right key pair from a mnemonic and a derivation path', (): void => {
|
|
49
|
-
const key = hdEthereum(mnemonicToLegacySeed(PHRASE, '', false, 64), derivationPath);
|
|
50
|
-
|
|
51
|
-
expect(key.publicKey).toEqual(PUBLICDERIVED);
|
|
52
|
-
expect(key.secretKey).toEqual(SECRETDERIVED);
|
|
53
|
-
});
|
|
54
|
-
});
|
package/src/hd/ethereum/index.ts
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util-crypto authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import type { Keypair } from '../../types.js';
|
|
5
|
-
|
|
6
|
-
import { bnToU8a, stringToU8a, u8aConcat } from '@pezkuwi/util';
|
|
7
|
-
|
|
8
|
-
import { BN_BE_32_OPTS } from '../../bn.js';
|
|
9
|
-
import { hmacShaAsU8a } from '../../hmac/index.js';
|
|
10
|
-
import { secp256k1PairFromSeed, secp256k1PrivateKeyTweakAdd } from '../../secp256k1/index.js';
|
|
11
|
-
import { HARDENED, hdValidatePath } from '../validatePath.js';
|
|
12
|
-
|
|
13
|
-
interface CodedKeypair extends Keypair {
|
|
14
|
-
chainCode: Uint8Array;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const MASTER_SECRET = stringToU8a('Bitcoin seed');
|
|
18
|
-
|
|
19
|
-
function createCoded (secretKey: Uint8Array, chainCode: Uint8Array): CodedKeypair {
|
|
20
|
-
return {
|
|
21
|
-
chainCode,
|
|
22
|
-
publicKey: secp256k1PairFromSeed(secretKey).publicKey,
|
|
23
|
-
secretKey
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
function deriveChild (hd: CodedKeypair, index: number): CodedKeypair {
|
|
28
|
-
const indexBuffer = bnToU8a(index, BN_BE_32_OPTS);
|
|
29
|
-
const data = index >= HARDENED
|
|
30
|
-
? u8aConcat(new Uint8Array(1), hd.secretKey, indexBuffer)
|
|
31
|
-
: u8aConcat(hd.publicKey, indexBuffer);
|
|
32
|
-
|
|
33
|
-
try {
|
|
34
|
-
const I = hmacShaAsU8a(hd.chainCode, data, 512);
|
|
35
|
-
|
|
36
|
-
return createCoded(
|
|
37
|
-
secp256k1PrivateKeyTweakAdd(hd.secretKey, I.slice(0, 32)),
|
|
38
|
-
I.slice(32)
|
|
39
|
-
);
|
|
40
|
-
} catch {
|
|
41
|
-
// In case parse256(IL) >= n or ki == 0, proceed with the next value for i
|
|
42
|
-
return deriveChild(hd, index + 1);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export function hdEthereum (seed: Uint8Array, path = ''): Keypair {
|
|
47
|
-
const I = hmacShaAsU8a(MASTER_SECRET, seed, 512);
|
|
48
|
-
let hd = createCoded(I.slice(0, 32), I.slice(32));
|
|
49
|
-
|
|
50
|
-
if (!path || path === 'm' || path === 'M' || path === "m'" || path === "M'") {
|
|
51
|
-
return hd;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
if (!hdValidatePath(path)) {
|
|
55
|
-
throw new Error('Invalid derivation path');
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
const parts = path.split('/').slice(1);
|
|
59
|
-
|
|
60
|
-
for (const p of parts) {
|
|
61
|
-
hd = deriveChild(hd, parseInt(p, 10) + (
|
|
62
|
-
(p.length > 1) && p.endsWith("'")
|
|
63
|
-
? HARDENED
|
|
64
|
-
: 0
|
|
65
|
-
));
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
return hd;
|
|
69
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util-crypto authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import { BN_EIGHT, bnToU8a, u8aConcat, u8aToBn } from '@pezkuwi/util';
|
|
5
|
-
|
|
6
|
-
import { BN_LE_32_OPTS, BN_LE_512_OPTS, BN_LE_OPTS } from '../../bn.js';
|
|
7
|
-
import { hmacShaAsU8a } from '../../hmac/index.js';
|
|
8
|
-
|
|
9
|
-
// performs hard-only derivation on the xprv
|
|
10
|
-
export function ledgerDerivePrivate (xprv: Uint8Array, index: number): Uint8Array {
|
|
11
|
-
const kl = xprv.subarray(0, 32);
|
|
12
|
-
const kr = xprv.subarray(32, 64);
|
|
13
|
-
const cc = xprv.subarray(64, 96);
|
|
14
|
-
const data = u8aConcat([0], kl, kr, bnToU8a(index, BN_LE_32_OPTS));
|
|
15
|
-
const z = hmacShaAsU8a(cc, data, 512);
|
|
16
|
-
|
|
17
|
-
data[0] = 0x01;
|
|
18
|
-
|
|
19
|
-
return u8aConcat(
|
|
20
|
-
bnToU8a(
|
|
21
|
-
u8aToBn(kl, BN_LE_OPTS).iadd(
|
|
22
|
-
u8aToBn(z.subarray(0, 28), BN_LE_OPTS).imul(BN_EIGHT)
|
|
23
|
-
),
|
|
24
|
-
BN_LE_512_OPTS
|
|
25
|
-
).subarray(0, 32),
|
|
26
|
-
bnToU8a(
|
|
27
|
-
u8aToBn(kr, BN_LE_OPTS).iadd(
|
|
28
|
-
u8aToBn(z.subarray(32, 64), BN_LE_OPTS)
|
|
29
|
-
),
|
|
30
|
-
BN_LE_512_OPTS
|
|
31
|
-
).subarray(0, 32),
|
|
32
|
-
hmacShaAsU8a(cc, data, 512).subarray(32, 64)
|
|
33
|
-
);
|
|
34
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util-crypto authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
-
|
|
6
|
-
import { u8aToHex } from '@pezkuwi/util';
|
|
7
|
-
|
|
8
|
-
import { hdLedger } from '../index.js';
|
|
9
|
-
|
|
10
|
-
const MNE_0 = 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about';
|
|
11
|
-
const MNE_1 = 'open jelly jeans corn ketchup supreme brief element armed lens vault weather original scissors rug priority vicious lesson raven spot gossip powder person volcano';
|
|
12
|
-
const MNE_P = `${MNE_1} testing`;
|
|
13
|
-
|
|
14
|
-
const TESTS = {
|
|
15
|
-
Kusama: {
|
|
16
|
-
slip44: 0x01b2,
|
|
17
|
-
tests: [
|
|
18
|
-
{
|
|
19
|
-
ed25519: '0x98cb4e14e0e08ea876f88d728545ea7572dc07dbbe69f1731c418fb827e69d41',
|
|
20
|
-
index: [0, 0],
|
|
21
|
-
mnemonic: MNE_0
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
ed25519: '0x70e9010e84c81095aaa5f63b1c5a6a66a1dcbec017a23c2f3b7a1b08fe5ea65a',
|
|
25
|
-
index: [0, 0],
|
|
26
|
-
mnemonic: MNE_1
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
ed25519: '0xf06730efb1e6ea59ac752a7c3620fade3909062fb88597856cc3af72045fa65a',
|
|
30
|
-
index: [5, 7],
|
|
31
|
-
mnemonic: MNE_1
|
|
32
|
-
}
|
|
33
|
-
]
|
|
34
|
-
},
|
|
35
|
-
Polkadot: {
|
|
36
|
-
slip44: 0x0162,
|
|
37
|
-
tests: [
|
|
38
|
-
{
|
|
39
|
-
ed25519: '0xe8c68348586d53e4e8d1a864b0e4e17c75e4eb06e0c63c1432bef2ba29e69d41',
|
|
40
|
-
index: [0, 0],
|
|
41
|
-
mnemonic: MNE_0
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
ed25519: '0x3890e8db837eba3f8f25215c753e1091062298ce671a51441e7ef89a7adc4f48',
|
|
45
|
-
index: [0, 0],
|
|
46
|
-
mnemonic: MNE_P
|
|
47
|
-
}
|
|
48
|
-
]
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
describe('ledgerDerive', (): void => {
|
|
53
|
-
Object.entries(TESTS).forEach(([network, { slip44, tests }]): void => {
|
|
54
|
-
tests.forEach(({ ed25519, index: [account, address], mnemonic }, index): void => {
|
|
55
|
-
it(`derives a known ed25519 seed for ${network} (${index})`, (): void => {
|
|
56
|
-
expect(u8aToHex(
|
|
57
|
-
hdLedger(mnemonic, `m/44'/${slip44}'/${account}'/0'/${address}'`)
|
|
58
|
-
.secretKey
|
|
59
|
-
.slice(0, 32)
|
|
60
|
-
)).toEqual(ed25519);
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
});
|
package/src/hd/ledger/index.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util-crypto authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import type { Keypair } from '../../types.js';
|
|
5
|
-
|
|
6
|
-
import { ed25519PairFromSeed } from '../../ed25519/index.js';
|
|
7
|
-
import { mnemonicValidate } from '../../mnemonic/index.js';
|
|
8
|
-
import { HARDENED, hdValidatePath } from '../validatePath.js';
|
|
9
|
-
import { ledgerDerivePrivate } from './derivePrivate.js';
|
|
10
|
-
import { ledgerMaster } from './master.js';
|
|
11
|
-
|
|
12
|
-
export function hdLedger (_mnemonic: string, path: string): Keypair {
|
|
13
|
-
const words = _mnemonic
|
|
14
|
-
.split(' ')
|
|
15
|
-
.map((s) => s.trim())
|
|
16
|
-
.filter((s) => s);
|
|
17
|
-
|
|
18
|
-
if (![12, 24, 25].includes(words.length)) {
|
|
19
|
-
throw new Error('Expected a mnemonic with 24 words (or 25 including a password)');
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const [mnemonic, password] = words.length === 25
|
|
23
|
-
? [words.slice(0, 24).join(' '), words[24]]
|
|
24
|
-
: [words.join(' '), ''];
|
|
25
|
-
|
|
26
|
-
if (!mnemonicValidate(mnemonic)) {
|
|
27
|
-
throw new Error('Invalid mnemonic passed to ledger derivation');
|
|
28
|
-
} else if (!hdValidatePath(path)) {
|
|
29
|
-
throw new Error('Invalid derivation path');
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
const parts = path.split('/').slice(1);
|
|
33
|
-
let seed = ledgerMaster(mnemonic, password);
|
|
34
|
-
|
|
35
|
-
for (const p of parts) {
|
|
36
|
-
const n = parseInt(p.replace(/'$/, ''), 10);
|
|
37
|
-
|
|
38
|
-
seed = ledgerDerivePrivate(seed, (n < HARDENED) ? (n + HARDENED) : n);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
return ed25519PairFromSeed(seed.slice(0, 32));
|
|
42
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util-crypto authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
-
|
|
6
|
-
import { u8aToHex } from '@pezkuwi/util';
|
|
7
|
-
|
|
8
|
-
import { ledgerMaster } from './master.js';
|
|
9
|
-
|
|
10
|
-
const MNEMONIC = 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about';
|
|
11
|
-
const XPRV = '0x402b03cd9c8bed9ba9f9bd6cd9c315ce9fcc59c7c25d37c85a36096617e69d418e35cb4a3b737afd007f0688618f21a8831643c0e6c77fc33c06026d2a0fc93832596435e70647d7d98ef102a32ea40319ca8fb6c851d7346d3bd8f9d1492658';
|
|
12
|
-
|
|
13
|
-
describe('ledgerDerive', (): void => {
|
|
14
|
-
it('derives a known master xprv', (): void => {
|
|
15
|
-
expect(u8aToHex(
|
|
16
|
-
ledgerMaster(MNEMONIC)
|
|
17
|
-
)).toEqual(XPRV);
|
|
18
|
-
});
|
|
19
|
-
});
|
package/src/hd/ledger/master.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util-crypto authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import { u8aConcat } from '@pezkuwi/util';
|
|
5
|
-
|
|
6
|
-
import { hmacShaAsU8a } from '../../hmac/index.js';
|
|
7
|
-
import { mnemonicToSeedSync } from '../../mnemonic/bip39.js';
|
|
8
|
-
|
|
9
|
-
const ED25519_CRYPTO = 'ed25519 seed';
|
|
10
|
-
|
|
11
|
-
// gets an xprv from a mnemonic
|
|
12
|
-
export function ledgerMaster (mnemonic: string, password?: string): Uint8Array {
|
|
13
|
-
const seed = mnemonicToSeedSync(mnemonic, password);
|
|
14
|
-
const chainCode = hmacShaAsU8a(ED25519_CRYPTO, new Uint8Array([1, ...seed]), 256);
|
|
15
|
-
let priv;
|
|
16
|
-
|
|
17
|
-
while (!priv || (priv[31] & 0b0010_0000)) {
|
|
18
|
-
priv = hmacShaAsU8a(ED25519_CRYPTO, priv || seed, 512);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
priv[0] &= 0b1111_1000;
|
|
22
|
-
priv[31] &= 0b0111_1111;
|
|
23
|
-
priv[31] |= 0b0100_0000;
|
|
24
|
-
|
|
25
|
-
return u8aConcat(priv, chainCode);
|
|
26
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util-crypto authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
-
|
|
6
|
-
import { hdValidatePath } from './index.js';
|
|
7
|
-
|
|
8
|
-
const VECTORS: [string, boolean][] = [
|
|
9
|
-
["m/44'/60'/0'/0/0", true],
|
|
10
|
-
['m/0', true],
|
|
11
|
-
["m/123'", true],
|
|
12
|
-
["n/44'/60'/0'/0/0", false],
|
|
13
|
-
['m', false],
|
|
14
|
-
['m/', false],
|
|
15
|
-
["m/xyz'", false],
|
|
16
|
-
['m/123x', false],
|
|
17
|
-
['m/123"', false],
|
|
18
|
-
["m/123''", false],
|
|
19
|
-
["m/123'0'", false],
|
|
20
|
-
[`m/${0x80000000}`, false],
|
|
21
|
-
['m/-1', false]
|
|
22
|
-
];
|
|
23
|
-
|
|
24
|
-
describe('hdValidatePath', (): void => {
|
|
25
|
-
VECTORS.forEach(([path, result]): void => {
|
|
26
|
-
it(`validates ${path} as ${result.toString()}`, (): void => {
|
|
27
|
-
expect(hdValidatePath(path)).toEqual(result);
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
});
|
package/src/hd/validatePath.ts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util-crypto authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
export const HARDENED = 0x80000000;
|
|
5
|
-
|
|
6
|
-
export function hdValidatePath (path: string): boolean {
|
|
7
|
-
if (!path.startsWith('m/')) {
|
|
8
|
-
return false;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
const parts = path.split('/').slice(1);
|
|
12
|
-
|
|
13
|
-
for (const p of parts) {
|
|
14
|
-
const n = /^\d+'?$/.test(p)
|
|
15
|
-
? parseInt(p.replace(/'$/, ''), 10)
|
|
16
|
-
: Number.NaN;
|
|
17
|
-
|
|
18
|
-
if (isNaN(n) || (n >= HARDENED) || (n < 0)) {
|
|
19
|
-
return false;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
return true;
|
|
24
|
-
}
|
package/src/helpers.ts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util-crypto authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import type { HexString } from '@pezkuwi/util/types';
|
|
5
|
-
|
|
6
|
-
import { hasBigInt, u8aToHex, u8aToU8a } from '@pezkuwi/util';
|
|
7
|
-
import { isReady } from '@pezkuwi/wasm-crypto';
|
|
8
|
-
|
|
9
|
-
// re-export so TS *.d.ts generation is correct
|
|
10
|
-
export type { HexString } from '@pezkuwi/util/types';
|
|
11
|
-
|
|
12
|
-
interface DualHash {
|
|
13
|
-
256: (u8a: Uint8Array) => Uint8Array;
|
|
14
|
-
512: (u8a: Uint8Array) => Uint8Array;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/** @internal */
|
|
18
|
-
export function createAsHex <T extends (...args: never[]) => Uint8Array> (fn: T): (...args: Parameters<T>) => HexString {
|
|
19
|
-
return (...args: Parameters<T>): HexString =>
|
|
20
|
-
u8aToHex(fn(...args));
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/** @internal */
|
|
24
|
-
export function createBitHasher (bitLength: 256 | 512, fn: (data: string | Uint8Array, bitLength: 256 | 512, onlyJs?: boolean) => Uint8Array): (data: string | Uint8Array, onlyJs?: boolean) => Uint8Array {
|
|
25
|
-
return (data: string | Uint8Array, onlyJs?: boolean): Uint8Array =>
|
|
26
|
-
fn(data, bitLength, onlyJs);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/** @internal */
|
|
30
|
-
export function createDualHasher (wa: DualHash, js: DualHash): (value: string | Uint8Array, bitLength?: 256 | 512, onlyJs?: boolean) => Uint8Array {
|
|
31
|
-
return (value: string | Uint8Array, bitLength: 256 | 512 = 256, onlyJs?: boolean): Uint8Array => {
|
|
32
|
-
const u8a = u8aToU8a(value);
|
|
33
|
-
|
|
34
|
-
return !hasBigInt || (!onlyJs && isReady())
|
|
35
|
-
? wa[bitLength](u8a)
|
|
36
|
-
: js[bitLength](u8a);
|
|
37
|
-
};
|
|
38
|
-
}
|
package/src/hmac/index.ts
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util-crypto authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
-
|
|
6
|
-
import { hexToU8a, stringToU8a } from '@pezkuwi/util';
|
|
7
|
-
import { waitReady } from '@pezkuwi/wasm-crypto';
|
|
8
|
-
|
|
9
|
-
import { perfWasm } from '../test/index.js';
|
|
10
|
-
import { hmacShaAsU8a } from './index.js';
|
|
11
|
-
|
|
12
|
-
describe('hmacShaAsU8a', (): void => {
|
|
13
|
-
beforeEach(async (): Promise<void> => {
|
|
14
|
-
await waitReady();
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
const key = stringToU8a('secret');
|
|
18
|
-
const data = stringToU8a('some message');
|
|
19
|
-
const output = {
|
|
20
|
-
256: hexToU8a(
|
|
21
|
-
'0xf28a70b41263840e5c059a0a733336e0957efba87902aa8cca11441d4b0c96d7'
|
|
22
|
-
),
|
|
23
|
-
512: hexToU8a(
|
|
24
|
-
'0x295832e97ed77be75a9fa98029497e4a722c4b9a2f21b39d34f1befa931a39ec520fd24711d6f5c03501384ea66b83066a01a82c57a0460f8cd1f471fcce5841'
|
|
25
|
-
)
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
for (const bitLength of [256, 512] as const) {
|
|
29
|
-
describe(`bitLength=${bitLength}`, (): void => {
|
|
30
|
-
for (const onlyJs of [false, true]) {
|
|
31
|
-
describe(`onlyJs=${(onlyJs && 'true') || 'false'}`, (): void => {
|
|
32
|
-
it('returns an hex representation (string)', (): void => {
|
|
33
|
-
expect(
|
|
34
|
-
hmacShaAsU8a(key, data, bitLength, onlyJs)
|
|
35
|
-
).toEqual(output[bitLength]);
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
perfWasm(`hmacShaAsU8a, bitLength=${bitLength}`, 16000, (input, onlyJs) =>
|
|
42
|
-
hmacShaAsU8a(input, input, bitLength, onlyJs)
|
|
43
|
-
);
|
|
44
|
-
}
|
|
45
|
-
});
|
package/src/index.ts
DELETED
package/src/json/constants.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util-crypto authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import type { EncryptedJsonEncoding, EncryptedJsonVersion } from './types.js';
|
|
5
|
-
|
|
6
|
-
export const ENCODING: EncryptedJsonEncoding[] = ['scrypt', 'xsalsa20-poly1305'];
|
|
7
|
-
export const ENCODING_NONE: EncryptedJsonEncoding[] = ['none'];
|
|
8
|
-
export const ENCODING_VERSION: EncryptedJsonVersion = '3';
|
|
9
|
-
|
|
10
|
-
export const NONCE_LENGTH = 24;
|
|
11
|
-
export const SCRYPT_LENGTH = 32 + (3 * 4);
|
package/src/json/decrypt.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util-crypto authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import type { EncryptedJson } from './types.js';
|
|
5
|
-
|
|
6
|
-
import { hexToU8a, isHex } from '@pezkuwi/util';
|
|
7
|
-
|
|
8
|
-
import { base64Decode } from '../base64/index.js';
|
|
9
|
-
import { jsonDecryptData } from './decryptData.js';
|
|
10
|
-
|
|
11
|
-
export function jsonDecrypt ({ encoded, encoding }: EncryptedJson, passphrase?: string | null): Uint8Array {
|
|
12
|
-
if (!encoded) {
|
|
13
|
-
throw new Error('No encrypted data available to decode');
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
return jsonDecryptData(
|
|
17
|
-
isHex(encoded)
|
|
18
|
-
? hexToU8a(encoded)
|
|
19
|
-
: base64Decode(encoded),
|
|
20
|
-
passphrase,
|
|
21
|
-
Array.isArray(encoding.type)
|
|
22
|
-
? encoding.type
|
|
23
|
-
: [encoding.type]
|
|
24
|
-
);
|
|
25
|
-
}
|
package/src/json/decryptData.ts
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util-crypto authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import type { EncryptedJsonEncoding } from './types.js';
|
|
5
|
-
|
|
6
|
-
import { stringToU8a, u8aFixLength } from '@pezkuwi/util';
|
|
7
|
-
|
|
8
|
-
import { naclDecrypt } from '../nacl/index.js';
|
|
9
|
-
import { scryptEncode, scryptFromU8a } from '../scrypt/index.js';
|
|
10
|
-
import { ENCODING, NONCE_LENGTH, SCRYPT_LENGTH } from './constants.js';
|
|
11
|
-
|
|
12
|
-
export function jsonDecryptData (encrypted?: Uint8Array | null, passphrase?: string | null, encType: EncryptedJsonEncoding[] = ENCODING): Uint8Array {
|
|
13
|
-
if (!encrypted) {
|
|
14
|
-
throw new Error('No encrypted data available to decode');
|
|
15
|
-
} else if (encType.includes('xsalsa20-poly1305') && !passphrase) {
|
|
16
|
-
throw new Error('Password required to decode encrypted data');
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
let encoded: Uint8Array | null = encrypted;
|
|
20
|
-
|
|
21
|
-
if (passphrase) {
|
|
22
|
-
let password: Uint8Array;
|
|
23
|
-
|
|
24
|
-
if (encType.includes('scrypt')) {
|
|
25
|
-
const { params, salt } = scryptFromU8a(encrypted);
|
|
26
|
-
|
|
27
|
-
password = scryptEncode(passphrase, salt, params).password;
|
|
28
|
-
encrypted = encrypted.subarray(SCRYPT_LENGTH);
|
|
29
|
-
} else {
|
|
30
|
-
password = stringToU8a(passphrase);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
encoded = naclDecrypt(
|
|
34
|
-
encrypted.subarray(NONCE_LENGTH),
|
|
35
|
-
encrypted.subarray(0, NONCE_LENGTH),
|
|
36
|
-
u8aFixLength(password, 256, true)
|
|
37
|
-
);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
if (!encoded) {
|
|
41
|
-
throw new Error('Unable to decode using the supplied passphrase');
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
return encoded;
|
|
45
|
-
}
|
package/src/json/encrypt.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util-crypto authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import type { EncryptedJson } from './types.js';
|
|
5
|
-
|
|
6
|
-
import { u8aConcat } from '@pezkuwi/util';
|
|
7
|
-
|
|
8
|
-
import { naclEncrypt } from '../nacl/index.js';
|
|
9
|
-
import { scryptEncode, scryptToU8a } from '../scrypt/index.js';
|
|
10
|
-
import { jsonEncryptFormat } from './encryptFormat.js';
|
|
11
|
-
|
|
12
|
-
export function jsonEncrypt (data: Uint8Array, contentType: string[], passphrase?: string | null): EncryptedJson {
|
|
13
|
-
let isEncrypted = false;
|
|
14
|
-
let encoded = data;
|
|
15
|
-
|
|
16
|
-
if (passphrase) {
|
|
17
|
-
const { params, password, salt } = scryptEncode(passphrase);
|
|
18
|
-
const { encrypted, nonce } = naclEncrypt(encoded, password.subarray(0, 32));
|
|
19
|
-
|
|
20
|
-
isEncrypted = true;
|
|
21
|
-
encoded = u8aConcat(scryptToU8a(salt, params), nonce, encrypted);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
return jsonEncryptFormat(encoded, contentType, isEncrypted);
|
|
25
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util-crypto authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import type { EncryptedJson } from './types.js';
|
|
5
|
-
|
|
6
|
-
import { base64Encode } from '../base64/index.js';
|
|
7
|
-
import { ENCODING, ENCODING_NONE, ENCODING_VERSION } from './constants.js';
|
|
8
|
-
|
|
9
|
-
export function jsonEncryptFormat (encoded: Uint8Array, contentType: string[], isEncrypted: boolean): EncryptedJson {
|
|
10
|
-
return {
|
|
11
|
-
encoded: base64Encode(encoded),
|
|
12
|
-
encoding: {
|
|
13
|
-
content: contentType,
|
|
14
|
-
type: isEncrypted
|
|
15
|
-
? ENCODING
|
|
16
|
-
: ENCODING_NONE,
|
|
17
|
-
version: ENCODING_VERSION
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
}
|