aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Serrano <kevgagser@gmail.com>2016-11-23 09:55:22 +0800
committerGitHub <noreply@github.com>2016-11-23 09:55:22 +0800
commitec8b0148f0bf4114ab27d9bfe8ebca8a116e4b20 (patch)
tree5c2f426a63e22f4abc378a59bb86faba7e002877
parent427a10308309e7d4792878ce997728a9a25cb39b (diff)
parent05c8658ff343af61b1a40a5624ecba77adb2ef00 (diff)
downloadtangerine-wallet-browser-ec8b0148f0bf4114ab27d9bfe8ebca8a116e4b20.tar
tangerine-wallet-browser-ec8b0148f0bf4114ab27d9bfe8ebca8a116e4b20.tar.gz
tangerine-wallet-browser-ec8b0148f0bf4114ab27d9bfe8ebca8a116e4b20.tar.bz2
tangerine-wallet-browser-ec8b0148f0bf4114ab27d9bfe8ebca8a116e4b20.tar.lz
tangerine-wallet-browser-ec8b0148f0bf4114ab27d9bfe8ebca8a116e4b20.tar.xz
tangerine-wallet-browser-ec8b0148f0bf4114ab27d9bfe8ebca8a116e4b20.tar.zst
tangerine-wallet-browser-ec8b0148f0bf4114ab27d9bfe8ebca8a116e4b20.zip
Merge pull request #879 from MetaMask/i843-MoveSaltIntoEncryptor
Fix new encryptor implementation
-rw-r--r--app/scripts/keyring-controller.js7
-rw-r--r--app/scripts/lib/encryptor.js1
-rw-r--r--test/integration/lib/keyring-controller-test.js11
-rw-r--r--test/unit/keyring-controller-test.js1
-rw-r--r--ui/app/app.js7
5 files changed, 21 insertions, 6 deletions
diff --git a/app/scripts/keyring-controller.js b/app/scripts/keyring-controller.js
index 4fa2b4ee8..68cf62f7a 100644
--- a/app/scripts/keyring-controller.js
+++ b/app/scripts/keyring-controller.js
@@ -118,6 +118,7 @@ module.exports = class KeyringController extends EventEmitter {
return this.idStoreMigrator.migratedVaultForPassword(password)
.then((serialized) => {
if (serialized && shouldMigrate) {
+ this.password = password
const keyring = this.restoreKeyring(serialized)
this.keyrings.push(keyring)
this.configManager.setSelectedAccount(keyring.getAccounts()[0])
@@ -185,7 +186,6 @@ module.exports = class KeyringController extends EventEmitter {
cb(null, this.getState())
})
.catch((err) => {
- console.error(err)
cb(err)
})
}
@@ -274,8 +274,9 @@ module.exports = class KeyringController extends EventEmitter {
unlockKeyrings (password) {
const encryptedVault = this.configManager.getVault()
- return this.encryptor.decrypt(this.password, encryptedVault)
+ return this.encryptor.decrypt(password, encryptedVault)
.then((vault) => {
+ this.password = password
vault.forEach(this.restoreKeyring.bind(this))
return this.keyrings
})
@@ -557,7 +558,7 @@ module.exports = class KeyringController extends EventEmitter {
}
setLocked (cb) {
- this.key = null
+ this.password = null
this.keyrings = []
this.emit('update')
cb()
diff --git a/app/scripts/lib/encryptor.js b/app/scripts/lib/encryptor.js
index 8bacab766..4770d2f54 100644
--- a/app/scripts/lib/encryptor.js
+++ b/app/scripts/lib/encryptor.js
@@ -42,7 +42,6 @@ function encryptWithKey (key, dataObj) {
var data = JSON.stringify(dataObj)
var dataBuffer = convertStringToArrayBufferView(data)
var vector = global.crypto.getRandomValues(new Uint8Array(16))
-
return global.crypto.subtle.encrypt({
name: 'AES-GCM',
iv: vector,
diff --git a/test/integration/lib/keyring-controller-test.js b/test/integration/lib/keyring-controller-test.js
index bea485270..678744834 100644
--- a/test/integration/lib/keyring-controller-test.js
+++ b/test/integration/lib/keyring-controller-test.js
@@ -44,3 +44,14 @@ QUnit.test('keyringController:submitPassword', function (assert) {
done()
})
})
+
+QUnit.test('keyringController:setLocked', function (assert) {
+ var done = assert.async()
+ var self = this
+
+ this.keyringController.setLocked(function(err) {
+ assert.notOk(self.keyringController.password, 'password should be deallocated')
+ assert.deepEqual(self.keyringController.keyrings, [], 'keyrings should be deallocated')
+ done()
+ })
+})
diff --git a/test/unit/keyring-controller-test.js b/test/unit/keyring-controller-test.js
index a58043c7a..b20def02e 100644
--- a/test/unit/keyring-controller-test.js
+++ b/test/unit/keyring-controller-test.js
@@ -87,6 +87,7 @@ describe('KeyringController', function() {
keyringController.migrateOldVaultIfAny(password)
.then(() => {
assert(keyringController.configManager.getVault(), 'now has a vault')
+ assert(keyringController.password, 'has a password set')
done()
})
.catch((reason) => {
diff --git a/ui/app/app.js b/ui/app/app.js
index f9694214a..94e8adc34 100644
--- a/ui/app/app.js
+++ b/ui/app/app.js
@@ -258,7 +258,7 @@ App.prototype.renderNetworkDropdown = function () {
activeNetworkRender: props.provider.rpcTarget,
}),
- this.renderCustomOption(props.provider.rpcTarget),
+ this.renderCustomOption(props.provider),
h(DropMenuItem, {
label: 'Custom RPC',
@@ -480,7 +480,10 @@ App.prototype.toggleMetamaskActive = function () {
}
}
-App.prototype.renderCustomOption = function (rpcTarget) {
+App.prototype.renderCustomOption = function (provider) {
+ const { rpcTarget, type } = provider
+ if (type !== 'rpc') return null
+
switch (rpcTarget) {
case 'http://localhost:8545':