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

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