PHP WebShell
Текущая директория: /opt/BitGoJS/modules/sdk-core/src/bitgo
Просмотр файла: bip32util.ts
import * as utxolib from '@bitgo/utxo-lib';
import * as _ from 'lodash';
import * as bitcoinMessage from 'bitcoinjs-message';
import { BIP32Interface } from '@bitgo/utxo-lib';
/**
* bip32-aware wrapper around bitcoin-message package
* @see {bitcoinMessage.sign}
*/
export function signMessage(
message: string,
privateKey: BIP32Interface | Buffer,
network: { messagePrefix: string }
): Buffer {
if (!Buffer.isBuffer(privateKey)) {
privateKey = privateKey.privateKey as Buffer;
if (!privateKey) {
throw new Error(`must provide privateKey`);
}
}
if (!_.isObject(network) || !_.isString(network.messagePrefix)) {
throw new Error(`invalid argument 'network'`);
}
const compressed = true;
return bitcoinMessage.sign(message, privateKey, compressed, network.messagePrefix);
}
/**
* bip32-aware wrapper around bitcoin-message package
* @see {bitcoinMessage.verify}
*/
export function verifyMessage(
message: string,
publicKey: BIP32Interface | Buffer,
signature: Buffer,
network: { messagePrefix: string }
): boolean {
if (!Buffer.isBuffer(publicKey)) {
publicKey = publicKey.publicKey;
}
if (!_.isObject(network) || !_.isString(network.messagePrefix)) {
throw new Error(`invalid argument 'network'`);
}
const address = utxolib.address.toBase58Check(
utxolib.crypto.hash160(publicKey),
utxolib.networks.bitcoin.pubKeyHash,
utxolib.networks.bitcoin
);
return bitcoinMessage.verify(message, address, signature, network.messagePrefix);
}
Выполнить команду
Для локальной разработки. Не используйте в интернете!