diff options
author | Frankie <frankie.diamond@gmail.com> | 2016-09-13 01:34:06 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-13 01:34:06 +0800 |
commit | c37c050c8a119e4c2de1edea474c3c3d5ad1cf99 (patch) | |
tree | 9a4f288759d608b2300dc0245ea898f01d6d9a1b /app | |
parent | fcc9ca812e557fd5ecc547f5eb597069788d6c00 (diff) | |
download | tangerine-wallet-browser-c37c050c8a119e4c2de1edea474c3c3d5ad1cf99.tar tangerine-wallet-browser-c37c050c8a119e4c2de1edea474c3c3d5ad1cf99.tar.gz tangerine-wallet-browser-c37c050c8a119e4c2de1edea474c3c3d5ad1cf99.tar.bz2 tangerine-wallet-browser-c37c050c8a119e4c2de1edea474c3c3d5ad1cf99.tar.lz tangerine-wallet-browser-c37c050c8a119e4c2de1edea474c3c3d5ad1cf99.tar.xz tangerine-wallet-browser-c37c050c8a119e4c2de1edea474c3c3d5ad1cf99.tar.zst tangerine-wallet-browser-c37c050c8a119e4c2de1edea474c3c3d5ad1cf99.zip |
Revert "Add new eth-lightwallet salting to vault."
Diffstat (limited to 'app')
-rw-r--r-- | app/scripts/lib/idStore.js | 125 |
1 files changed, 61 insertions, 64 deletions
diff --git a/app/scripts/lib/idStore.js b/app/scripts/lib/idStore.js index 8b7e3ad3b..26aa02ef7 100644 --- a/app/scripts/lib/idStore.js +++ b/app/scripts/lib/idStore.js @@ -3,7 +3,7 @@ const inherits = require('util').inherits const async = require('async') const ethUtil = require('ethereumjs-util') const EthQuery = require('eth-query') -const KeyStore = require('eth-lightwallet').keystore +const LightwalletKeyStore = require('eth-lightwallet').keystore const clone = require('clone') const extend = require('xtend') const createId = require('web3-provider-engine/util/random-id') @@ -50,16 +50,15 @@ IdentityStore.prototype.createNewVault = function (password, entropy, cb) { if (serializedKeystore) { this.configManager.setData({}) } - this._createIdmgmt(password, null, entropy, (err) => { if (err) return cb(err) + this._loadIdentities() + this._didUpdate() this._autoFaucet() this.configManager.setShowSeedWords(true) var seedWords = this._idmgmt.getSeed() - - cb(null, seedWords) }) } @@ -76,6 +75,7 @@ IdentityStore.prototype.recoverFromSeed = function (password, seed, cb) { if (err) return cb(err) this._loadIdentities() + this._didUpdate() cb(null, this.getState()) }) } @@ -125,7 +125,7 @@ IdentityStore.prototype.getSelectedAddress = function () { return configManager.getSelectedAccount() } -IdentityStore.prototype.setSelectedAddressSync = function (address) { +IdentityStore.prototype.setSelectedAddress = function (address, cb) { const configManager = this.configManager if (!address) { var addresses = this._getAddresses() @@ -133,12 +133,7 @@ IdentityStore.prototype.setSelectedAddressSync = function (address) { } configManager.setSelectedAccount(address) - return address -} - -IdentityStore.prototype.setSelectedAddress = function (address, cb) { - const resultAddress = this.setSelectedAddressSync(address) - if (cb) return cb(null, resultAddress) + if (cb) return cb(null, address) } IdentityStore.prototype.revealAccount = function (cb) { @@ -148,7 +143,6 @@ IdentityStore.prototype.revealAccount = function (cb) { keyStore.setDefaultHdDerivationPath(this.hdPathString) keyStore.generateNewAddress(derivedKey, 1) - configManager.setWallet(keyStore.serialize()) this._loadIdentities() @@ -399,6 +393,7 @@ IdentityStore.prototype._loadIdentities = function () { var addresses = this._getAddresses() addresses.forEach((address, i) => { // // add to ethStore + this._ethStore.addAccount(address) // add to identities const defaultLabel = 'Wallet ' + (i + 1) const nickname = configManager.nicknameForWallet(address) @@ -417,6 +412,7 @@ IdentityStore.prototype.saveAccountLabel = function (account, label, cb) { configManager.setNicknameForWallet(account, label) this._loadIdentities() cb(null, label) + this._didUpdate() } // mayBeFauceting @@ -440,76 +436,77 @@ IdentityStore.prototype._mayBeFauceting = function (i) { // IdentityStore.prototype.tryPassword = function (password, cb) { - var serializedKeystore = this.configManager.getWallet() - var keyStore = KeyStore.deserialize(serializedKeystore) - - keyStore.keyFromPassword(password, (err, pwDerivedKey) => { - if (err) return cb(err) - - const isCorrect = keyStore.isDerivedKeyCorrect(pwDerivedKey) - if (!isCorrect) return cb(new Error('Lightwallet - password incorrect')) - - cb() - }) + this._createIdmgmt(password, null, null, cb) } -IdentityStore.prototype._createIdmgmt = function (password, seedPhrase, entropy, cb) { - const opts = { - password, - hdPathString: this.hdPathString, - } - - if (seedPhrase) { - opts.seedPhrase = seedPhrase - } +IdentityStore.prototype._createIdmgmt = function (password, seed, entropy, cb) { + const configManager = this.configManager - KeyStore.createVault(opts, (err, keyStore) => { + var keyStore = null + LightwalletKeyStore.deriveKeyFromPassword(password, (err, derivedKey) => { if (err) return cb(err) + var serializedKeystore = configManager.getWallet() + + if (seed) { + try { + keyStore = this._restoreFromSeed(password, seed, derivedKey) + } catch (e) { + return cb(e) + } + + // returning user, recovering from storage + } else if (serializedKeystore) { + keyStore = LightwalletKeyStore.deserialize(serializedKeystore) + var isCorrect = keyStore.isDerivedKeyCorrect(derivedKey) + if (!isCorrect) return cb(new Error('Lightwallet - password incorrect')) + + // first time here + } else { + keyStore = this._createFirstWallet(entropy, derivedKey) + } this._keyStore = keyStore - - keyStore.keyFromPassword(password, (err, derivedKey) => { - if (err) return cb(err) - - this.purgeCache() - - keyStore.addHdDerivationPath(this.hdPathString, derivedKey, {curve: 'secp256k1', purpose: 'sign'}) - - this._createFirstWallet(derivedKey) - - this._idmgmt = new IdManagement({ - keyStore: keyStore, - derivedKey: derivedKey, - configManager: this.configManager, - }) - - this.setSelectedAddressSync() - - cb() + this._idmgmt = new IdManagement({ + keyStore: keyStore, + derivedKey: derivedKey, + hdPathSTring: this.hdPathString, + configManager: this.configManager, }) + + cb() }) } -IdentityStore.prototype.purgeCache = function () { - this._getAddresses().forEach((address) => { - this._ethStore.del(address) - }) +IdentityStore.prototype._restoreFromSeed = function (password, seed, derivedKey) { + const configManager = this.configManager + var keyStore = new LightwalletKeyStore(seed, derivedKey, this.hdPathString) + keyStore.addHdDerivationPath(this.hdPathString, derivedKey, {curve: 'secp256k1', purpose: 'sign'}) + keyStore.setDefaultHdDerivationPath(this.hdPathString) + + keyStore.generateNewAddress(derivedKey, 1) + configManager.setWallet(keyStore.serialize()) + if (global.METAMASK_DEBUG) { + console.log('restored from seed. saved to keystore') + } + return keyStore } -IdentityStore.prototype._createFirstWallet = function (derivedKey) { - const keyStore = this._keyStore +IdentityStore.prototype._createFirstWallet = function (entropy, derivedKey) { + const configManager = this.configManager + var secretSeed = LightwalletKeyStore.generateRandomSeed(entropy) + var keyStore = new LightwalletKeyStore(secretSeed, derivedKey, this.hdPathString) + keyStore.addHdDerivationPath(this.hdPathString, derivedKey, {curve: 'secp256k1', purpose: 'sign'}) keyStore.setDefaultHdDerivationPath(this.hdPathString) + keyStore.generateNewAddress(derivedKey, 1) - this.configManager.setWallet(keyStore.serialize()) - var addresses = keyStore.getAddresses() - this._ethStore.addAccount(ethUtil.addHexPrefix(addresses[0])) + configManager.setWallet(keyStore.serialize()) + console.log('saved to keystore') + return keyStore } // get addresses and normalize address hexString IdentityStore.prototype._getAddresses = function () { - return this._keyStore.getAddresses(this.hdPathString).map((address) => { - return ethUtil.addHexPrefix(address) - }) + return this._keyStore.getAddresses(this.hdPathString).map((address) => { return '0x' + address }) } IdentityStore.prototype._autoFaucet = function () { |