UNPKG

@unisat/wallet-sdk

Version:
30 lines (29 loc) 1.42 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.verifyMessageOfECDSA = exports.signMessageOfECDSA = void 0; const bitcore_lib_1 = __importDefault(require("bitcore-lib")); function signMessageOfECDSA(privateKey, text) { const keyPair = privateKey; const message = new bitcore_lib_1.default.Message(text); return message.sign(new bitcore_lib_1.default.PrivateKey(keyPair.privateKey)); } exports.signMessageOfECDSA = signMessageOfECDSA; function verifyMessageOfECDSA(publicKey, text, sig) { const message = new bitcore_lib_1.default.Message(text); const signature = bitcore_lib_1.default.crypto.Signature.fromCompact(Buffer.from(sig, 'base64')); const hash = message.magicHash(); // recover the public key const ecdsa = new bitcore_lib_1.default.crypto.ECDSA(); ecdsa.hashbuf = hash; ecdsa.sig = signature; const pubkeyInSig = ecdsa.toPublicKey(); const pubkeyInSigString = new bitcore_lib_1.default.PublicKey(Object.assign({}, pubkeyInSig.toObject(), { compressed: true })).toString(); if (pubkeyInSigString != publicKey) { return false; } return bitcore_lib_1.default.crypto.ECDSA.verify(hash, signature, pubkeyInSig); } exports.verifyMessageOfECDSA = verifyMessageOfECDSA;