mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-22 18:00:18 +01:00
Merge pull request #879 from MetaMask/i843-MoveSaltIntoEncryptor
Fix new encryptor implementation
This commit is contained in:
commit
ec8b0148f0
@ -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()
|
||||
|
@ -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,
|
||||
|
@ -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()
|
||||
})
|
||||
})
|
||||
|
@ -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) => {
|
||||
|
@ -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':
|
||||
|
Loading…
Reference in New Issue
Block a user