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;
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.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.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 {
private static final String HOST = "127.0.0.1";
@@ -35,9 +36,6 @@ public class Main {
ctx = SSLContext.getInstance("TLS");
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);
ACQServer.start();
@@ -49,8 +47,7 @@ public class Main {
Logger.displayReceived(response);
// contact ACS
// Setup Connection ACS
SSLSocketFactory factory = ctx.getSocketFactory();
SSLSocket socketACS = (SSLSocket) factory.createSocket(Main.HOST, ACS_SERVER_PORT);
socketACS.startHandshake();
@@ -60,11 +57,12 @@ public class Main {
SocketManager.send(socketACS, request);
Logger.displaySent(request);
// Wait for ACK or NAK
response = SocketManager.readResponse(socketACS);
Logger.displayReceived(response);
// Send back ACK or NAK
// Send back ACK or NAk To https server
SocketManager.send(serverSocket, response);
}catch (IOException ioe){

View File

@@ -103,7 +103,7 @@ public class Main {
Logger.displayInfo("Détails de la carte OK");
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);
Map<String, Object> data = Map.of("token", token, "signature", signedToken);
@@ -128,7 +128,7 @@ public class Main {
LocalDateTime now = LocalDateTime.now();
// 1. Date d'expiration est future
if (cardDate.isAfter(now)) {
if (now.isAfter(cardDate)) {
return false;
}

View File

@@ -2,18 +2,19 @@ package acs.acs.src;
import common.common.src.crypto.CryptoUtils;
import java.util.HashSet;
import java.util.HashMap;
import java.util.Map;
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();
tokens.add(token);
tokens.put(cardNumber, token);
return 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 {
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 cardNumber = acquireStringInput(br, "Numéro de la carte de crédit : ");
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 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 = "123456789056"; // Valid card for testing
// String cardNumber = "123456789056"; // Valid card for testing
String jsonString = buildCreditCardJson(expirationDate, cardNumber);