From fce9ef7f62fce9401152ff9398dd76effc9b47b8 Mon Sep 17 00:00:00 2001 From: Ivan Socolsky Date: Thu, 9 Jun 2016 14:45:28 -0300 Subject: [PATCH] check mnemonic strings match --- src/js/controllers/backup.js | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/src/js/controllers/backup.js b/src/js/controllers/backup.js index ec448379f..0e5bc2601 100644 --- a/src/js/controllers/backup.js +++ b/src/js/controllers/backup.js @@ -140,23 +140,31 @@ angular.module('copayApp.controllers').controller('backupController', function confirm() { self.backupError = false; - var walletClient = bwcService.getClient(); - var separator = self.useIdeograms ? '\u3000' : ' '; - var customSentence = lodash.pluck(self.customWords, 'word').join(separator); - var passphrase = $scope.passphrase || ''; + var customWordList = lodash.pluck(self.customWords, 'word'); - try { - walletClient.seedFromMnemonic(customSentence, { - network: fc.credentials.network, - passphrase: passphrase, - account: fc.credentials.account - }) - } catch (err) { - return backupError(err); + if (!lodash.isEqual(self.mnemonicWords, customWordList)) { + return backupError('Mnemonic string mismatch') } - if (walletClient.credentials.xPrivKey != self.xPrivKey) { - return backupError('Private key mismatch'); + if (self.mnemonicHasPassphrase) { + var walletClient = bwcService.getClient(); + var separator = self.useIdeograms ? '\u3000' : ' '; + var customSentence = customWordList.join(separator); + var passphrase = $scope.passphrase || ''; + + try { + walletClient.seedFromMnemonic(customSentence, { + network: fc.credentials.network, + passphrase: passphrase, + account: fc.credentials.account + }) + } catch (err) { + return backupError(err); + } + + if (walletClient.credentials.xPrivKey != self.xPrivKey) { + return backupError('Private key mismatch'); + } } $rootScope.$emit('Local/BackupDone');