chore: Refactor services

- OpenSSL and Truststore services should not be Beans by default
- Instead, they are using auto configurations to register the beans
This commit is contained in:
Magnus Leßmann (@MarkL4YG) 2024-11-23 20:37:17 +01:00
parent 8856d8773e
commit 938101db8f
7 changed files with 63 additions and 9 deletions

View file

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

View file

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

View file

@ -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.Map;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Service @Slf4j
@ConditionalOnMissingBean(CertificatePasswordProvider.class)
public class InMemoryCertificatePasswordProvider implements CertificatePasswordProvider { public class InMemoryCertificatePasswordProvider implements CertificatePasswordProvider {
private final Map<String, String> passwords = new ConcurrentHashMap<>(); private final Map<String, String> passwords = new ConcurrentHashMap<>();
@ -22,11 +20,13 @@ public class InMemoryCertificatePasswordProvider implements CertificatePasswordP
@Override @Override
public String getPasswordFor(String certificateFingerprint) { public String getPasswordFor(String certificateFingerprint) {
log.trace("Getting password for certificate fingerprint: {}", certificateFingerprint);
return Optional.ofNullable(passwords.get(certificateFingerprint)).orElseThrow(); return Optional.ofNullable(passwords.get(certificateFingerprint)).orElseThrow();
} }
@Override @Override
public void setPasswordFor(String certificateFingerprint, String password) { public void setPasswordFor(String certificateFingerprint, String password) {
log.trace("Setting password for certificate fingerprint: {}", certificateFingerprint);
Objects.requireNonNull(certificateFingerprint); Objects.requireNonNull(certificateFingerprint);
Objects.requireNonNull(password); Objects.requireNonNull(password);
passwords.put(certificateFingerprint, password); passwords.put(certificateFingerprint, password);

View file

@ -5,11 +5,11 @@ import static java.util.concurrent.TimeUnit.*;
import static org.slf4j.LoggerFactory.getLogger; import static org.slf4j.LoggerFactory.getLogger;
import de.mlessmann.certassist.DeleteRecursiveFileVisitor; import de.mlessmann.certassist.DeleteRecursiveFileVisitor;
import de.mlessmann.certassist.ExecutableResolver;
import de.mlessmann.certassist.except.CommandLineOperationException; import de.mlessmann.certassist.except.CommandLineOperationException;
import de.mlessmann.certassist.except.UnresolvableCLIDependency; import de.mlessmann.certassist.except.UnresolvableCLIDependency;
import de.mlessmann.certassist.openssl.CertificateRequest.RequestType; import de.mlessmann.certassist.openssl.CertificateRequest.RequestType;
import de.mlessmann.certassist.openssl.CertificateSubject.CertificateSubjectBuilder; import de.mlessmann.certassist.openssl.CertificateSubject.CertificateSubjectBuilder;
import de.mlessmann.certassist.service.ExecutableResolver;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.nio.file.Files; import java.nio.file.Files;

View file

@ -1,4 +1,4 @@
package de.mlessmann.certassist; package de.mlessmann.certassist.service;
import de.mlessmann.certassist.except.UnresolvableCLIDependency; import de.mlessmann.certassist.except.UnresolvableCLIDependency;
import java.io.File; import java.io.File;

View file

@ -6,8 +6,9 @@ import de.mlessmann.certassist.keystore.KeyStoreManager;
import de.mlessmann.certassist.keystore.TruststoreManager; import de.mlessmann.certassist.keystore.TruststoreManager;
import de.mlessmann.certassist.openssl.CertificateProvider; import de.mlessmann.certassist.openssl.CertificateProvider;
import de.mlessmann.certassist.openssl.CertificateUsage; import de.mlessmann.certassist.openssl.CertificateUsage;
import de.mlessmann.certassist.openssl.InMemoryCertificatePasswordProvider;
import de.mlessmann.certassist.openssl.OpenSSLCertificateCreator; import de.mlessmann.certassist.openssl.OpenSSLCertificateCreator;
import de.mlessmann.certassist.service.InMemoryCertificatePasswordProvider; import de.mlessmann.certassist.service.ExecutableResolver;
import java.io.IOException; import java.io.IOException;
import java.net.ServerSocket; import java.net.ServerSocket;
import java.nio.file.Path; import java.nio.file.Path;

View file

@ -5,6 +5,7 @@ import static org.mockito.Mockito.*;
import de.mlessmann.certassist.openssl.*; import de.mlessmann.certassist.openssl.*;
import de.mlessmann.certassist.openssl.CertificateRequest.RequestType; import de.mlessmann.certassist.openssl.CertificateRequest.RequestType;
import de.mlessmann.certassist.service.ExecutableResolver;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.Objects; import java.util.Objects;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;