KeyStoreFactory Class — spring-boot Architecture
Architecture documentation for the KeyStoreFactory class in KeyStoreFactory.java from the spring-boot codebase.
Entity Profile
Source Code
buildpack/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/docker/ssl/KeyStoreFactory.java lines 38–99
final class KeyStoreFactory {
private static final char[] NO_PASSWORD = {};
private KeyStoreFactory() {
}
/**
* Create a new {@link KeyStore} populated with the certificate stored at the
* specified file path and an optional private key.
* @param certPath the path to the certificate authority file
* @param keyPath the path to the private file
* @param alias the alias to use for KeyStore entries
* @return the {@code KeyStore}
*/
static KeyStore create(Path certPath, @Nullable Path keyPath, String alias) {
try {
KeyStore keyStore = getKeyStore();
String certificateText = Files.readString(certPath);
List<X509Certificate> certificates = PemCertificateParser.parse(certificateText);
PrivateKey privateKey = getPrivateKey(keyPath);
try {
addCertificates(keyStore, certificates.toArray(X509Certificate[]::new), privateKey, alias);
}
catch (KeyStoreException ex) {
throw new IllegalStateException("Error adding certificates to KeyStore: " + ex.getMessage(), ex);
}
return keyStore;
}
catch (GeneralSecurityException | IOException ex) {
throw new IllegalStateException("Error creating KeyStore: " + ex.getMessage(), ex);
}
}
private static KeyStore getKeyStore()
throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException {
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(null);
return keyStore;
}
private static @Nullable PrivateKey getPrivateKey(@Nullable Path path) throws IOException {
if (path != null && Files.exists(path)) {
String text = Files.readString(path);
return PemPrivateKeyParser.parse(text);
}
return null;
}
private static void addCertificates(KeyStore keyStore, X509Certificate[] certificates,
@Nullable PrivateKey privateKey, String alias) throws KeyStoreException {
if (privateKey != null) {
keyStore.setKeyEntry(alias, privateKey, NO_PASSWORD, certificates);
}
else {
for (int index = 0; index < certificates.length; index++) {
keyStore.setCertificateEntry(alias + "-" + index, certificates[index]);
}
}
}
}
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free