From 3620a12872da12bb16469aa2105906c9c10f90cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20Le=C3=9Fmann=20=28=40MarkL4YG=29?= Date: Sat, 23 Nov 2024 20:37:17 +0100 Subject: [PATCH] chore: Refactor services - OpenSSL and Truststore services should not be Beans by default - Instead, they are using auto configurations to register the beans --- .../keystore/AutoBootKeyStoreManagement.java | 26 +++++++++++++++++++ .../certassist/openssl/AutoBootOpenSSL.java | 26 +++++++++++++++++++ .../InMemoryCertificatePasswordProvider.java | 12 ++++----- .../openssl/OpenSSLCertificateCreator.java | 2 +- .../{ => service}/ExecutableResolver.java | 2 +- .../certassist/TestKeystoreCreation.java | 3 ++- .../TestOpenSSLCertificateCreator.java | 1 + 7 files changed, 63 insertions(+), 9 deletions(-) create mode 100644 src/main/java/de/mlessmann/certassist/keystore/AutoBootKeyStoreManagement.java create mode 100644 src/main/java/de/mlessmann/certassist/openssl/AutoBootOpenSSL.java rename src/{test/java/de/mlessmann/certassist/service => main/java/de/mlessmann/certassist/openssl}/InMemoryCertificatePasswordProvider.java (73%) rename src/main/java/de/mlessmann/certassist/{ => service}/ExecutableResolver.java (98%) diff --git a/src/main/java/de/mlessmann/certassist/keystore/AutoBootKeyStoreManagement.java b/src/main/java/de/mlessmann/certassist/keystore/AutoBootKeyStoreManagement.java new file mode 100644 index 0000000..570a9ef --- /dev/null +++ b/src/main/java/de/mlessmann/certassist/keystore/AutoBootKeyStoreManagement.java @@ -0,0 +1,26 @@ +package de.mlessmann.certassist.keystore; + +import de.mlessmann.certassist.openssl.CertificatePasswordProvider; +import de.mlessmann.certassist.openssl.OpenSSLCertificateCreator; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class AutoBootKeyStoreManagement { + + @Bean + @ConditionalOnMissingBean(KeyStoreManager.class) + public KeyStoreManager keystoreProvider( + OpenSSLCertificateCreator certificateCreator, + CertificatePasswordProvider passwordProvider + ) { + return new KeyStoreManager(certificateCreator, passwordProvider); + } + + @Bean + @ConditionalOnMissingBean(TruststoreManager.class) + public TruststoreManager truststoreProvider() { + return new TruststoreManager(); + } +} diff --git a/src/main/java/de/mlessmann/certassist/openssl/AutoBootOpenSSL.java b/src/main/java/de/mlessmann/certassist/openssl/AutoBootOpenSSL.java new file mode 100644 index 0000000..65b3050 --- /dev/null +++ b/src/main/java/de/mlessmann/certassist/openssl/AutoBootOpenSSL.java @@ -0,0 +1,26 @@ +package de.mlessmann.certassist.openssl; + +import de.mlessmann.certassist.service.ExecutableResolver; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class AutoBootOpenSSL { + + @Bean + @ConditionalOnMissingBean(CertificatePasswordProvider.class) + public CertificatePasswordProvider usageProvider() { + return new InMemoryCertificatePasswordProvider(); + } + + @Bean + @ConditionalOnMissingBean(CertificatePasswordProvider.class) + public OpenSSLCertificateCreator openSSLProvider( + ExecutableResolver executableResolver, + CertificatePasswordProvider passwordProvider, + CertificateProvider usageProvider + ) { + return new OpenSSLCertificateCreator(executableResolver, passwordProvider, usageProvider); + } +} diff --git a/src/test/java/de/mlessmann/certassist/service/InMemoryCertificatePasswordProvider.java b/src/main/java/de/mlessmann/certassist/openssl/InMemoryCertificatePasswordProvider.java similarity index 73% rename from src/test/java/de/mlessmann/certassist/service/InMemoryCertificatePasswordProvider.java rename to src/main/java/de/mlessmann/certassist/openssl/InMemoryCertificatePasswordProvider.java index cecc028..58a2c59 100644 --- a/src/test/java/de/mlessmann/certassist/service/InMemoryCertificatePasswordProvider.java +++ b/src/main/java/de/mlessmann/certassist/openssl/InMemoryCertificatePasswordProvider.java @@ -1,15 +1,13 @@ -package de.mlessmann.certassist.service; +package de.mlessmann.certassist.openssl; -import de.mlessmann.certassist.openssl.CertificatePasswordProvider; +import de.mlessmann.certassist.service.PassphraseService; import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.stereotype.Service; +import lombok.extern.slf4j.Slf4j; -@Service -@ConditionalOnMissingBean(CertificatePasswordProvider.class) +@Slf4j public class InMemoryCertificatePasswordProvider implements CertificatePasswordProvider { private final Map passwords = new ConcurrentHashMap<>(); @@ -22,11 +20,13 @@ public class InMemoryCertificatePasswordProvider implements CertificatePasswordP @Override public String getPasswordFor(String certificateFingerprint) { + log.trace("Getting password for certificate fingerprint: {}", certificateFingerprint); return Optional.ofNullable(passwords.get(certificateFingerprint)).orElseThrow(); } @Override public void setPasswordFor(String certificateFingerprint, String password) { + log.trace("Setting password for certificate fingerprint: {}", certificateFingerprint); Objects.requireNonNull(certificateFingerprint); Objects.requireNonNull(password); passwords.put(certificateFingerprint, password); diff --git a/src/main/java/de/mlessmann/certassist/openssl/OpenSSLCertificateCreator.java b/src/main/java/de/mlessmann/certassist/openssl/OpenSSLCertificateCreator.java index 060e73c..0e2a654 100644 --- a/src/main/java/de/mlessmann/certassist/openssl/OpenSSLCertificateCreator.java +++ b/src/main/java/de/mlessmann/certassist/openssl/OpenSSLCertificateCreator.java @@ -5,11 +5,11 @@ import static java.util.concurrent.TimeUnit.*; import static org.slf4j.LoggerFactory.getLogger; import de.mlessmann.certassist.DeleteRecursiveFileVisitor; -import de.mlessmann.certassist.ExecutableResolver; import de.mlessmann.certassist.except.CommandLineOperationException; import de.mlessmann.certassist.except.UnresolvableCLIDependency; import de.mlessmann.certassist.openssl.CertificateRequest.RequestType; import de.mlessmann.certassist.openssl.CertificateSubject.CertificateSubjectBuilder; +import de.mlessmann.certassist.service.ExecutableResolver; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; diff --git a/src/main/java/de/mlessmann/certassist/ExecutableResolver.java b/src/main/java/de/mlessmann/certassist/service/ExecutableResolver.java similarity index 98% rename from src/main/java/de/mlessmann/certassist/ExecutableResolver.java rename to src/main/java/de/mlessmann/certassist/service/ExecutableResolver.java index b6322c4..1c02b57 100644 --- a/src/main/java/de/mlessmann/certassist/ExecutableResolver.java +++ b/src/main/java/de/mlessmann/certassist/service/ExecutableResolver.java @@ -1,4 +1,4 @@ -package de.mlessmann.certassist; +package de.mlessmann.certassist.service; import de.mlessmann.certassist.except.UnresolvableCLIDependency; import java.io.File; diff --git a/src/test/java/de/mlessmann/certassist/TestKeystoreCreation.java b/src/test/java/de/mlessmann/certassist/TestKeystoreCreation.java index 71037ff..072146c 100644 --- a/src/test/java/de/mlessmann/certassist/TestKeystoreCreation.java +++ b/src/test/java/de/mlessmann/certassist/TestKeystoreCreation.java @@ -6,8 +6,9 @@ import de.mlessmann.certassist.keystore.KeyStoreManager; import de.mlessmann.certassist.keystore.TruststoreManager; import de.mlessmann.certassist.openssl.CertificateProvider; import de.mlessmann.certassist.openssl.CertificateUsage; +import de.mlessmann.certassist.openssl.InMemoryCertificatePasswordProvider; import de.mlessmann.certassist.openssl.OpenSSLCertificateCreator; -import de.mlessmann.certassist.service.InMemoryCertificatePasswordProvider; +import de.mlessmann.certassist.service.ExecutableResolver; import java.io.IOException; import java.net.ServerSocket; import java.nio.file.Path; diff --git a/src/test/java/de/mlessmann/certassist/TestOpenSSLCertificateCreator.java b/src/test/java/de/mlessmann/certassist/TestOpenSSLCertificateCreator.java index 456da58..95ccf2e 100644 --- a/src/test/java/de/mlessmann/certassist/TestOpenSSLCertificateCreator.java +++ b/src/test/java/de/mlessmann/certassist/TestOpenSSLCertificateCreator.java @@ -5,6 +5,7 @@ import static org.mockito.Mockito.*; import de.mlessmann.certassist.openssl.*; import de.mlessmann.certassist.openssl.CertificateRequest.RequestType; +import de.mlessmann.certassist.service.ExecutableResolver; import java.nio.file.Path; import java.util.Objects; import org.junit.jupiter.api.BeforeEach;