From df5b48a74855a9369f0c4561317e74b546a2a844 Mon Sep 17 00:00:00 2001 From: ultra Date: Sat, 22 Jun 2013 22:01:00 -0400 Subject: [PATCH] You now own your data. Backup/Restore use cleartext json. --- static/cryptopad.css | 4 ++++ static/cryptopad.html | 46 +++++++++++++++++++++++++++++++++---------- 2 files changed, 40 insertions(+), 10 deletions(-) diff --git a/static/cryptopad.css b/static/cryptopad.css index 73b25d1..9ced7d8 100644 --- a/static/cryptopad.css +++ b/static/cryptopad.css @@ -3,6 +3,10 @@ font-family: monospace; } +#backupText { + width: 100%; +} + #title { width: 100%; } diff --git a/static/cryptopad.html b/static/cryptopad.html index d510997..92cc274 100644 --- a/static/cryptopad.html +++ b/static/cryptopad.html @@ -209,21 +209,31 @@ } function restoreKVS() { - var data = prompt("Please enter backup blob"); + var data = prompt("Please enter backup blob (any already existing pads will be overwritten!)"); var d = JSON.parse(data) - for (var k in d) { - setKVSItem(k, d[k]); - } - key = $("#password").val(); - getKVSItem(hashSomething("pads"),padsLoaded); + for (var k in d) { + + setKVSItem(hashTitle(k), sjcl.encrypt(key, d[k], {iter: 2000, ks: 256})); + if ($.inArray(k, pads) == -1) { + pads.push(k); + addPadList(k); + } + } + savePads(); } function doBackup() { backup = new Object(); - backupWaiting = 1 + pads.length; - backupKVS(hashSomething("pads")); + backupWaiting = pads.length; for (var pad in pads) { - backupKVS(hashTitle(pads[pad])); + getKVSItem(hashTitle(pads[pad]), function(data) { + backup[pads[pad]] = sjcl.decrypt(key, data); + backupWaiting--; + if (backupWaiting == 0) { + $("#backupDlg").modal(); + $("#backupText").val(JSON.stringify(backup)) + } + }); } } @@ -295,6 +305,9 @@ // set up buttons + $("#backupCloseBtn").click(function () { + $("#backupDlg").modal("hide") + }) $("#backuper").click(doBackup); $("#restorer").click(restoreKVS); $("#submitter").click(saveNote); @@ -310,7 +323,20 @@ $(document).ready(init); - + +