refactor key exchange

This commit is contained in:
Sam Hadow 2025-03-09 15:18:46 +01:00
parent 46c495f126
commit edeb1b7c73
3 changed files with 24 additions and 24 deletions

View File

@ -46,7 +46,7 @@ io.on('connection', async (socket) => {
console.log('A user connected'); console.log('A user connected');
const peers = await database.getPeers(session.publicKey); const peers = await database.getPeers(session.publicKey);
peers.forEach(peer => { peers.forEach(peer => {
socket.to(peer).emit('connected', session.publicKey); socket.to(peer).emit('key exchange', session.publicKey, null, 0);
}); });
socket.on('disconnect', () => { socket.on('disconnect', () => {
console.log('User disconnected'); console.log('User disconnected');
@ -60,11 +60,8 @@ io.on('connection', async (socket) => {
console.log('message: ' + msg + ', sender: ' + session.id); console.log('message: ' + msg + ', sender: ' + session.id);
console.log(session.publicKey); console.log(session.publicKey);
}); });
socket.on('key exchange', (user_pubkey, pubkey) => { socket.on('key exchange', (user_pubkey, pubkey, part) => {
socket.to(user_pubkey).emit('key exchange', session.publicKey, pubkey); socket.to(user_pubkey).emit('key exchange', session.publicKey, pubkey, part);
});
socket.on('key exchange 2', (user_pubkey, pubkey) => {
socket.to(user_pubkey).emit('key exchange 2', session.publicKey, pubkey);
}); });
}); });

View File

@ -193,7 +193,7 @@ const database = {
} }
}; };
const retryWithDelay = (operation, retries = 5, delay = 5000) => new Promise((resolve, reject) => { const retryWithDelay = (operation, retries = 5, delay = 7500) => new Promise((resolve, reject) => {
return operation() return operation()
.then(resolve) .then(resolve)
.catch((err) => { .catch((err) => {

View File

@ -14,23 +14,26 @@ socket.on('chat message', (msg, room) => {
window.scrollTo(0, document.body.scrollHeight); window.scrollTo(0, document.body.scrollHeight);
}); });
socket.on('connected', (user_pubkey) => { socket.on('key exchange', (user_pubkey, pubkey, part) => {
const keys = genKeys(); let keys = null;
switch (part) {
case 0:
keys = genKeys();
secret = keys.privkey; secret = keys.privkey;
socket.emit('key exchange', user_pubkey, toHexString(keys.pubkey)); socket.emit('key exchange', user_pubkey, toHexString(keys.pubkey), 1);
}); break;
case 1:
socket.on('key exchange', (user_pubkey, pubkey) => { keys = genKeys();
const keys = genKeys();
secret = keys.privkey secret = keys.privkey
sharedsecret[user_pubkey] = sharedKey(secret, fromHexString(pubkey)); sharedsecret[user_pubkey] = sharedKey(secret, fromHexString(pubkey));
socket.emit('key exchange 2', user_pubkey, toHexString(keys.pubkey)); socket.emit('key exchange', user_pubkey, toHexString(keys.pubkey), 2);
console.log(`shared secret: ${toHexString(sharedsecret[user_pubkey])}`); console.log(`shared secret: ${toHexString(sharedsecret[user_pubkey])}`);
}); break;
case 2:
socket.on('key exchange 2', (user_pubkey, pubkey) => {
sharedsecret[user_pubkey] = sharedKey(secret, fromHexString(pubkey)); sharedsecret[user_pubkey] = sharedKey(secret, fromHexString(pubkey));
console.log(`shared secret: ${toHexString(sharedsecret[user_pubkey])}`); console.log(`shared secret: ${toHexString(sharedsecret[user_pubkey])}`);
break;
}
}); });
export function create_listener(form, input) { export function create_listener(form, input) {