PHP WebShell

Текущая директория: /usr/lib/node_modules/bitgo-express/node_modules/bitgo/src

Просмотр файла: ripple.js

const rippleKeypairs = require('ripple-keypairs');
const ripple = require('ripple-lib');
const prova = require('./prova');

const keypairs = require('ripple-keypairs');
const binary = require('ripple-binary-codec');
const { computeBinaryTransactionHash } = require('ripple-hashes');

function computeSignature(tx, privateKey, signAs) {
  const signingData = signAs ?
  binary.encodeForMultisigning(tx, signAs) : binary.encodeForSigning(tx);
  return keypairs.sign(signingData, privateKey);
}

const signWithPrivateKey = function(txJSON, privateKey, options) {
  let privateKeyBuffer = new Buffer(privateKey, 'hex');
  if (privateKeyBuffer.length === 33 && privateKeyBuffer[0] === 0) {
    privateKeyBuffer = privateKeyBuffer.slice(1, 33);
  }
  const privateKeyObject = prova.ECPair.fromPrivateKeyBuffer(privateKeyBuffer);
  const publicKey = privateKeyObject.getPublicKeyBuffer().toString('hex').toUpperCase();

  const tx = JSON.parse(txJSON);
  if (tx.TxnSignature || tx.Signers) {
    throw new Error('txJSON must not contain "TxnSignature" or "Signers" properties');
  }

  tx.SigningPubKey = (options && options.signAs) ? '' : publicKey;

  if (options && options.signAs) {
    const expectedSigner = rippleKeypairs.deriveAddress(publicKey);
    if (options.signAs !== expectedSigner) {
      throw new Error('signAs does not match private key');
    }
    const signer = {
      Account: options.signAs,
      SigningPubKey: publicKey,
      TxnSignature: computeSignature(tx, privateKey, options.signAs)
    };
    tx.Signers = [{ Signer: signer }];
  } else {
    tx.TxnSignature = computeSignature(tx, privateKey);
  }

  const serialized = binary.encode(tx);
  return {
    signedTransaction: serialized,
    id: computeBinaryTransactionHash(serialized)
  };
};

module.exports = (params) => {
  const rippleLib = new ripple.RippleAPI(params);
  rippleLib.signWithPrivateKey = signWithPrivateKey;
  return rippleLib;
};

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


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