mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
add vault recovery
This commit is contained in:
parent
231d7ab1de
commit
2197750510
@ -115,6 +115,7 @@ function linkDnode(stream){
|
|||||||
setRpcTarget: setRpcTarget,
|
setRpcTarget: setRpcTarget,
|
||||||
// forward directly to idStore
|
// forward directly to idStore
|
||||||
createNewVault: idStore.createNewVault.bind(idStore),
|
createNewVault: idStore.createNewVault.bind(idStore),
|
||||||
|
recoverFromSeed: idStore.recoverFromSeed.bind(idStore),
|
||||||
submitPassword: idStore.submitPassword.bind(idStore),
|
submitPassword: idStore.submitPassword.bind(idStore),
|
||||||
setSelectedAddress: idStore.setSelectedAddress.bind(idStore),
|
setSelectedAddress: idStore.setSelectedAddress.bind(idStore),
|
||||||
approveTransaction: idStore.approveTransaction.bind(idStore),
|
approveTransaction: idStore.approveTransaction.bind(idStore),
|
||||||
|
@ -41,7 +41,7 @@ IdentityStore.prototype.createNewVault = function(password, cb){
|
|||||||
const self = this
|
const self = this
|
||||||
delete self._keyStore
|
delete self._keyStore
|
||||||
delete window.localStorage['lightwallet']
|
delete window.localStorage['lightwallet']
|
||||||
var keyStore = self._createIdmgmt(password, function(err){
|
var keyStore = self._createIdmgmt(password, null, function(err){
|
||||||
if (err) return cb(err)
|
if (err) return cb(err)
|
||||||
var seedWords = self._idmgmt.getSeed()
|
var seedWords = self._idmgmt.getSeed()
|
||||||
self._loadIdentities()
|
self._loadIdentities()
|
||||||
@ -50,6 +50,15 @@ IdentityStore.prototype.createNewVault = function(password, cb){
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IdentityStore.prototype.recoverFromSeed = function(password, seed, cb){
|
||||||
|
const self = this
|
||||||
|
self._createIdmgmt(password, seed, function(err){
|
||||||
|
if (err) return cb(err)
|
||||||
|
self._loadIdentities()
|
||||||
|
self._didUpdate()
|
||||||
|
cb()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
IdentityStore.prototype.setStore = function(store){
|
IdentityStore.prototype.setStore = function(store){
|
||||||
const self = this
|
const self = this
|
||||||
@ -202,17 +211,23 @@ IdentityStore.prototype._loadIdentities = function(){
|
|||||||
|
|
||||||
IdentityStore.prototype._tryPassword = function(password, cb){
|
IdentityStore.prototype._tryPassword = function(password, cb){
|
||||||
const self = this
|
const self = this
|
||||||
self._createIdmgmt(password, cb)
|
self._createIdmgmt(password, null, cb)
|
||||||
}
|
}
|
||||||
|
|
||||||
IdentityStore.prototype._createIdmgmt = function(password, cb){
|
IdentityStore.prototype._createIdmgmt = function(password, seed, cb){
|
||||||
const self = this
|
const self = this
|
||||||
var keyStore = null
|
var keyStore = null
|
||||||
LightwalletKeyStore.deriveKeyFromPassword(password, function(err, derrivedKey){
|
LightwalletKeyStore.deriveKeyFromPassword(password, function(err, derrivedKey){
|
||||||
if (err) return cb(err)
|
if (err) return cb(err)
|
||||||
var serializedKeystore = window.localStorage['lightwallet']
|
var serializedKeystore = window.localStorage['lightwallet']
|
||||||
// returning user
|
// recovering from seed
|
||||||
if (serializedKeystore) {
|
if (seed) {
|
||||||
|
keyStore = new LightwalletKeyStore(seed, derrivedKey)
|
||||||
|
keyStore.generateNewAddress(derrivedKey, 3)
|
||||||
|
window.localStorage['lightwallet'] = keyStore.serialize()
|
||||||
|
console.log('saved to keystore localStorage')
|
||||||
|
// returning user, recovering from localStorage
|
||||||
|
} else if (serializedKeystore) {
|
||||||
keyStore = LightwalletKeyStore.deserialize(serializedKeystore)
|
keyStore = LightwalletKeyStore.deserialize(serializedKeystore)
|
||||||
var isCorrect = keyStore.isDerivedKeyCorrect(derrivedKey)
|
var isCorrect = keyStore.isDerivedKeyCorrect(derrivedKey)
|
||||||
if (!isCorrect) return cb(new Error('Lightwallet - password incorrect'))
|
if (!isCorrect) return cb(new Error('Lightwallet - password incorrect'))
|
||||||
|
Loading…
Reference in New Issue
Block a user