Merge remote-tracking branch 'origin/main'

This commit is contained in:
2025-12-09 16:20:48 +01:00
4 changed files with 27 additions and 27 deletions

View File

@@ -1,18 +1,19 @@
package acq.acq.src; package acq.acq.src;
import java.io.IOException;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManagerFactory;
import common.common.src.crypto.KeyFactory; import common.common.src.crypto.KeyFactory;
import common.common.src.logger.Logger; import common.common.src.logger.Logger;
import static common.common.src.ports.Ports.ACQ_SERVER_PORT;
import static common.common.src.ports.Ports.ACS_SERVER_PORT;
import common.common.src.requestHandlers.SSLServerFactory; import common.common.src.requestHandlers.SSLServerFactory;
import common.common.src.socket.SocketManager; import common.common.src.socket.SocketManager;
import javax.net.ssl.*;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import static common.common.src.ports.Ports.*;
import java.io.IOException;
public class Main { public class Main {
private static final String HOST = "127.0.0.1"; private static final String HOST = "127.0.0.1";
@@ -35,9 +36,6 @@ public class Main {
ctx = SSLContext.getInstance("TLS"); ctx = SSLContext.getInstance("TLS");
ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
//requestACS(ctx, ACS_SERVER_PORT);
//requestACS(ctx, AUTH_PORT);
Thread ACQServer = SSLServerFactory.createServer(ctx, ACQ_SERVER_PORT, Main::handleRequest); Thread ACQServer = SSLServerFactory.createServer(ctx, ACQ_SERVER_PORT, Main::handleRequest);
ACQServer.start(); ACQServer.start();
@@ -49,8 +47,7 @@ public class Main {
Logger.displayReceived(response); Logger.displayReceived(response);
// contact ACS // Setup Connection ACS
SSLSocketFactory factory = ctx.getSocketFactory(); SSLSocketFactory factory = ctx.getSocketFactory();
SSLSocket socketACS = (SSLSocket) factory.createSocket(Main.HOST, ACS_SERVER_PORT); SSLSocket socketACS = (SSLSocket) factory.createSocket(Main.HOST, ACS_SERVER_PORT);
socketACS.startHandshake(); socketACS.startHandshake();
@@ -60,11 +57,12 @@ public class Main {
SocketManager.send(socketACS, request); SocketManager.send(socketACS, request);
Logger.displaySent(request); Logger.displaySent(request);
// Wait for ACK or NAK
response = SocketManager.readResponse(socketACS); response = SocketManager.readResponse(socketACS);
Logger.displayReceived(response); Logger.displayReceived(response);
// Send back ACK or NAK // Send back ACK or NAk To https server
SocketManager.send(serverSocket, response); SocketManager.send(serverSocket, response);
}catch (IOException ioe){ }catch (IOException ioe){

View File

@@ -103,7 +103,7 @@ public class Main {
Logger.displayInfo("Détails de la carte OK"); Logger.displayInfo("Détails de la carte OK");
PrivateKey privateKey = CryptoUtils.getPrivateKey(KEY_STORE_PATH, KEY_STORE_PWD, "acs"); PrivateKey privateKey = CryptoUtils.getPrivateKey(KEY_STORE_PATH, KEY_STORE_PWD, "acs");
String token = tokenManager.generateAndStoreToken(); String token = tokenManager.generateAndStoreTokenFor(creditCard.number());
String signedToken = CryptoUtils.signData(privateKey, token); String signedToken = CryptoUtils.signData(privateKey, token);
Map<String, Object> data = Map.of("token", token, "signature", signedToken); Map<String, Object> data = Map.of("token", token, "signature", signedToken);
@@ -128,7 +128,7 @@ public class Main {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
// 1. Date d'expiration est future // 1. Date d'expiration est future
if (cardDate.isAfter(now)) { if (now.isAfter(cardDate)) {
return false; return false;
} }

View File

@@ -2,18 +2,19 @@ package acs.acs.src;
import common.common.src.crypto.CryptoUtils; import common.common.src.crypto.CryptoUtils;
import java.util.HashSet; import java.util.HashMap;
import java.util.Map;
public class TokenManager { public class TokenManager {
private final HashSet<String> tokens = new HashSet<String>(); private final Map<String, String> tokens = new HashMap<String, String>();
public String generateAndStoreToken() { public String generateAndStoreTokenFor(String cardNumber) {
String token = CryptoUtils.generateToken(); String token = CryptoUtils.generateToken();
tokens.add(token); tokens.put(cardNumber, token);
return token; return token;
} }
public boolean isValidToken(String token) { public boolean isValidToken(String token) {
return tokens.contains(token); return tokens.containsValue(token);
} }
} }

View File

@@ -30,12 +30,13 @@ public class Main {
public static void main(String[] args) throws IOException, KeyStoreException, UnrecoverableKeyException, NoSuchAlgorithmException, InvalidKeyException, SignatureException, URISyntaxException, CertificateException, KeyManagementException { public static void main(String[] args) throws IOException, KeyStoreException, UnrecoverableKeyException, NoSuchAlgorithmException, InvalidKeyException, SignatureException, URISyntaxException, CertificateException, KeyManagementException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// String expirationDate = acquireStringInput( br,"Quel est la date d'expiration de la carte de crédit (MM/AA) ? "); String expirationDate = acquireStringInput( br,"Quel est la date d'expiration de la carte de crédit (MM/AA) ? ");
// String cardNumber = acquireStringInput(br, "Numéro de la carte de crédit : "); String cardNumber = acquireStringInput(br, "Numéro de la carte de crédit : ");
String expirationDate = "01/01"; // String expirationDate = "01/01"; // Invalid date for testing
// String expirationDate = "01/26"; // Valid date for testing
// String cardNumber = "0123456789012345"; // Invalid card for testing // String cardNumber = "0123456789012345"; // Invalid card for testing
String cardNumber = "123456789056"; // Valid card for testing // String cardNumber = "123456789056"; // Valid card for testing
String jsonString = buildCreditCardJson(expirationDate, cardNumber); String jsonString = buildCreditCardJson(expirationDate, cardNumber);