@pgchain/blockchain-libs
Version:
PGWallet Blockchain Libs
54 lines • 2.44 kB
JavaScript
;
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