ACS : Only keep one token per card number

This commit is contained in:
Matthias Guillitte
2025-12-09 11:03:36 +01:00
parent 852f24532f
commit 49b7366187
2 changed files with 7 additions and 6 deletions

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);

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);
} }
} }