UNPKG

@pgchain/blockchain-libs

Version:
54 lines 2.44 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Provider = void 0; const bchaddrjs_1 = __importDefault(require("bchaddrjs")); const bitcoinjs_message_1 = __importDefault(require("bitcoinjs-message")); const precondtion_1 = require("../../../basic/precondtion"); const btc_1 = require("../btc"); const addressEncodings_1 = __importDefault(require("../btc/sdk/addressEncodings")); class Provider extends btc_1.Provider { async pubkeyToAddress(verifier, encoding) { const legacyAddress = await super.pubkeyToAddress(verifier, addressEncodings_1.default.P2PKH); return bchaddrjs_1.default.toCashAddress(legacyAddress); } async verifyAddress(address) { const isValid = bchaddrjs_1.default.isCashAddress(address); return isValid ? { displayAddress: address, normalizedAddress: address, encoding: addressEncodings_1.default.P2PKH, isValid: true, } : { isValid: false }; } processUnsignedTxBeforeSign(unsignedTx) { return Object.assign({}, unsignedTx, { inputs: unsignedTx.inputs.map((i) => ({ ...i, address: bchaddrjs_1.default.toLegacyAddress(i.address), })), outputs: unsignedTx.outputs.map((o) => ({ ...o, address: bchaddrjs_1.default.toLegacyAddress(o.address), })), }); } async signTransaction(unsignedTx, signers) { unsignedTx = this.processUnsignedTxBeforeSign(unsignedTx); return super.signTransaction(unsignedTx, signers); } async verifyMessage(address, { message }, signature) { const validation = await this.verifyAddress(address); (0, precondtion_1.check)(validation.isValid, 'Invalid Address'); address = bchaddrjs_1.default.toLegacyAddress(address); const checkSegwitAlways = validation.encoding === addressEncodings_1.default.P2WPKH || validation.encoding === addressEncodings_1.default.P2SH_P2WPKH; return bitcoinjs_message_1.default.verify(message, address, signature, this.network.messagePrefix, checkSegwitAlways); } } exports.Provider = Provider; //# sourceMappingURL=provider.js.map