adminapi/apxtri/apxchat.js
2024-10-30 16:20:47 +01:00

46 lines
1.5 KiB
JavaScript

const express = require('express');
const app = express();
const http = require('http');
const server = http.createServer(app);
const { Server } = require("socket.io");
const io = new Server(server);
const nodepgp = require('node-pgp'); // ou une autre bibliothèque PGP
const openpgp = require("openpgp");
// ... (initialisation de nodepgp)
io.on('connection', (socket) => {
// Gestion de la connexion d'un utilisateur
// ...
socket.on('message', async (data) => {
// Vérifier si le destinataire est connecté
// ...
// Générer une nouvelle clé de session
const sessionKey = await nodepgp.generateKey({
bits: 2048,
type: 'rsa'
});
// Chiffrer le message avec la clé publique du destinataire et la clé de session
const encryptedMessage = await nodepgp.encrypt({
message: data.message,
publicKeys: [destinataire.publicKey],
signingKeys: [sessionKey.privateKey]
});
// Envoyer la clé de session chiffrée avec la clé publique du destinataire
// et le message chiffré au destinataire
socket.to(destinataire.id).emit('message', {
message: encryptedMessage,
sessionKey: await nodepgp.encrypt({
message: sessionKey.publicKey,
publicKeys: [destinataire.publicKey]
})
});
});
});
server.listen(3030, () => {
console.log('apxchat listening on *:3030');
});