UNPKG

@onekeyfe/blockchain-libs

Version:
38 lines 1.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isValidAddress = exports.pubkeyToAddress = void 0; const bech32_1 = require("./bech32"); const hash_1 = require("./hash"); function rawEd25519PubkeyToRawAddress(pubkey) { if (pubkey.length !== 32) { throw new Error(`Invalid Ed25519 pubkey length: ${pubkey.length}`); } return (0, hash_1.sha256)(pubkey).slice(0, 20); } function rawSecp256k1PubkeyToRawAddress(pubkey) { if (pubkey.length !== 33) { throw new Error(`Invalid Secp256k1 pubkey length (compressed): ${pubkey.length}`); } return (0, hash_1.ripemd160)((0, hash_1.sha256)(pubkey)); } function pubkeyToAddress(curve, prefix, pubkey) { const digest = curve === 'secp256k1' ? rawSecp256k1PubkeyToRawAddress(pubkey) : rawEd25519PubkeyToRawAddress(pubkey); return bech32_1.Bech32.encode(prefix, digest); } exports.pubkeyToAddress = pubkeyToAddress; function isValidAddress(input, requiredPrefix) { try { const { prefix, data } = bech32_1.Bech32.decode(input); if (prefix !== requiredPrefix) { return false; } return data.length === 20; } catch { return false; } } exports.isValidAddress = isValidAddress; //# sourceMappingURL=address.js.map