@pezkuwi/util-crypto 14.0.10 → 14.0.11
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/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/address/eq.js +19 -0
- package/address/evmToAddress.d.ts +7 -0
- package/address/evmToAddress.js +14 -0
- package/address/index.d.ts +16 -0
- 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/base32/bs32.js +40 -0
- package/base32/helpers.d.ts +25 -0
- package/base32/helpers.js +61 -0
- package/base32/index.d.ts +4 -0
- package/base32/index.js +4 -0
- package/base58/bs58.d.ts +26 -0
- package/base58/bs58.js +34 -0
- package/base58/index.d.ts +4 -0
- package/base58/index.js +4 -0
- package/base64/bs64.d.ts +26 -0
- package/base64/bs64.js +34 -0
- package/base64/index.d.ts +6 -0
- 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/blake2/asU8a.js +32 -0
- package/blake2/index.d.ts +4 -0
- package/blake2/index.js +4 -0
- package/bn.d.ts +30 -0
- package/bn.js +8 -0
- package/bundle-pezkuwi-util-crypto.js +8251 -0
- package/bundle.d.ts +26 -0
- 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/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/cjs/ed25519/index.d.ts +10 -0
- 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/cjs/ed25519/pair/fromSecret.js +26 -0
- 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/cjs/ethereum/index.d.ts +3 -0
- 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/cjs/hd/index.d.ts +3 -0
- 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/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/cjs/json/index.d.ts +4 -0
- 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/cjs/keccak/index.d.ts +4 -0
- 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/cjs/key/index.d.ts +9 -0
- 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/cjs/mnemonic/index.d.ts +8 -0
- 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/cjs/mnemonic/wordlists/index.d.ts +8 -0
- 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/cjs/nacl/index.d.ts +5 -0
- 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/cjs/random/index.d.ts +5 -0
- 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/cjs/scrypt/index.d.ts +3 -0
- 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/cjs/secp256k1/index.d.ts +7 -0
- 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/cjs/sha/index.d.ts +4 -0
- 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/cjs/sr25519/index.d.ts +9 -0
- 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/xxhash/asU8a.d.ts +20 -0
- package/cjs/xxhash/asU8a.js +39 -0
- package/cjs/xxhash/index.d.ts +4 -0
- 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/ed25519/pair/fromRandom.js +19 -0
- package/ed25519/pair/fromSecret.d.ts +16 -0
- package/ed25519/pair/fromSecret.js +23 -0
- package/ed25519/pair/fromSeed.d.ts +16 -0
- package/ed25519/pair/fromSeed.js +31 -0
- package/ed25519/pair/fromString.d.ts +16 -0
- package/ed25519/pair/fromString.js +20 -0
- 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/hmac/shaAsU8a.js +36 -0
- package/index.d.ts +2 -0
- package/index.js +2 -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/keccak/asU8a.js +33 -0
- 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/key/hdkdEcdsa.js +4 -0
- package/key/hdkdEd25519.d.ts +1 -0
- package/key/hdkdEd25519.js +3 -0
- 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/mnemonic/generate.js +20 -0
- 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/mnemonic/toLegacySeed.js +34 -0
- package/mnemonic/toMiniSecret.d.ts +1 -0
- package/mnemonic/toMiniSecret.js +17 -0
- package/mnemonic/validate.d.ts +14 -0
- package/mnemonic/validate.js +21 -0
- package/mnemonic/wordlists/en.d.ts +2 -0
- package/mnemonic/wordlists/en.js +1 -0
- package/mnemonic/wordlists/es.d.ts +2 -0
- package/mnemonic/wordlists/es.js +1 -0
- package/mnemonic/wordlists/fr.d.ts +2 -0
- package/mnemonic/wordlists/fr.js +1 -0
- package/mnemonic/wordlists/index.d.ts +8 -0
- package/mnemonic/wordlists/index.js +8 -0
- package/mnemonic/wordlists/it.d.ts +2 -0
- package/mnemonic/wordlists/it.js +1 -0
- package/mnemonic/wordlists/jp.d.ts +2 -0
- package/mnemonic/wordlists/jp.js +1 -0
- package/mnemonic/wordlists/ko.d.ts +2 -0
- package/mnemonic/wordlists/ko.js +1 -0
- package/mnemonic/wordlists/zh-s.d.ts +2 -0
- package/mnemonic/wordlists/zh-s.js +1 -0
- package/mnemonic/wordlists/zh-t.d.ts +2 -0
- package/mnemonic/wordlists/zh-t.js +1 -0
- package/nacl/decrypt.d.ts +15 -0
- package/nacl/decrypt.js +18 -0
- package/nacl/encrypt.d.ts +20 -0
- package/nacl/encrypt.js +22 -0
- 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/packageDetect.js +6 -0
- 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/random/asNumber.js +20 -0
- package/random/asU8a.d.ts +20 -0
- package/random/asU8a.js +24 -0
- 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/sha/asU8a.js +19 -0
- 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/sr25519/deriveHard.js +3 -0
- package/sr25519/derivePublic.d.ts +1 -0
- package/sr25519/derivePublic.js +12 -0
- package/sr25519/deriveSoft.d.ts +1 -0
- package/sr25519/deriveSoft.js +3 -0
- 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/xxhash/asU8a.d.ts +20 -0
- package/xxhash/asU8a.js +35 -0
- 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
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Keypair } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* @name ed25519Sign
|
|
4
|
+
* @summary Signs a message using the supplied secretKey
|
|
5
|
+
* @description
|
|
6
|
+
* Returns message signature of `message`, using the `secretKey`.
|
|
7
|
+
* @example
|
|
8
|
+
* <BR>
|
|
9
|
+
*
|
|
10
|
+
* ```javascript
|
|
11
|
+
* import { ed25519Sign } from '@pezkuwi/util-crypto';
|
|
12
|
+
*
|
|
13
|
+
* ed25519Sign([...], [...]); // => [...]
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export declare function ed25519Sign(message: string | Uint8Array, { publicKey, secretKey }: Partial<Keypair>, onlyJs?: boolean): Uint8Array;
|
package/ed25519/sign.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ed25519 } from '@noble/curves/ed25519';
|
|
2
|
+
import { hasBigInt, u8aToU8a } from '@pezkuwi/util';
|
|
3
|
+
import { ed25519Sign as wasmSign, isReady } from '@pezkuwi/wasm-crypto';
|
|
4
|
+
/**
|
|
5
|
+
* @name ed25519Sign
|
|
6
|
+
* @summary Signs a message using the supplied secretKey
|
|
7
|
+
* @description
|
|
8
|
+
* Returns message signature of `message`, using the `secretKey`.
|
|
9
|
+
* @example
|
|
10
|
+
* <BR>
|
|
11
|
+
*
|
|
12
|
+
* ```javascript
|
|
13
|
+
* import { ed25519Sign } from '@pezkuwi/util-crypto';
|
|
14
|
+
*
|
|
15
|
+
* ed25519Sign([...], [...]); // => [...]
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export function ed25519Sign(message, { publicKey, secretKey }, onlyJs) {
|
|
19
|
+
if (!secretKey) {
|
|
20
|
+
throw new Error('Expected a valid secretKey');
|
|
21
|
+
}
|
|
22
|
+
else if (!publicKey) {
|
|
23
|
+
throw new Error('Expected a valid publicKey');
|
|
24
|
+
}
|
|
25
|
+
const messageU8a = u8aToU8a(message);
|
|
26
|
+
const privateU8a = secretKey.subarray(0, 32);
|
|
27
|
+
return !hasBigInt || (!onlyJs && isReady())
|
|
28
|
+
? wasmSign(publicKey, privateU8a, messageU8a)
|
|
29
|
+
: ed25519.sign(messageU8a, privateU8a);
|
|
30
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @name ed25519Sign
|
|
3
|
+
* @summary Verifies the signature on the supplied message.
|
|
4
|
+
* @description
|
|
5
|
+
* Verifies the `signature` on `message` with the supplied `publicKey`. Returns `true` on sucess, `false` otherwise.
|
|
6
|
+
* @example
|
|
7
|
+
* <BR>
|
|
8
|
+
*
|
|
9
|
+
* ```javascript
|
|
10
|
+
* import { ed25519Verify } from '@pezkuwi/util-crypto';
|
|
11
|
+
*
|
|
12
|
+
* ed25519Verify([...], [...], [...]); // => true/false
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export declare function ed25519Verify(message: string | Uint8Array, signature: string | Uint8Array, publicKey: string | Uint8Array, onlyJs?: boolean): boolean;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ed25519 } from '@noble/curves/ed25519';
|
|
2
|
+
import { hasBigInt, u8aToU8a } from '@pezkuwi/util';
|
|
3
|
+
import { ed25519Verify as wasmVerify, isReady } from '@pezkuwi/wasm-crypto';
|
|
4
|
+
/**
|
|
5
|
+
* @name ed25519Sign
|
|
6
|
+
* @summary Verifies the signature on the supplied message.
|
|
7
|
+
* @description
|
|
8
|
+
* Verifies the `signature` on `message` with the supplied `publicKey`. Returns `true` on sucess, `false` otherwise.
|
|
9
|
+
* @example
|
|
10
|
+
* <BR>
|
|
11
|
+
*
|
|
12
|
+
* ```javascript
|
|
13
|
+
* import { ed25519Verify } from '@pezkuwi/util-crypto';
|
|
14
|
+
*
|
|
15
|
+
* ed25519Verify([...], [...], [...]); // => true/false
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export function ed25519Verify(message, signature, publicKey, onlyJs) {
|
|
19
|
+
const messageU8a = u8aToU8a(message);
|
|
20
|
+
const publicKeyU8a = u8aToU8a(publicKey);
|
|
21
|
+
const signatureU8a = u8aToU8a(signature);
|
|
22
|
+
if (publicKeyU8a.length !== 32) {
|
|
23
|
+
throw new Error(`Invalid publicKey, received ${publicKeyU8a.length}, expected 32`);
|
|
24
|
+
}
|
|
25
|
+
else if (signatureU8a.length !== 64) {
|
|
26
|
+
throw new Error(`Invalid signature, received ${signatureU8a.length} bytes, expected 64`);
|
|
27
|
+
}
|
|
28
|
+
try {
|
|
29
|
+
return !hasBigInt || (!onlyJs && isReady())
|
|
30
|
+
? wasmVerify(signatureU8a, messageU8a, publicKeyU8a)
|
|
31
|
+
: ed25519.verify(signatureU8a, messageU8a, publicKeyU8a);
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { u8aToHex, u8aToU8a } from '@pezkuwi/util';
|
|
2
|
+
import { keccakAsU8a } from '../keccak/index.js';
|
|
3
|
+
import { secp256k1Expand } from '../secp256k1/index.js';
|
|
4
|
+
function getH160(u8a) {
|
|
5
|
+
if ([33, 65].includes(u8a.length)) {
|
|
6
|
+
u8a = keccakAsU8a(secp256k1Expand(u8a));
|
|
7
|
+
}
|
|
8
|
+
return u8a.slice(-20);
|
|
9
|
+
}
|
|
10
|
+
export function ethereumEncode(addressOrPublic) {
|
|
11
|
+
if (!addressOrPublic) {
|
|
12
|
+
return '0x';
|
|
13
|
+
}
|
|
14
|
+
const u8aAddress = u8aToU8a(addressOrPublic);
|
|
15
|
+
if (![20, 32, 33, 65].includes(u8aAddress.length)) {
|
|
16
|
+
throw new Error(`Invalid address or publicKey provided, received ${u8aAddress.length} bytes input`);
|
|
17
|
+
}
|
|
18
|
+
const address = u8aToHex(getH160(u8aAddress), -1, false);
|
|
19
|
+
const hash = u8aToHex(keccakAsU8a(address), -1, false);
|
|
20
|
+
let result = '';
|
|
21
|
+
for (let i = 0; i < 40; i++) {
|
|
22
|
+
result = `${result}${parseInt(hash[i], 16) > 7 ? address[i].toUpperCase() : address[i]}`;
|
|
23
|
+
}
|
|
24
|
+
return `0x${result}`;
|
|
25
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isEthereumAddress(address?: string): boolean;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { isHex } from '@pezkuwi/util';
|
|
2
|
+
import { isEthereumChecksum } from './isChecksum.js';
|
|
3
|
+
export function isEthereumAddress(address) {
|
|
4
|
+
if (!address || address.length !== 42 || !isHex(address)) {
|
|
5
|
+
return false;
|
|
6
|
+
}
|
|
7
|
+
else if (/^(0x)?[0-9a-f]{40}$/.test(address) || /^(0x)?[0-9A-F]{40}$/.test(address)) {
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
return isEthereumChecksum(address);
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isEthereumChecksum(_address: string): boolean;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { u8aToHex } from '@pezkuwi/util';
|
|
2
|
+
import { keccakAsU8a } from '../keccak/index.js';
|
|
3
|
+
function isInvalidChar(char, byte) {
|
|
4
|
+
return char !== (byte > 7
|
|
5
|
+
? char.toUpperCase()
|
|
6
|
+
: char.toLowerCase());
|
|
7
|
+
}
|
|
8
|
+
export function isEthereumChecksum(_address) {
|
|
9
|
+
const address = _address.replace('0x', '');
|
|
10
|
+
const hash = u8aToHex(keccakAsU8a(address.toLowerCase()), -1, false);
|
|
11
|
+
for (let i = 0; i < 40; i++) {
|
|
12
|
+
if (isInvalidChar(address[i], parseInt(hash[i], 16))) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { bnToU8a, stringToU8a, u8aConcat } from '@pezkuwi/util';
|
|
2
|
+
import { BN_BE_32_OPTS } from '../../bn.js';
|
|
3
|
+
import { hmacShaAsU8a } from '../../hmac/index.js';
|
|
4
|
+
import { secp256k1PairFromSeed, secp256k1PrivateKeyTweakAdd } from '../../secp256k1/index.js';
|
|
5
|
+
import { HARDENED, hdValidatePath } from '../validatePath.js';
|
|
6
|
+
const MASTER_SECRET = stringToU8a('Bitcoin seed');
|
|
7
|
+
function createCoded(secretKey, chainCode) {
|
|
8
|
+
return {
|
|
9
|
+
chainCode,
|
|
10
|
+
publicKey: secp256k1PairFromSeed(secretKey).publicKey,
|
|
11
|
+
secretKey
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function deriveChild(hd, index) {
|
|
15
|
+
const indexBuffer = bnToU8a(index, BN_BE_32_OPTS);
|
|
16
|
+
const data = index >= HARDENED
|
|
17
|
+
? u8aConcat(new Uint8Array(1), hd.secretKey, indexBuffer)
|
|
18
|
+
: u8aConcat(hd.publicKey, indexBuffer);
|
|
19
|
+
try {
|
|
20
|
+
const I = hmacShaAsU8a(hd.chainCode, data, 512);
|
|
21
|
+
return createCoded(secp256k1PrivateKeyTweakAdd(hd.secretKey, I.slice(0, 32)), I.slice(32));
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
// In case parse256(IL) >= n or ki == 0, proceed with the next value for i
|
|
25
|
+
return deriveChild(hd, index + 1);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export function hdEthereum(seed, path = '') {
|
|
29
|
+
const I = hmacShaAsU8a(MASTER_SECRET, seed, 512);
|
|
30
|
+
let hd = createCoded(I.slice(0, 32), I.slice(32));
|
|
31
|
+
if (!path || path === 'm' || path === 'M' || path === "m'" || path === "M'") {
|
|
32
|
+
return hd;
|
|
33
|
+
}
|
|
34
|
+
if (!hdValidatePath(path)) {
|
|
35
|
+
throw new Error('Invalid derivation path');
|
|
36
|
+
}
|
|
37
|
+
const parts = path.split('/').slice(1);
|
|
38
|
+
for (const p of parts) {
|
|
39
|
+
hd = deriveChild(hd, parseInt(p, 10) + ((p.length > 1) && p.endsWith("'")
|
|
40
|
+
? HARDENED
|
|
41
|
+
: 0));
|
|
42
|
+
}
|
|
43
|
+
return hd;
|
|
44
|
+
}
|
package/hd/index.d.ts
ADDED
package/hd/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function ledgerDerivePrivate(xprv: Uint8Array, index: number): Uint8Array;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BN_EIGHT, bnToU8a, u8aConcat, u8aToBn } from '@pezkuwi/util';
|
|
2
|
+
import { BN_LE_32_OPTS, BN_LE_512_OPTS, BN_LE_OPTS } from '../../bn.js';
|
|
3
|
+
import { hmacShaAsU8a } from '../../hmac/index.js';
|
|
4
|
+
export function ledgerDerivePrivate(xprv, index) {
|
|
5
|
+
const kl = xprv.subarray(0, 32);
|
|
6
|
+
const kr = xprv.subarray(32, 64);
|
|
7
|
+
const cc = xprv.subarray(64, 96);
|
|
8
|
+
const data = u8aConcat([0], kl, kr, bnToU8a(index, BN_LE_32_OPTS));
|
|
9
|
+
const z = hmacShaAsU8a(cc, data, 512);
|
|
10
|
+
data[0] = 0x01;
|
|
11
|
+
return u8aConcat(bnToU8a(u8aToBn(kl, BN_LE_OPTS).iadd(u8aToBn(z.subarray(0, 28), BN_LE_OPTS).imul(BN_EIGHT)), BN_LE_512_OPTS).subarray(0, 32), bnToU8a(u8aToBn(kr, BN_LE_OPTS).iadd(u8aToBn(z.subarray(32, 64), BN_LE_OPTS)), BN_LE_512_OPTS).subarray(0, 32), hmacShaAsU8a(cc, data, 512).subarray(32, 64));
|
|
12
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ed25519PairFromSeed } from '../../ed25519/index.js';
|
|
2
|
+
import { mnemonicValidate } from '../../mnemonic/index.js';
|
|
3
|
+
import { HARDENED, hdValidatePath } from '../validatePath.js';
|
|
4
|
+
import { ledgerDerivePrivate } from './derivePrivate.js';
|
|
5
|
+
import { ledgerMaster } from './master.js';
|
|
6
|
+
export function hdLedger(_mnemonic, path) {
|
|
7
|
+
const words = _mnemonic
|
|
8
|
+
.split(' ')
|
|
9
|
+
.map((s) => s.trim())
|
|
10
|
+
.filter((s) => s);
|
|
11
|
+
if (![12, 24, 25].includes(words.length)) {
|
|
12
|
+
throw new Error('Expected a mnemonic with 24 words (or 25 including a password)');
|
|
13
|
+
}
|
|
14
|
+
const [mnemonic, password] = words.length === 25
|
|
15
|
+
? [words.slice(0, 24).join(' '), words[24]]
|
|
16
|
+
: [words.join(' '), ''];
|
|
17
|
+
if (!mnemonicValidate(mnemonic)) {
|
|
18
|
+
throw new Error('Invalid mnemonic passed to ledger derivation');
|
|
19
|
+
}
|
|
20
|
+
else if (!hdValidatePath(path)) {
|
|
21
|
+
throw new Error('Invalid derivation path');
|
|
22
|
+
}
|
|
23
|
+
const parts = path.split('/').slice(1);
|
|
24
|
+
let seed = ledgerMaster(mnemonic, password);
|
|
25
|
+
for (const p of parts) {
|
|
26
|
+
const n = parseInt(p.replace(/'$/, ''), 10);
|
|
27
|
+
seed = ledgerDerivePrivate(seed, (n < HARDENED) ? (n + HARDENED) : n);
|
|
28
|
+
}
|
|
29
|
+
return ed25519PairFromSeed(seed.slice(0, 32));
|
|
30
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function ledgerMaster(mnemonic: string, password?: string): Uint8Array;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { u8aConcat } from '@pezkuwi/util';
|
|
2
|
+
import { hmacShaAsU8a } from '../../hmac/index.js';
|
|
3
|
+
import { mnemonicToSeedSync } from '../../mnemonic/bip39.js';
|
|
4
|
+
const ED25519_CRYPTO = 'ed25519 seed';
|
|
5
|
+
export function ledgerMaster(mnemonic, password) {
|
|
6
|
+
const seed = mnemonicToSeedSync(mnemonic, password);
|
|
7
|
+
const chainCode = hmacShaAsU8a(ED25519_CRYPTO, new Uint8Array([1, ...seed]), 256);
|
|
8
|
+
let priv;
|
|
9
|
+
while (!priv || (priv[31] & 0b0010_0000)) {
|
|
10
|
+
priv = hmacShaAsU8a(ED25519_CRYPTO, priv || seed, 512);
|
|
11
|
+
}
|
|
12
|
+
priv[0] &= 0b1111_1000;
|
|
13
|
+
priv[31] &= 0b0111_1111;
|
|
14
|
+
priv[31] |= 0b0100_0000;
|
|
15
|
+
return u8aConcat(priv, chainCode);
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export const HARDENED = 0x80000000;
|
|
2
|
+
export function hdValidatePath(path) {
|
|
3
|
+
if (!path.startsWith('m/')) {
|
|
4
|
+
return false;
|
|
5
|
+
}
|
|
6
|
+
const parts = path.split('/').slice(1);
|
|
7
|
+
for (const p of parts) {
|
|
8
|
+
const n = /^\d+'?$/.test(p)
|
|
9
|
+
? parseInt(p.replace(/'$/, ''), 10)
|
|
10
|
+
: Number.NaN;
|
|
11
|
+
if (isNaN(n) || (n >= HARDENED) || (n < 0)) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return true;
|
|
16
|
+
}
|
package/helpers.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { HexString } from '@pezkuwi/util/types';
|
|
2
|
+
export type { HexString } from '@pezkuwi/util/types';
|
|
3
|
+
interface DualHash {
|
|
4
|
+
256: (u8a: Uint8Array) => Uint8Array;
|
|
5
|
+
512: (u8a: Uint8Array) => Uint8Array;
|
|
6
|
+
}
|
|
7
|
+
/** @internal */
|
|
8
|
+
export declare function createAsHex<T extends (...args: never[]) => Uint8Array>(fn: T): (...args: Parameters<T>) => HexString;
|
|
9
|
+
/** @internal */
|
|
10
|
+
export declare function createBitHasher(bitLength: 256 | 512, fn: (data: string | Uint8Array, bitLength: 256 | 512, onlyJs?: boolean) => Uint8Array): (data: string | Uint8Array, onlyJs?: boolean) => Uint8Array;
|
|
11
|
+
/** @internal */
|
|
12
|
+
export declare function createDualHasher(wa: DualHash, js: DualHash): (value: string | Uint8Array, bitLength?: 256 | 512, onlyJs?: boolean) => Uint8Array;
|
package/helpers.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { hasBigInt, u8aToHex, u8aToU8a } from '@pezkuwi/util';
|
|
2
|
+
import { isReady } from '@pezkuwi/wasm-crypto';
|
|
3
|
+
/** @internal */
|
|
4
|
+
export function createAsHex(fn) {
|
|
5
|
+
return (...args) => u8aToHex(fn(...args));
|
|
6
|
+
}
|
|
7
|
+
/** @internal */
|
|
8
|
+
export function createBitHasher(bitLength, fn) {
|
|
9
|
+
return (data, onlyJs) => fn(data, bitLength, onlyJs);
|
|
10
|
+
}
|
|
11
|
+
/** @internal */
|
|
12
|
+
export function createDualHasher(wa, js) {
|
|
13
|
+
return (value, bitLength = 256, onlyJs) => {
|
|
14
|
+
const u8a = u8aToU8a(value);
|
|
15
|
+
return !hasBigInt || (!onlyJs && isReady())
|
|
16
|
+
? wa[bitLength](u8a)
|
|
17
|
+
: js[bitLength](u8a);
|
|
18
|
+
};
|
|
19
|
+
}
|
package/hmac/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { hmacSha256AsU8a, hmacSha512AsU8a, hmacShaAsU8a } from './shaAsU8a.js';
|
package/hmac/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { hmacSha256AsU8a, hmacSha512AsU8a, hmacShaAsU8a } from './shaAsU8a.js';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @name hmacShaAsU8a
|
|
3
|
+
* @description creates a Hmac Sha (256/512) Uint8Array from the key & data
|
|
4
|
+
*/
|
|
5
|
+
export declare function hmacShaAsU8a(key: Uint8Array | string, data: Uint8Array, bitLength?: 256 | 512, onlyJs?: boolean): Uint8Array;
|
|
6
|
+
/**
|
|
7
|
+
* @name hmacSha256AsU8a
|
|
8
|
+
* @description creates a Hmac Sha256 Uint8Array from the key & data
|
|
9
|
+
*/
|
|
10
|
+
export declare const hmacSha256AsU8a: (key: Uint8Array | string, data: Uint8Array, onlyJs?: boolean) => Uint8Array;
|
|
11
|
+
/**
|
|
12
|
+
* @name hmacSha512AsU8a
|
|
13
|
+
* @description creates a Hmac Sha512 Uint8Array from the key & data
|
|
14
|
+
*/
|
|
15
|
+
export declare const hmacSha512AsU8a: (key: Uint8Array | string, data: Uint8Array, onlyJs?: boolean) => Uint8Array;
|
package/hmac/shaAsU8a.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { hmac } from '@noble/hashes/hmac';
|
|
2
|
+
import { sha256 } from '@noble/hashes/sha256';
|
|
3
|
+
import { sha512 } from '@noble/hashes/sha512';
|
|
4
|
+
import { hasBigInt, u8aToU8a } from '@pezkuwi/util';
|
|
5
|
+
import { hmacSha256, hmacSha512, isReady } from '@pezkuwi/wasm-crypto';
|
|
6
|
+
const JS_HASH = {
|
|
7
|
+
256: sha256,
|
|
8
|
+
512: sha512
|
|
9
|
+
};
|
|
10
|
+
const WA_MHAC = {
|
|
11
|
+
256: hmacSha256,
|
|
12
|
+
512: hmacSha512
|
|
13
|
+
};
|
|
14
|
+
function createSha(bitLength) {
|
|
15
|
+
return (key, data, onlyJs) => hmacShaAsU8a(key, data, bitLength, onlyJs);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* @name hmacShaAsU8a
|
|
19
|
+
* @description creates a Hmac Sha (256/512) Uint8Array from the key & data
|
|
20
|
+
*/
|
|
21
|
+
export function hmacShaAsU8a(key, data, bitLength = 256, onlyJs) {
|
|
22
|
+
const u8aKey = u8aToU8a(key);
|
|
23
|
+
return !hasBigInt || (!onlyJs && isReady())
|
|
24
|
+
? WA_MHAC[bitLength](u8aKey, data)
|
|
25
|
+
: hmac(JS_HASH[bitLength], u8aKey, data);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* @name hmacSha256AsU8a
|
|
29
|
+
* @description creates a Hmac Sha256 Uint8Array from the key & data
|
|
30
|
+
*/
|
|
31
|
+
export const hmacSha256AsU8a = /*#__PURE__*/ createSha(256);
|
|
32
|
+
/**
|
|
33
|
+
* @name hmacSha512AsU8a
|
|
34
|
+
* @description creates a Hmac Sha512 Uint8Array from the key & data
|
|
35
|
+
*/
|
|
36
|
+
export const hmacSha512AsU8a = /*#__PURE__*/ createSha(512);
|
package/index.d.ts
ADDED
package/index.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { EncryptedJsonEncoding, EncryptedJsonVersion } from './types.js';
|
|
2
|
+
export declare const ENCODING: EncryptedJsonEncoding[];
|
|
3
|
+
export declare const ENCODING_NONE: EncryptedJsonEncoding[];
|
|
4
|
+
export declare const ENCODING_VERSION: EncryptedJsonVersion;
|
|
5
|
+
export declare const NONCE_LENGTH = 24;
|
|
6
|
+
export declare const SCRYPT_LENGTH: number;
|
package/json/decrypt.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { hexToU8a, isHex } from '@pezkuwi/util';
|
|
2
|
+
import { base64Decode } from '../base64/index.js';
|
|
3
|
+
import { jsonDecryptData } from './decryptData.js';
|
|
4
|
+
export function jsonDecrypt({ encoded, encoding }, passphrase) {
|
|
5
|
+
if (!encoded) {
|
|
6
|
+
throw new Error('No encrypted data available to decode');
|
|
7
|
+
}
|
|
8
|
+
return jsonDecryptData(isHex(encoded)
|
|
9
|
+
? hexToU8a(encoded)
|
|
10
|
+
: base64Decode(encoded), passphrase, Array.isArray(encoding.type)
|
|
11
|
+
? encoding.type
|
|
12
|
+
: [encoding.type]);
|
|
13
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { stringToU8a, u8aFixLength } from '@pezkuwi/util';
|
|
2
|
+
import { naclDecrypt } from '../nacl/index.js';
|
|
3
|
+
import { scryptEncode, scryptFromU8a } from '../scrypt/index.js';
|
|
4
|
+
import { ENCODING, NONCE_LENGTH, SCRYPT_LENGTH } from './constants.js';
|
|
5
|
+
export function jsonDecryptData(encrypted, passphrase, encType = ENCODING) {
|
|
6
|
+
if (!encrypted) {
|
|
7
|
+
throw new Error('No encrypted data available to decode');
|
|
8
|
+
}
|
|
9
|
+
else if (encType.includes('xsalsa20-poly1305') && !passphrase) {
|
|
10
|
+
throw new Error('Password required to decode encrypted data');
|
|
11
|
+
}
|
|
12
|
+
let encoded = encrypted;
|
|
13
|
+
if (passphrase) {
|
|
14
|
+
let password;
|
|
15
|
+
if (encType.includes('scrypt')) {
|
|
16
|
+
const { params, salt } = scryptFromU8a(encrypted);
|
|
17
|
+
password = scryptEncode(passphrase, salt, params).password;
|
|
18
|
+
encrypted = encrypted.subarray(SCRYPT_LENGTH);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
password = stringToU8a(passphrase);
|
|
22
|
+
}
|
|
23
|
+
encoded = naclDecrypt(encrypted.subarray(NONCE_LENGTH), encrypted.subarray(0, NONCE_LENGTH), u8aFixLength(password, 256, true));
|
|
24
|
+
}
|
|
25
|
+
if (!encoded) {
|
|
26
|
+
throw new Error('Unable to decode using the supplied passphrase');
|
|
27
|
+
}
|
|
28
|
+
return encoded;
|
|
29
|
+
}
|
package/json/encrypt.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { u8aConcat } from '@pezkuwi/util';
|
|
2
|
+
import { naclEncrypt } from '../nacl/index.js';
|
|
3
|
+
import { scryptEncode, scryptToU8a } from '../scrypt/index.js';
|
|
4
|
+
import { jsonEncryptFormat } from './encryptFormat.js';
|
|
5
|
+
export function jsonEncrypt(data, contentType, passphrase) {
|
|
6
|
+
let isEncrypted = false;
|
|
7
|
+
let encoded = data;
|
|
8
|
+
if (passphrase) {
|
|
9
|
+
const { params, password, salt } = scryptEncode(passphrase);
|
|
10
|
+
const { encrypted, nonce } = naclEncrypt(encoded, password.subarray(0, 32));
|
|
11
|
+
isEncrypted = true;
|
|
12
|
+
encoded = u8aConcat(scryptToU8a(salt, params), nonce, encrypted);
|
|
13
|
+
}
|
|
14
|
+
return jsonEncryptFormat(encoded, contentType, isEncrypted);
|
|
15
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { base64Encode } from '../base64/index.js';
|
|
2
|
+
import { ENCODING, ENCODING_NONE, ENCODING_VERSION } from './constants.js';
|
|
3
|
+
export function jsonEncryptFormat(encoded, contentType, isEncrypted) {
|
|
4
|
+
return {
|
|
5
|
+
encoded: base64Encode(encoded),
|
|
6
|
+
encoding: {
|
|
7
|
+
content: contentType,
|
|
8
|
+
type: isEncrypted
|
|
9
|
+
? ENCODING
|
|
10
|
+
: ENCODING_NONE,
|
|
11
|
+
version: ENCODING_VERSION
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
}
|
package/json/index.d.ts
ADDED
package/json/index.js
ADDED
package/json/types.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type EncryptedJsonVersion = '0' | '1' | '2' | '3';
|
|
2
|
+
export type EncryptedJsonEncoding = 'none' | 'scrypt' | 'xsalsa20-poly1305';
|
|
3
|
+
export interface EncryptedJsonDescriptor {
|
|
4
|
+
/** Descriptor for the content */
|
|
5
|
+
content: string[];
|
|
6
|
+
/** The encoding (in current/latest versions this is always an array) */
|
|
7
|
+
type: EncryptedJsonEncoding | EncryptedJsonEncoding[];
|
|
8
|
+
/** The version of encoding applied */
|
|
9
|
+
version: EncryptedJsonVersion;
|
|
10
|
+
}
|
|
11
|
+
export interface EncryptedJson {
|
|
12
|
+
/** The encoded string */
|
|
13
|
+
encoded: string;
|
|
14
|
+
/** The encoding used */
|
|
15
|
+
encoding: EncryptedJsonDescriptor;
|
|
16
|
+
}
|
package/json/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @name keccakAsU8a
|
|
3
|
+
* @summary Creates a keccak Uint8Array from the input.
|
|
4
|
+
* @description
|
|
5
|
+
* From either a `string` or a `Buffer` input, create the keccak and return the result as a `Uint8Array`.
|
|
6
|
+
* @example
|
|
7
|
+
* <BR>
|
|
8
|
+
*
|
|
9
|
+
* ```javascript
|
|
10
|
+
* import { keccakAsU8a } from '@pezkuwi/util-crypto';
|
|
11
|
+
*
|
|
12
|
+
* keccakAsU8a('123'); // => Uint8Array
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export declare const keccakAsU8a: (value: string | Uint8Array, bitLength?: 256 | 512, onlyJs?: boolean) => Uint8Array;
|
|
16
|
+
/**
|
|
17
|
+
* @name keccak256AsU8a
|
|
18
|
+
* @description Creates a keccak256 Uint8Array from the input.
|
|
19
|
+
*/
|
|
20
|
+
export declare const keccak256AsU8a: (data: string | Uint8Array, onlyJs?: boolean) => Uint8Array;
|
|
21
|
+
/**
|
|
22
|
+
* @name keccak512AsU8a
|
|
23
|
+
* @description Creates a keccak512 Uint8Array from the input.
|
|
24
|
+
*/
|
|
25
|
+
export declare const keccak512AsU8a: (data: string | Uint8Array, onlyJs?: boolean) => Uint8Array;
|
|
26
|
+
/**
|
|
27
|
+
* @name keccakAsHex
|
|
28
|
+
* @description Creates a keccak hex string from the input.
|
|
29
|
+
*/
|
|
30
|
+
export declare const keccakAsHex: (value: string | Uint8Array, bitLength?: 256 | 512 | undefined, onlyJs?: boolean | undefined) => import("@pezkuwi/util/types").HexString;
|
package/keccak/asU8a.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { keccak_256 as keccak256Js, keccak_512 as keccak512Js } from '@noble/hashes/sha3';
|
|
2
|
+
import { keccak256, keccak512 } from '@pezkuwi/wasm-crypto';
|
|
3
|
+
import { createAsHex, createBitHasher, createDualHasher } from '../helpers.js';
|
|
4
|
+
/**
|
|
5
|
+
* @name keccakAsU8a
|
|
6
|
+
* @summary Creates a keccak Uint8Array from the input.
|
|
7
|
+
* @description
|
|
8
|
+
* From either a `string` or a `Buffer` input, create the keccak and return the result as a `Uint8Array`.
|
|
9
|
+
* @example
|
|
10
|
+
* <BR>
|
|
11
|
+
*
|
|
12
|
+
* ```javascript
|
|
13
|
+
* import { keccakAsU8a } from '@pezkuwi/util-crypto';
|
|
14
|
+
*
|
|
15
|
+
* keccakAsU8a('123'); // => Uint8Array
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export const keccakAsU8a = /*#__PURE__*/ createDualHasher({ 256: keccak256, 512: keccak512 }, { 256: keccak256Js, 512: keccak512Js });
|
|
19
|
+
/**
|
|
20
|
+
* @name keccak256AsU8a
|
|
21
|
+
* @description Creates a keccak256 Uint8Array from the input.
|
|
22
|
+
*/
|
|
23
|
+
export const keccak256AsU8a = /*#__PURE__*/ createBitHasher(256, keccakAsU8a);
|
|
24
|
+
/**
|
|
25
|
+
* @name keccak512AsU8a
|
|
26
|
+
* @description Creates a keccak512 Uint8Array from the input.
|
|
27
|
+
*/
|
|
28
|
+
export const keccak512AsU8a = /*#__PURE__*/ createBitHasher(512, keccakAsU8a);
|
|
29
|
+
/**
|
|
30
|
+
* @name keccakAsHex
|
|
31
|
+
* @description Creates a keccak hex string from the input.
|
|
32
|
+
*/
|
|
33
|
+
export const keccakAsHex = /*#__PURE__*/ createAsHex(keccakAsU8a);
|