PHP WebShell

Текущая директория: /opt/BitGoJS/node_modules/eosjs-ecc/lib

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

"use strict";

var Aes = require("./aes");

var PrivateKey = require("./key_private");

var PublicKey = require("./key_public");

var Signature = require("./signature");

var key_utils = require("./key_utils");

var hash = require("./hash");
/**
    [Wallet Import Format](https://en.bitcoin.it/wiki/Wallet_import_format)
    @typedef {string} wif
*/

/**
    EOSKey..
    @typedef {string} pubkey
*/

/** @namespace */


var ecc = {
  /**
    Initialize by running some self-checking code.  This should take a
    second to gather additional CPU entropy used during private key
    generation.
     Initialization happens once even if called multiple times.
     @return {Promise}
  */
  initialize: PrivateKey.initialize,

  /**
    Does not pause to gather CPU entropy.
    @return {Promise<PrivateKey>} test key
  */
  unsafeRandomKey: function unsafeRandomKey() {
    return PrivateKey.unsafeRandomKey().then(function (key) {
      return key.toString();
    });
  },

  /**
      @arg {number} [cpuEntropyBits = 0] gather additional entropy
      from a CPU mining algorithm.  This will already happen once by
      default.
       @return {Promise<wif>}
       @example
  ecc.randomKey().then(privateKey => {
  console.log('Private Key:\t', privateKey) // wif
  console.log('Public Key:\t', ecc.privateToPublic(privateKey)) // EOSkey...
  })
  */
  randomKey: function randomKey(cpuEntropyBits) {
    return PrivateKey.randomKey(cpuEntropyBits).then(function (key) {
      return key.toString();
    });
  },

  /**
       @arg {string} seed - any length string.  This is private.  The same
      seed produces the same private key every time.  At least 128 random
      bits should be used to produce a good private key.
      @return {wif}
       @example ecc.seedPrivate('secret') === wif
  */
  seedPrivate: function seedPrivate(seed) {
    return PrivateKey.fromSeed(seed).toString();
  },

  /**
      @arg {wif} wif
      @arg {string} [pubkey_prefix = 'EOS'] - public key prefix
       @return {pubkey}
       @example ecc.privateToPublic(wif) === pubkey
  */
  privateToPublic: function privateToPublic(wif) {
    var pubkey_prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'EOS';
    return PrivateKey(wif).toPublic().toString(pubkey_prefix);
  },

  /**
      @arg {pubkey} pubkey - like EOSKey..
      @arg {string} [pubkey_prefix = 'EOS']
       @return {boolean} valid
       @example ecc.isValidPublic(pubkey) === true
  */
  isValidPublic: function isValidPublic(pubkey) {
    var pubkey_prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'EOS';
    return PublicKey.isValid(pubkey, pubkey_prefix);
  },

  /**
      @arg {wif} wif
      @return {boolean} valid
       @example ecc.isValidPrivate(wif) === true
  */
  isValidPrivate: function isValidPrivate(wif) {
    return PrivateKey.isValid(wif);
  },

  /**
      Create a signature using data or a hash.
       @arg {string|Buffer} data
      @arg {wif|PrivateKey} privateKey
      @arg {String} [encoding = 'utf8'] - data encoding (if string)
       @return {string} string signature
       @example ecc.sign('I am alive', wif)
  */
  sign: function sign(data, privateKey) {
    var encoding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'utf8';

    if (encoding === true) {
      throw new TypeError('API changed, use signHash(..) instead');
    } else {
      if (encoding === false) {
        console.log('Warning: ecc.sign hashData parameter was removed');
      }
    }

    return Signature.sign(data, privateKey, encoding).toString();
  },

  /**
      @arg {String|Buffer} dataSha256 - sha256 hash 32 byte buffer or string
      @arg {wif|PrivateKey} privateKey
      @arg {String} [encoding = 'hex'] - dataSha256 encoding (if string)
       @return {string} string signature
  */
  signHash: function signHash(dataSha256, privateKey) {
    var encoding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'hex';
    return Signature.signHash(dataSha256, privateKey, encoding).toString();
  },

  /**
      Verify signed data.
       @arg {string|Buffer} signature - buffer or hex string
      @arg {string|Buffer} data
      @arg {pubkey|PublicKey} pubkey
      @arg {boolean} [hashData = true] - sha256 hash data before verify
      @return {boolean}
       @example ecc.verify(signature, 'I am alive', pubkey) === true
  */
  verify: function verify(signature, data, pubkey) {
    var encoding = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'utf8';

    if (encoding === true) {
      throw new TypeError('API changed, use verifyHash(..) instead');
    } else {
      if (encoding === false) {
        console.log('Warning: ecc.verify hashData parameter was removed');
      }
    }

    signature = Signature.from(signature);
    return signature.verify(data, pubkey, encoding);
  },
  verifyHash: function verifyHash(signature, dataSha256, pubkey) {
    var encoding = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'hex';
    signature = Signature.from(signature);
    return signature.verifyHash(dataSha256, pubkey, encoding);
  },

  /**
      Recover the public key used to create the signature.
       @arg {String|Buffer} signature (EOSbase58sig.., Hex, Buffer)
      @arg {String|Buffer} data - full data
      @arg {String} [encoding = 'utf8'] - data encoding (if data is a string)
       @return {pubkey}
       @example ecc.recover(signature, 'I am alive') === pubkey
  */
  recover: function recover(signature, data) {
    var encoding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'utf8';

    if (encoding === true) {
      throw new TypeError('API changed, use recoverHash(signature, data) instead');
    } else {
      if (encoding === false) {
        console.log('Warning: ecc.recover hashData parameter was removed');
      }
    }

    signature = Signature.from(signature);
    return signature.recover(data, encoding).toString();
  },

  /**
      @arg {String|Buffer} signature (EOSbase58sig.., Hex, Buffer)
      @arg {String|Buffer} dataSha256 - sha256 hash 32 byte buffer or hex string
      @arg {String} [encoding = 'hex'] - dataSha256 encoding (if dataSha256 is a string)
       @return {PublicKey}
  */
  recoverHash: function recoverHash(signature, dataSha256) {
    var encoding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'hex';
    signature = Signature.from(signature);
    return signature.recoverHash(dataSha256, encoding).toString();
  },

  /** @arg {string|Buffer} data - always binary, you may need Buffer.from(data, 'hex')
      @arg {string} [encoding = 'hex'] - result encoding 'hex', 'binary' or 'base64'
      @return {string|Buffer} - Buffer when encoding is null, or string
       @example ecc.sha256('hashme') === '02208b..'
      @example ecc.sha256(Buffer.from('02208b', 'hex')) === '29a23..'
  */
  sha256: function sha256(data) {
    var resultEncoding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'hex';
    return hash.sha256(data, resultEncoding);
  }
};
module.exports = ecc;

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


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