diff --git a/bower.json b/bower.json index c896d33a4..cdd5f0b9c 100644 --- a/bower.json +++ b/bower.json @@ -13,6 +13,7 @@ "peerjs": "~0.3.8", "angular-mocks": "~1.2.14", "mocha": "~1.18.2", - "chai": "~1.9.1" + "chai": "~1.9.1", + "crypto-js": "http://crypto-js.googlecode.com/files/CryptoJS%20v3.1.2.zip" } } diff --git a/index.html b/index.html index 402bc3c89..4ff602054 100644 --- a/index.html +++ b/index.html @@ -271,6 +271,7 @@ + diff --git a/js/models/storage/Encrypted.js b/js/models/storage/Encrypted.js index f60a15fd1..f1a682159 100644 --- a/js/models/storage/Encrypted.js +++ b/js/models/storage/Encrypted.js @@ -3,27 +3,68 @@ var imports = require('soop').imports(); function Storage() { - // TODO } +Storage.prototype._getPwd = function() { + var pwd = prompt('Please enter your password'); + return pwd; +} + +Storage.prototype._encrypt = function(data) { + return CryptoJS.AES.encrypt("Message", "Secret Passphrase"); +}; + +Storage.prototype._decrypt = function(encrypted) { + return CryptoJS.AES.decrypt(encrypted, "Secret Passphrase"); +}; + +Storage.prototype._read = function(k) { + var ret; + try { + ret = JSON.parse(localStorage.getItem(k)); + } catch (e) {}; + return ret; +}; + + // get value by key -Storage.prototype.get = function(k) { - // TODO +Storage.prototype.getGlobal = function(k) { + return this._read(k); }; // set value for key -Storage.prototype.set = function(k,v) { - // TODO +Storage.prototype.setGlobal = function(k,v) { + localStorage.setItem(k, JSON.stringify(v)); }; // remove value for key -Storage.prototype.remove = function(k) { - // TODO +Storage.prototype.removeGlobal = function(k) { + localStorage.removeItem(k); +}; + + + +Storage.prototype._key = function(walletId, k) { + return walletId + '::' + k; +}; +// get value by key +Storage.prototype.get = function(walletId, k) { + return this._read(localStorage.getItem(this._key(walletId,k))); +}; + +// set value for key +Storage.prototype.set = function(walletId, k,v) { + this.setGlobal(this._key(walletId,k), v); +}; + +// remove value for key +Storage.prototype.remove = function(walletId, k) { + localStorage.removeItem(this._key(walletId,k)); }; // remove all values Storage.prototype.clearAll = function() { - // TODO + localStorage.clear(); }; module.exports = require('soop')(Storage); diff --git a/js/models/storage/Plain.js b/js/models/storage/Plain.js index 96994084d..3101c82ec 100644 --- a/js/models/storage/Plain.js +++ b/js/models/storage/Plain.js @@ -3,7 +3,6 @@ var imports = require('soop').imports(); function Storage() { - this.data = {}; } Storage.prototype._read = function(k) { @@ -42,12 +41,12 @@ Storage.prototype.get = function(walletId, k) { // set value for key Storage.prototype.set = function(walletId, k,v) { - localStorage.setItem(this._key(walletId,k), JSON.stringify(v)); + this.setGlobal(this._key(walletId,k), v); }; // remove value for key Storage.prototype.remove = function(walletId, k) { - localStorage.removeItem(this._key(walletId,k)); + this.removeGlobal(this._key(walletId,k)); }; // remove all values