ECDH key exchange

This commit is contained in:
2025-03-04 18:58:43 +01:00
parent 44d2446872
commit 834267399f
3 changed files with 88 additions and 3 deletions

View File

@@ -1,4 +1,37 @@
import { genKeys, sharedKey } from "./ecdh.js";
const socket = io();
let secret = null;
let sharedsecret = {};
socket.on('chat message', (msg, room) => {
console.log(`received: ${msg}`);
console.log(sharedsecret);
const item = document.createElement('li');
item.textContent = msg;
const messages = document.getElementById(`messages-${room}`);
messages.appendChild(item);
window.scrollTo(0, document.body.scrollHeight);
});
socket.on('connected', (user_pubkey) => {
const keys = genKeys();
secret = keys.privkey;
socket.emit('key exchange', user_pubkey, toHexString(keys.pubkey));
});
socket.on('key exchange', (user_pubkey, pubkey) => {
const keys = genKeys();
secret = keys.privkey
sharedsecret[user_pubkey] = sharedKey(secret, fromHexString(pubkey));
socket.emit('key exchange 2', user_pubkey, toHexString(keys.pubkey));
console.log(`shared secret: ${toHexString(sharedsecret[user_pubkey])}`);
});
socket.on('key exchange 2', (user_pubkey, pubkey) => {
sharedsecret[user_pubkey] = sharedKey(secret, fromHexString(pubkey));
console.log(`shared secret: ${toHexString(sharedsecret[user_pubkey])}`);
});
export function create_listener(form, input) {
form.addEventListener('submit', function(e) {
@@ -9,3 +42,9 @@ export function create_listener(form, input) {
}
});
}
const fromHexString = (hexString) =>
Uint8Array.from(hexString.match(/.{1,2}/g).map((byte) => parseInt(byte, 16)));
const toHexString = (bytes) =>
bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');