serveur
This commit is contained in:
@@ -1,6 +1,21 @@
|
|||||||
package fr.istic.chiffrement;
|
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.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 {
|
public class Serveur {
|
||||||
static int PORT = 9999;
|
static int PORT = 9999;
|
||||||
@@ -17,7 +32,7 @@ public class Serveur {
|
|||||||
|
|
||||||
public static ServerSocket creerSocketClassique() throws Exception {
|
public static ServerSocket creerSocketClassique() throws Exception {
|
||||||
// TODO : retourner une socket classique qui écoute sur le port 9999
|
// 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.
|
// + mot de passe store et clef : variable PASSWORD plus haut.
|
||||||
// + keystore, serveurstore.keys
|
// + 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 {
|
public static void readPingSendPong(ServerSocket server) throws Exception {
|
||||||
// accepter une connexion
|
boolean active = true;
|
||||||
// lire PING
|
while (active) {
|
||||||
// écrire PONG vers le client
|
// 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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user