PHP WebShell

Текущая директория: /opt/BitGoJS/modules/abstract-lightning/src/lightning

Просмотр файла: signature.ts

import * as utxolib from '@bitgo/utxo-lib';
import * as sdkcore from '@bitgo/sdk-core';
import { canonicalizeObject, Signable } from './signableJson';

/**
 * Verifies a signature for a given message.
 *
 * @param {Signable} message - The message to verify.
 * @param {string} signature - The signature to verify, in hexadecimal format.
 * @param {string} pub - The public key in BIP32 format.
 * @param {utxolib.Network} network - The network to use for verification.
 * @returns {boolean} - Returns true if the signature is valid, false otherwise.
 */
export function verifyMessageSignature(
  message: Signable,
  signature: string,
  pub: string,
  network: utxolib.Network = utxolib.networks.bitcoin
): boolean {
  const messageString = JSON.stringify(canonicalizeObject(message));
  const pubKey = utxolib.bip32.fromBase58(pub, network).publicKey;
  const signatureBuffer = Buffer.from(signature, 'hex');
  return sdkcore.verifyMessage(messageString, pubKey, signatureBuffer, network);
}

/**
 * Creates a signature for a given message.
 *
 * @param {Signable} message - The message to sign.
 * @param {string} prv - The private key in BIP32 format.
 * @param {utxolib.Network} network - The network to use for signing.
 * @returns {string} - Returns the signature in hexadecimal format.
 */
export function createMessageSignature(
  message: Signable,
  xprv: string,
  network: utxolib.Network = utxolib.networks.bitcoin
): string {
  const requestString = JSON.stringify(canonicalizeObject(message));
  const prvKey = utxolib.bip32.fromBase58(xprv, network);
  return sdkcore.signMessage(requestString, prvKey, network).toString('hex');
}

Выполнить команду


Для локальной разработки. Не используйте в интернете!