aboutsummaryrefslogblamecommitdiffstats
path: root/app/scripts/account-import-strategies/index.js
blob: 8f4456cdf431f7daeeb72085f3838ee5ff1862eb (plain) (tree)




































                                                               
const Wallet = require('ethereumjs-wallet')
const importers = require('ethereumjs-wallet/thirdparty')
const ethUtil = require('ethereumjs-util')

const accountImporter = {

  importAccount(strategy, args) {
    try {
      const importer = this.strategies[strategy]
      const wallet = importer.apply(null, args)
      const privateKeyHex = walletToPrivateKey(wallet)
      return Promise.resolve(privateKeyHex)
    } catch (e) {
      return Promise.reject(e)
    }
  },

  strategies: {
    'Private Key': (privateKey) => {
      const stripped = ethUtil.stripHexPrefix(privateKey)
      const buffer = new Buffer(stripped, 'hex')
      return Wallet.fromPrivateKey(buffer)
    },
    'JSON File': (input, password) => {
      const wallet = importers.fromEtherWallet(input, password)
      return walletToPrivateKey(wallet)
    },
  },

}

function walletToPrivateKey (wallet) {
  const privateKeyBuffer = wallet.getPrivateKey()
  return ethUtil.bufferToHex(privateKeyBuffer)
}

module.exports = accountImporter