mirror of https://github.com/BTCPrivate/copay.git
Merge pull request #35 from eordano/fix/various
Adds various small fixes to Encrypted local storage
This commit is contained in:
commit
5f7f60f4b9
|
@ -55,9 +55,10 @@ var defaultConfig = {
|
|||
|
||||
plugins: {
|
||||
//LocalStorage: true,
|
||||
EncryptedLocalStorage: true,
|
||||
//GoogleDrive: true,
|
||||
//InsightStorage: true
|
||||
EncryptedInsightStorage: true
|
||||
//EncryptedInsightStorage: true
|
||||
},
|
||||
|
||||
EncryptedInsightStorage: {
|
||||
|
|
|
@ -209,14 +209,14 @@ Identity.isAvailable = function(email, opts, cb) {
|
|||
* @param {Function} cb
|
||||
*/
|
||||
Identity.prototype.storeWallet = function(wallet, cb) {
|
||||
preconditions.checkArgument(w && _.isObject(wallet));
|
||||
preconditions.checkArgument(wallet && _.isObject(wallet));
|
||||
|
||||
var val = wallet.toObj();
|
||||
var key = wallet.getStorageKey();
|
||||
|
||||
this.storage.setItem(key, val, function(err) {
|
||||
if (err) {
|
||||
log.debug('Wallet:' + w.getName() + ' couldnt be stored');
|
||||
log.debug('Wallet:' + wallet.getName() + ' couldnt be stored');
|
||||
return cb(err);
|
||||
}
|
||||
return cb();
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
var cryptoUtil = require('../util/crypto');
|
||||
var LocalStorage = require('./LocalStorage');
|
||||
var inherits = require('inherits');
|
||||
|
||||
function EncryptedLocalStorage(config) {
|
||||
LocalStorage.apply(this, [config]);
|
||||
}
|
||||
inherits(EncryptedLocalStorage, LocalStorage);
|
||||
|
||||
EncryptedLocalStorage.prototype.getItem = function(name, callback) {
|
||||
var key = cryptoUtil.kdf(this.password, this.email);
|
||||
LocalStorage.prototype.getItem.apply(this, [name, function(err, body) {
|
||||
var decryptedJson = cryptoUtil.decrypt(key, body);
|
||||
if (!decryptedJson) {
|
||||
return callback('Internal Error');
|
||||
}
|
||||
return callback(null, decryptedJson);
|
||||
}]);
|
||||
};
|
||||
|
||||
EncryptedLocalStorage.prototype.setItem = function(name, value, callback) {
|
||||
var key = cryptoUtil.kdf(this.password, this.email);
|
||||
if (!_.isString(value)) {
|
||||
value = JSON.stringify(value);
|
||||
}
|
||||
var record = cryptoUtil.encrypt(key, value);
|
||||
LocalStorage.prototype.setItem.apply(this, [name, record, callback]);
|
||||
};
|
||||
|
||||
module.exports = EncryptedLocalStorage;
|
|
@ -8,10 +8,12 @@ LocalStorage.prototype.init = function() {
|
|||
};
|
||||
|
||||
LocalStorage.prototype.setCredentials = function(email, password, opts) {
|
||||
this.email = email;
|
||||
this.password = password;
|
||||
};
|
||||
|
||||
LocalStorage.prototype.getItem = function(k,cb) {
|
||||
return cb(localStorage.getItem(k));
|
||||
return cb(null, localStorage.getItem(k));
|
||||
};
|
||||
|
||||
LocalStorage.prototype.setItem = function(k,v,cb) {
|
||||
|
@ -36,7 +38,7 @@ LocalStorage.prototype.allKeys = function(cb) {
|
|||
for(var i=0; i<l; i++)
|
||||
ret.push(localStorage.key(i));
|
||||
|
||||
return cb(ret);
|
||||
return cb(null, ret);
|
||||
};
|
||||
|
||||
module.exports = LocalStorage;
|
||||
|
|
|
@ -101,6 +101,9 @@ var createBundle = function(opts) {
|
|||
b.require('./js/plugins/EncryptedInsightStorage', {
|
||||
expose: '../plugins/EncryptedInsightStorage'
|
||||
});
|
||||
b.require('./js/plugins/EncryptedLocalStorage', {
|
||||
expose: '../plugins/EncryptedLocalStorage'
|
||||
});
|
||||
}
|
||||
|
||||
b.require('./config', {
|
||||
|
|
Loading…
Reference in New Issue