ECDH key exchange
This commit is contained in:
@@ -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'), '');
|
||||
|
||||
Reference in New Issue
Block a user