Merge pull request #35 from eordano/fix/various

Adds various small fixes to Encrypted local storage
This commit is contained in:
Matias Alejo Garcia 2014-10-27 12:11:22 -03:00
commit 5f7f60f4b9
5 changed files with 41 additions and 5 deletions

View file

@ -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;

View file

@ -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;