PHP WebShell

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

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

'use strict'; // eslint-disable-line strict

var utils = require('./utils');
var keypairs = require('ripple-keypairs');
var binary = require('ripple-binary-codec');

var _require = require('ripple-hashes'),
    computeBinaryTransactionHash = _require.computeBinaryTransactionHash;

var validate = utils.common.validate;

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

function sign(txJSON, secret) {
  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};

  validate.sign({ txJSON: txJSON, secret: secret });
  // we can't validate that the secret matches the account because
  // the secret could correspond to the regular key

  var tx = JSON.parse(txJSON);
  if (tx.TxnSignature || tx.Signers) {
    throw new utils.common.errors.ValidationError('txJSON must not contain "TxnSignature" or "Signers" properties');
  }

  var keypair = keypairs.deriveKeypair(secret);
  tx.SigningPubKey = options.signAs ? '' : keypair.publicKey;

  if (options.signAs) {
    var signer = {
      Account: options.signAs,
      SigningPubKey: keypair.publicKey,
      TxnSignature: computeSignature(tx, keypair.privateKey, options.signAs)
    };
    tx.Signers = [{ Signer: signer }];
  } else {
    tx.TxnSignature = computeSignature(tx, keypair.privateKey);
  }

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

module.exports = sign;

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


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