This commit is contained in:
trochas
2025-02-26 16:33:38 +01:00
parent 7c939d37af
commit e67d44a4e0

View File

@@ -1,6 +1,21 @@
package fr.istic.chiffrement;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.security.KeyStore;
import java.util.Arrays;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLServerSocket;
import javax.net.ssl.SSLServerSocketFactory;
import javax.net.ssl.SSLSocket;
public class Serveur {
static int PORT = 9999;
@@ -17,7 +32,7 @@ public class Serveur {
public static ServerSocket creerSocketClassique() throws Exception {
// TODO : retourner une socket classique qui écoute sur le port 9999
return null;
return new ServerSocket(9999);
}
/**
@@ -34,12 +49,46 @@ public class Serveur {
// + mot de passe store et clef : variable PASSWORD plus haut.
// + keystore, serveurstore.keys
return null; // Retourner la socket correctement configurée
SSLContext context = SSLContext.getInstance("TLS");
KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(new FileInputStream("monstore.keys"), PASSWORD);
kmf.init(ks, PASSWORD);
context.init(kmf.getKeyManagers(), null, null);
Arrays.fill(PASSWORD, '0');
SSLServerSocketFactory factory = context.getServerSocketFactory();
SSLServerSocket server = (SSLServerSocket) factory.createServerSocket(9999);
server.setEnabledCipherSuites(new String[] { "TLS_ECDH_anon_WITH_AES_128_CBC_SHA" });
return server; // Retourner la socket correctement configurée
}
public static void readPingSendPong(ServerSocket server) throws Exception {
// accepter une connexion
// lire PING
// écrire PONG vers le client
boolean active = true;
while (active) {
// accepter une connexion
SSLSocket sslsocket = (SSLSocket) server.accept();
InputStream in = sslsocket.getInputStream();
OutputStream out = sslsocket.getOutputStream();
// lire PING
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String message = reader.readLine();
int id = -1;
if(message.startsWith("ping")){
String num = message.replaceFirst("^" + "ping", "");
try {
id = Integer.parseInt(num);
} catch (NumberFormatException e) {
}
}
// écrire PONG vers le client
out.write(("pong"+id).getBytes());
in.close();out.close();sslsocket.close();
}
}
}