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:
parent
8856d8773e
commit
3620a12872
7 changed files with 63 additions and 9 deletions
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
|
@ -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);
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Add table
Reference in a new issue