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