From 074e691cf99a8cec0e0bc00b44e6b6e8602bc63d Mon Sep 17 00:00:00 2001 From: Brendon Duncan Date: Thu, 28 Jun 2018 21:38:14 +1200 Subject: [PATCH] Removing encryption key if it already exists from a previous installation. --- src/js/services/encryptionService.js | 13 +++++++++- src/js/services/mobileSecureStorageService.js | 26 +++++++++++++++++++ src/js/services/secureStorageService.js | 14 ++++++++-- src/js/services/storageService.js | 2 ++ 4 files changed, 52 insertions(+), 3 deletions(-) diff --git a/src/js/services/encryptionService.js b/src/js/services/encryptionService.js index a73a28ed9..f87a1f4f3 100644 --- a/src/js/services/encryptionService.js +++ b/src/js/services/encryptionService.js @@ -10,7 +10,8 @@ var service = { decrypt: decrypt, - encrypt: encrypt + encrypt: encrypt, + removeKeyIfExists: removeKeyIfExists }; return service; @@ -141,5 +142,15 @@ }); }; + function removeKeyIfExists() { + secureStorageService.remove(storageKey, function onKeyRemoved(err){ + if (err) { + $log.Error('Error removing key.', err); + return; + } + $log.debug('Key removed.'); + }); + } + }); })(); \ No newline at end of file diff --git a/src/js/services/mobileSecureStorageService.js b/src/js/services/mobileSecureStorageService.js index f9994fdf8..890cd3f67 100644 --- a/src/js/services/mobileSecureStorageService.js +++ b/src/js/services/mobileSecureStorageService.js @@ -57,6 +57,32 @@ angular.module('copayApp.services').factory('mobileSecureStorageService', functi key); }; + root.remove = function(key, cb) { + + if (!platformInfo.isMobile) { + cb(new Error('mobileSecureStorageService is only available on mobile.')); + } + + if (!isReady) { + if (initialisationFailed) { + cb(new Error('mobileSecureStorageService initialisation failed.')); + } else { + pending.push(function(){ root.remove(key, cb); }); + } + return; + } + + storage.remove( + function (value) { + cb(); + }, + function (error) { + cb(new Error(error)); + }, + key); + + }; + root.set = function(key, value, cb) { if (!platformInfo.isMobile) { diff --git a/src/js/services/secureStorageService.js b/src/js/services/secureStorageService.js index c066109c2..b4d9a6fc3 100644 --- a/src/js/services/secureStorageService.js +++ b/src/js/services/secureStorageService.js @@ -16,7 +16,17 @@ angular.module('copayApp.services').factory('secureStorageService', function(des } else { // Browser localStorageService.get(alteredKeyIndicatingDesireForSecureStorage(k), cb); } - } + }; + + root.remove = function(k, cb) { + if (platformInfo.isMobile) { + mobileSecureStorageService.remove(k, cb); + } else if (platformInfo.isNW) { + desktopSecureStorageService.remove(k, cb); + } else { // Browser + localStorageService.remove(alteredKeyIndicatingDesireForSecureStorage(k), cb); + } + }; root.set = function(k, v, cb) { if (platformInfo.isMobile) { @@ -26,7 +36,7 @@ angular.module('copayApp.services').factory('secureStorageService', function(des } else { // Browser localStorageService.set(alteredKeyIndicatingDesireForSecureStorage(k), v, cb); } - } + }; return root; }); \ No newline at end of file diff --git a/src/js/services/storageService.js b/src/js/services/storageService.js index 280b75135..8b1dfa1eb 100644 --- a/src/js/services/storageService.js +++ b/src/js/services/storageService.js @@ -269,6 +269,8 @@ angular.module('copayApp.services') if (!profileStr) { $log.debug('No string loaded, returning nothing.'); + // Don't want to use the same key as a previous installation + encryptionService.removeKeyIfExists(); return cb(null, null); }