Desktop secure storage update, fallback to previous storage on error

This commit is contained in:
Sebastiaan Pasma 2018-06-11 11:22:04 +02:00
commit 900630807a
2 changed files with 19 additions and 3 deletions

View file

@ -77,7 +77,7 @@
"grunt-exec": "^1.0.0",
"grunt-nw-builder": "^2.0.3",
"grunt-sass": "^1.2.0",
"keytar": "^4.2.1",
"keytar": "git+https://github.com/spasma/node-keytar.git",
"load-grunt-tasks": "^3.5.0",
"shelljs": "^0.3.0",
"android-versions": "^1.2.1",

View file

@ -1,12 +1,22 @@
'use strict';
angular.module('copayApp.services').factory('desktopSecureStorageService', function($log, appConfigService, platformInfo, lodash) {
angular.module('copayApp.services').factory('desktopSecureStorageService', function($log, appConfigService, platformInfo, lodash, localStorageService) {
var root = {};
var storage = null;
var serviceName = appConfigService.packageNameId;
var initialisationFailed = false;
if (platformInfo.isNW) {
storage = require('keytar');
try {
var os = require('os');
var arch = (os.arch() === 'x64' || process.env.hasOwnProperty('PROCESSOR_ARCHITEW6432')) ? 'x64':'ia32';
var file = './keytar/keytar-prebuild-v4.1.1-node-v51-'+process.platform+'-'+arch+'.node';
storage = require('keytar');
storage.setKeytarInstance(require(file));
} catch (e) {
console.log(e);
initialisationFailed = true;
}
}
root.get = function(key, cb) {
@ -15,6 +25,9 @@ angular.module('copayApp.services').factory('desktopSecureStorageService', funct
return;
}
if (initialisationFailed)
return localStorageService.get(key, cb);
storage.getPassword(serviceName, key).then(function(result) {
return cb(null, result); // XX SP: result is null if no value is found as it should
}).catch(function (error) {
@ -28,6 +41,9 @@ angular.module('copayApp.services').factory('desktopSecureStorageService', funct
return;
}
if (initialisationFailed)
return localStorageService.set(key, value, cb);
if (lodash.isObject(value)) {
value = JSON.stringify(value);
}