diff --git a/src/main/java/acq/acq/src/Main.java b/src/main/java/acq/acq/src/Main.java index 87b9e5b..09a9896 100644 --- a/src/main/java/acq/acq/src/Main.java +++ b/src/main/java/acq/acq/src/Main.java @@ -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){ diff --git a/src/main/java/acs/acs/src/Main.java b/src/main/java/acs/acs/src/Main.java index ad93908..df5702f 100644 --- a/src/main/java/acs/acs/src/Main.java +++ b/src/main/java/acs/acs/src/Main.java @@ -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 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; } diff --git a/src/main/java/acs/acs/src/TokenManager.java b/src/main/java/acs/acs/src/TokenManager.java index 259b6a3..374895f 100644 --- a/src/main/java/acs/acs/src/TokenManager.java +++ b/src/main/java/acs/acs/src/TokenManager.java @@ -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 tokens = new HashSet(); + private final Map tokens = new HashMap(); - 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); } } diff --git a/src/main/java/externalApp/externalApp/src/Main.java b/src/main/java/externalApp/externalApp/src/Main.java index d4df166..8fbfdef 100644 --- a/src/main/java/externalApp/externalApp/src/Main.java +++ b/src/main/java/externalApp/externalApp/src/Main.java @@ -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);