]> git.mdlowis.com Git - proto/achat.git/commitdiff
encrypted messages are working now with a crude way of adding contacts
authorMichael D. Lowis <mike@mdlowis.com>
Fri, 13 Aug 2021 03:42:13 +0000 (23:42 -0400)
committerMichael D. Lowis <mike@mdlowis.com>
Fri, 13 Aug 2021 03:42:13 +0000 (23:42 -0400)
static/client.js
static/index.html
static/keys/client1 [new file with mode: 0644]
static/keys/client2 [new file with mode: 0644]
static/msgs/1628825816262714239 [new file with mode: 0644]
static/msgs/1628825885083205337 [new file with mode: 0644]
static/msgs/1628825920184524947 [new file with mode: 0644]
static/msgs/1628826029482120345 [new file with mode: 0644]
static/style.css

index 1e11f0857413f727f3daff45e5f510e5f28536d1..5e0ff7bd7908a61e470b1811ed4180531837cac2 100644 (file)
@@ -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();
index 3c8c5413299c6a50b3e8f23e934f79fe9e766613..d8116ffa18b4e9bb2c99965e8befc9c7a66521c2 100644 (file)
   <body>
     <main>
         <header>
-            <div><input type="button" value="Connection"></input></div>
-            <div><input type="button" value="Contacts"></input></div>
+            <select id="contact" type="text">
+                <option value="anonymous">anonymous</option>
+            </select>
+            <button id="addContact">Add</button>
         </header>
 
         <section id="messages">
diff --git a/static/keys/client1 b/static/keys/client1
new file mode 100644 (file)
index 0000000..ad7f32a
--- /dev/null
@@ -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 (file)
index 0000000..3f269d2
--- /dev/null
@@ -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 (file)
index 0000000..5b7d224
--- /dev/null
@@ -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 (file)
index 0000000..97a714e
--- /dev/null
@@ -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 (file)
index 0000000..5a82e96
--- /dev/null
@@ -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 (file)
index 0000000..ca3173c
--- /dev/null
@@ -0,0 +1 @@
+ke58j9cPM37N2PI4t9wGnOe7L3AWsrpIweZBc/PZSvoGj3HgTafK253Vlzy/uMnT3oADJuktCjXRXe8p24aQK8+doCri73fdr/bY3pGgPRul/nqRyix5yy6j0rg5J0WtfgqWuErhPGXauBtaavxFAaSlRC/TrqUhPK4tWT/qRpI=
\ No newline at end of file
index 805a02edd6de841379ff85f2948d4467f7d6e93d..6fda480b608ca9a859b92b220a58453510ab4739 100644 (file)
@@ -18,7 +18,7 @@ main header {
     border: 1px solid black;
 }
 
-main header div {
+main header select {
     flex-grow: 1;
 }