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

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()
.then(resolve)
.catch((err) => {

View File

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