From fbc875a504751cace9d1d3a02706fec99fb0c759 Mon Sep 17 00:00:00 2001 From: Laurent Date: Sat, 6 Dec 2025 10:32:33 +0100 Subject: [PATCH] Extract trust store and key store methods --- src/main/java/acq/acq/src/Main.java | 89 +++++++++++++------ .../common/src/socket/SocketManager.java | 6 ++ 2 files changed, 68 insertions(+), 27 deletions(-) diff --git a/src/main/java/acq/acq/src/Main.java b/src/main/java/acq/acq/src/Main.java index cb11032..7786da8 100644 --- a/src/main/java/acq/acq/src/Main.java +++ b/src/main/java/acq/acq/src/Main.java @@ -1,35 +1,30 @@ package acq.acq.src; // File: AcqClient.java +import common.common.src.logger.Logger; +import common.common.src.socket.SocketManager; + import javax.net.ssl.*; import java.io.*; import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.UnrecoverableKeyException; +import java.security.cert.CertificateException; public class Main { + + private static final String KEY_STORE_PATH = "assets/certs/acq.p12"; + private static final String KEY_STORE_PWD = "hepl"; + + private static final String TRUST_STORE_PATH = "assets/certs/acq-trust.jks"; + private static final String TRUST_STORE_PWD = "heplhepl"; + public static void main(String[] args) throws Exception { String host = "localhost"; int port = 8443; - // If client needs to present cert (mTLS) - String keystorePath = "assets/certs/acq.p12"; - char[] keystorePass = "hepl".toCharArray(); - - // Truststore to trust the server's CA - String truststorePath = "assets/certs/acq-trust.jks"; - char[] truststorePass = "heplhepl".toCharArray(); - - KeyStore ks = KeyStore.getInstance("PKCS12"); - try (FileInputStream fis = new FileInputStream(keystorePath)) { - ks.load(fis, keystorePass); - } - KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509"); - kmf.init(ks, keystorePass); - - KeyStore ts = KeyStore.getInstance("JKS"); - try (FileInputStream fis = new FileInputStream(truststorePath)) { - ts.load(fis, truststorePass); - } - TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509"); - tmf.init(ts); + KeyManagerFactory kmf = loadKeyStore(); + TrustManagerFactory tmf = loadTrustStore(); SSLContext ctx = SSLContext.getInstance("TLS"); ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); @@ -37,14 +32,54 @@ public class Main { SSLSocketFactory factory = ctx.getSocketFactory(); try (SSLSocket socket = (SSLSocket) factory.createSocket(host, port)) { socket.startHandshake(); - BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); - BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); - out.write("Hello ACS\n"); - out.flush(); + String message = "Hello ACS\n"; + SocketManager.send(socket, message); + Logger.displaySent(message); - String resp = in.readLine(); - System.out.println("Response from ACS: " + resp); + + String response = SocketManager.readResponse(socket); + Logger.displayReceived(response); + } catch (Exception e) { + e.printStackTrace(); } } + + private static KeyManagerFactory loadKeyStore() { + + KeyManagerFactory kmf = null; + + try (FileInputStream fis = new FileInputStream(KEY_STORE_PATH)) { + char[] keystorePass = KEY_STORE_PWD.toCharArray(); + + KeyStore ks = KeyStore.getInstance("PKCS12"); + ks.load(fis, keystorePass); + + kmf = KeyManagerFactory.getInstance("SunX509"); + kmf.init(ks, keystorePass); + } catch (Exception e) { + throw new RuntimeException(e); + } + + return kmf; + } + + private static TrustManagerFactory loadTrustStore() { + + TrustManagerFactory tmf = null; + + try (FileInputStream fis = new FileInputStream(TRUST_STORE_PATH)) { + char[] truststorePass = TRUST_STORE_PWD.toCharArray(); + + KeyStore ts = KeyStore.getInstance("JKS"); + ts.load(fis, truststorePass); + + tmf = TrustManagerFactory.getInstance("SunX509"); + tmf.init(ts); + } catch (Exception e){ + throw new RuntimeException(e); + } + + return tmf; + } } diff --git a/src/main/java/common/common/src/socket/SocketManager.java b/src/main/java/common/common/src/socket/SocketManager.java index a587108..0cbfc12 100644 --- a/src/main/java/common/common/src/socket/SocketManager.java +++ b/src/main/java/common/common/src/socket/SocketManager.java @@ -2,6 +2,7 @@ package common.common.src.socket; import java.io.BufferedReader; import java.io.IOException; +import java.io.InputStreamReader; import java.io.OutputStream; import java.net.Socket; import java.nio.charset.StandardCharsets; @@ -17,4 +18,9 @@ public class SocketManager { public static String readResponse(BufferedReader reader) throws IOException { return reader.readLine(); } + + public static String readResponse(Socket socket) throws IOException { + BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); + return reader.readLine(); + } }