feat: Implement new services required or OpenSSL certificate creation
This commit is contained in:
parent
196d217bb7
commit
ac3821c949
7 changed files with 128 additions and 6 deletions
|
@ -10,11 +10,11 @@ import org.junit.jupiter.api.Test;
|
|||
|
||||
class TestOpenSSLCertificateCreator {
|
||||
|
||||
private CertPasswordProvider passwordProvider;
|
||||
private CertificatePasswordProvider passwordProvider;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
passwordProvider = mock(CertPasswordProvider.class);
|
||||
passwordProvider = mock(CertificatePasswordProvider.class);
|
||||
when(passwordProvider.generateNewPassword()).thenReturn("ABC-123");
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
package de.mlessmann.certassist.service;
|
||||
|
||||
import de.mlessmann.certassist.openssl.CertificatePasswordProvider;
|
||||
import java.security.SecureRandom;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class InMemoryCertificatePasswordProvider implements CertificatePasswordProvider {
|
||||
|
||||
private final Map<String, String> passwords = new ConcurrentHashMap<>();
|
||||
private static final String CHARACTERS =
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_=+[]{}|;:,.<>?";
|
||||
private static final int PASSPHRASE_LENGTH = 16;
|
||||
|
||||
@Override
|
||||
public String generateNewPassword() {
|
||||
SecureRandom random = new SecureRandom();
|
||||
StringBuilder passphrase = new StringBuilder(PASSPHRASE_LENGTH);
|
||||
for (int i = 0; i < PASSPHRASE_LENGTH; i++) {
|
||||
passphrase.append(CHARACTERS.charAt(random.nextInt(CHARACTERS.length())));
|
||||
}
|
||||
return passphrase.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPasswordFor(String certificateFingerprint) {
|
||||
return Optional.ofNullable(passwords.get(certificateFingerprint)).orElseThrow();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPasswordFor(String certificateFingerprint, String password) {
|
||||
Objects.requireNonNull(certificateFingerprint);
|
||||
Objects.requireNonNull(password);
|
||||
passwords.put(certificateFingerprint, password);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue