Merge remote-tracking branch 'origin/main'
This commit is contained in:
@@ -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){
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user