From: Michael D. Lowis Date: Fri, 13 Aug 2021 03:42:13 +0000 (-0400) Subject: encrypted messages are working now with a crude way of adding contacts X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=76c3f4d92e5a2d2e8d25abc1473742a95d0f84f8;p=proto%2Fachat.git encrypted messages are working now with a crude way of adding contacts --- diff --git a/static/client.js b/static/client.js index 1e11f08..5e0ff7b 100644 --- a/static/client.js +++ b/static/client.js @@ -16,16 +16,19 @@ const Client = ((state = {keys: {}})=>({ log: (msg)=>{ const element = document.createElement('DIV'); element.textContent += msg + '\n'; - const messages = document.getElementById('messages') messages.appendChild(element); messages.scrollTop = messages.scrollHeight; }, send: ()=>{ if (message.value.length > 0) { - Client.log("me: " + message.value); - state.conn.send(message.value); - message.value = ""; + const key = state.keys[contact.value]; + if (key) { + Client.log("me: " + message.value); + const msg = key.encrypt(message.value); + state.conn.send(msg); + message.value = ""; + } } }, @@ -46,18 +49,22 @@ const Client = ((state = {keys: {}})=>({ keysValid: ()=> state.keys.private.decrypt(state.keys.public.encrypt("test")), - getFile: (file) => fetch(file).then((resp) => resp.text()), + getFile: (file) => fetch(file).then((resp)=>{ + if (!resp.ok) { throw "failed to fetch key" }; + return resp.text(); + }), - addContact: (name)=>{ - Client.getFile('./keys/' + name) - .then((key) => state.keys[name] = Client.loadKey(name, key)); + addContact: (name, cbfn = ()=>{})=>{ + Client.getFile('./keys/' + name).then((key)=>{ + state.keys[name] = Client.loadKey(name, key); + cbfn(); + }); }, getMessage: (id)=>{ Client.getFile('./msgs/' + id).then((msg)=>{ - Client.log('them(raw): ' + msg); const text = state.keys.private.decrypt(msg); - if (text) { Client.log(text); } + if (text) { Client.log("them: " + text); } }); }, @@ -108,6 +115,16 @@ connect.onclick = ()=>{ }) } +addContact.onclick = ()=>{ + const name = prompt("Enter name:", ""); + Client.addContact(name, ()=>{ + const el = document.createElement('OPTION'); + el.value = name; + el.textContent = name; + contact.appendChild(el); + }); +} + // Try connecting based on local storage (()=>{ Client.init(); diff --git a/static/index.html b/static/index.html index 3c8c541..d8116ff 100644 --- a/static/index.html +++ b/static/index.html @@ -10,8 +10,10 @@
-
-
+ +
diff --git a/static/keys/client1 b/static/keys/client1 new file mode 100644 index 0000000..ad7f32a --- /dev/null +++ b/static/keys/client1 @@ -0,0 +1,6 @@ +-----BEGIN PUBLIC KEY----- +MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCT2vBK6ZLKgnvBW+4giIu52iJS +472VCjr7Ju9szKSVhvqUc8M72obrjINjZGkCts1QkvZjvczHF8jbMNq6dgk6YO3+ +mJAMDoGT3UhhjHBS4t3p715IEIaF0rfd0L0XPOJnd77ecUSHsnKXyFcDTnWNiWlZ +4hg1K15W++TaEpC25wIDAQAB +-----END PUBLIC KEY----- diff --git a/static/keys/client2 b/static/keys/client2 new file mode 100644 index 0000000..3f269d2 --- /dev/null +++ b/static/keys/client2 @@ -0,0 +1,6 @@ +-----BEGIN PUBLIC KEY----- +MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7MFroGw6N+zRy+7k3Bl9UiNWh +t0hkJL35l4DpDY8gLTxQ0ekZe3EVytZBgAC/HT3S9N/v4w565cVsCH1OuRhtp0v9 +L/pOOdevZ+CiNwn+7TQEwXBBC5FZGDwEp1cxvNADjoJV1E5KJXNMpH3+8KD/0Eu0 +xNmBML0R/MbLJ3T0dwIDAQAB +-----END PUBLIC KEY----- diff --git a/static/msgs/1628825816262714239 b/static/msgs/1628825816262714239 new file mode 100644 index 0000000..5b7d224 --- /dev/null +++ b/static/msgs/1628825816262714239 @@ -0,0 +1 @@ +jhXSntPXMr2jvdoybZCYzKnZSf6rVC4Hu8qcs6jDyYJy2yd1AG2pZ0nbOLOi7zKqk9zUXJmpei1mH17a/FQGPJ16FwrgKk/7CTfhSshs4D0Vx5U/nzAKG6oiEX84gtxUAkSkO0rPB8g9KNWhLVGFTmGifx6IonPPvu+DAsraYxs= \ No newline at end of file diff --git a/static/msgs/1628825885083205337 b/static/msgs/1628825885083205337 new file mode 100644 index 0000000..97a714e --- /dev/null +++ b/static/msgs/1628825885083205337 @@ -0,0 +1 @@ +AZKZc5FW8gwblEdSzJ5GrqZrOoVVn2qU5IuOS9SrfTUfourXjU7xLVxvFc8bhWz8yM0HmXpA3Iacv7Oiw0AzZCH9eeeTdW5uUL54fB+t5/Ma6JTPgRtUUc3agLTrmNT2H9WUDOXPKx0vfASaLascG1Aw9IYq6a4gYgBvkripyW8= \ No newline at end of file diff --git a/static/msgs/1628825920184524947 b/static/msgs/1628825920184524947 new file mode 100644 index 0000000..5a82e96 --- /dev/null +++ b/static/msgs/1628825920184524947 @@ -0,0 +1 @@ +PIXLROUfrOD0iUcEySGlAai23q/rf5JiQLuzlEmKniO5d+jz4F10CWDAUDQTZLXJTfOOZWUvg0KnzLAagWopY35JxuisveDWI1WuEp56SkjHkSeH4gGxWHRUivf2rbzq0qxk+yNgrd6LKBLFzjGvNATXtmnIB18IqBrw9chiCMU= \ No newline at end of file diff --git a/static/msgs/1628826029482120345 b/static/msgs/1628826029482120345 new file mode 100644 index 0000000..ca3173c --- /dev/null +++ b/static/msgs/1628826029482120345 @@ -0,0 +1 @@ +ke58j9cPM37N2PI4t9wGnOe7L3AWsrpIweZBc/PZSvoGj3HgTafK253Vlzy/uMnT3oADJuktCjXRXe8p24aQK8+doCri73fdr/bY3pGgPRul/nqRyix5yy6j0rg5J0WtfgqWuErhPGXauBtaavxFAaSlRC/TrqUhPK4tWT/qRpI= \ No newline at end of file diff --git a/static/style.css b/static/style.css index 805a02e..6fda480 100644 --- a/static/style.css +++ b/static/style.css @@ -18,7 +18,7 @@ main header { border: 1px solid black; } -main header div { +main header select { flex-grow: 1; }