Merge pull request #423 from JDonadio/fix/encrypted-02
Fix export/import wallet with encrypted pk
This commit is contained in:
commit
9667aa8e24
5 changed files with 130 additions and 69 deletions
|
|
@ -134,8 +134,7 @@ angular.module('copayApp.services')
|
|||
|
||||
if (n.type == "NewBlock" && n.data.network == "testnet") {
|
||||
throttledBwsEvent(n, wallet);
|
||||
}
|
||||
else newBwsEvent(n, wallet);
|
||||
} else newBwsEvent(n, wallet);
|
||||
});
|
||||
|
||||
wallet.on('walletCompleted', function() {
|
||||
|
|
@ -600,6 +599,7 @@ angular.module('copayApp.services')
|
|||
var walletClient = bwcService.getClient(null, opts);
|
||||
|
||||
$log.debug('Importing Wallet:', opts);
|
||||
|
||||
try {
|
||||
walletClient.import(str, {
|
||||
compressed: opts.compressed,
|
||||
|
|
@ -611,6 +611,12 @@ angular.module('copayApp.services')
|
|||
|
||||
str = JSON.parse(str);
|
||||
|
||||
if (str.xPrivKey && str.xPrivKeyEncrypted) {
|
||||
$log.warn('Found both encrypted and decrypted key. Deleting the encrypted version');
|
||||
delete str.xPrivKeyEncrypted;
|
||||
delete str.mnemonicEncrypted;
|
||||
}
|
||||
|
||||
var addressBook = str.addressBook || {};
|
||||
|
||||
addAndBindWalletClient(walletClient, {
|
||||
|
|
|
|||
|
|
@ -869,9 +869,8 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim
|
|||
if (!root.isEncrypted(wallet)) return cb();
|
||||
|
||||
askPassword(wallet.name, gettext('Enter Spending Password'), function(password) {
|
||||
if (!password) return cb('no password');
|
||||
if (!wallet.checkPassword(password)) return cb('wrong password');
|
||||
|
||||
if (!password) return cb('No password');
|
||||
if (!wallet.checkPassword(password)) return cb('Wrong password');
|
||||
|
||||
return cb(null, password);
|
||||
});
|
||||
|
|
@ -990,8 +989,7 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim
|
|||
});
|
||||
};
|
||||
|
||||
root.getEncodedWalletInfo = function(wallet, cb) {
|
||||
|
||||
root.getEncodedWalletInfo = function(wallet, password, cb) {
|
||||
var derivationPath = wallet.credentials.getBaseAddressDerivationPath();
|
||||
var encodingType = {
|
||||
mnemonic: 1,
|
||||
|
|
@ -1002,25 +1000,23 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim
|
|||
|
||||
// not supported yet
|
||||
if (wallet.credentials.derivationStrategy != 'BIP44' || !wallet.canSign())
|
||||
return null;
|
||||
return cb(gettextCatalog.getString('Exporting via QR not supported for this wallet'));
|
||||
|
||||
root.getKeys(wallet, function(err, keys) {
|
||||
if (err || !keys) return cb(err);
|
||||
var keys = root.getKeysWithPassword(wallet, password);
|
||||
|
||||
if (keys.mnemonic) {
|
||||
info = {
|
||||
type: encodingType.mnemonic,
|
||||
data: keys.mnemonic,
|
||||
}
|
||||
} else {
|
||||
info = {
|
||||
type: encodingType.xpriv,
|
||||
data: keys.xPrivKey
|
||||
}
|
||||
if (keys.mnemonic) {
|
||||
info = {
|
||||
type: encodingType.mnemonic,
|
||||
data: keys.mnemonic,
|
||||
}
|
||||
return cb(null, info.type + '|' + info.data + '|' + wallet.credentials.network.toLowerCase() + '|' + derivationPath + '|' + (wallet.credentials.mnemonicHasPassphrase));
|
||||
} else {
|
||||
info = {
|
||||
type: encodingType.xpriv,
|
||||
data: keys.xPrivKey
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
return cb(null, info.type + '|' + info.data + '|' + wallet.credentials.network.toLowerCase() + '|' + derivationPath + '|' + (wallet.credentials.mnemonicHasPassphrase));
|
||||
};
|
||||
|
||||
root.setTouchId = function(wallet, enabled, cb) {
|
||||
|
|
@ -1055,6 +1051,12 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim
|
|||
});
|
||||
};
|
||||
|
||||
root.getKeysWithPassword = function(wallet, password) {
|
||||
try {
|
||||
return wallet.getKeys(password);
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
root.getViewStatus = function(wallet, txp) {
|
||||
var status = txp.status;
|
||||
var type;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue