package net.lulli.certsigner.strategy.vault; import net.lulli.certsigner.network.VaultLocal; import net.lulli.certsigner.strategy.CASetupStrategy; import net.lulli.certsigner.ca.CaData; import java.util.Base64; import java.util.HashMap; import java.util.Objects; public class VaultCaSetup implements CASetupStrategy { private static String vaultEndpoint = System.getenv("VAULT_ENDPOINT"); private static String vaultToken = System.getenv("VAULT_TOKEN"); private static final String VAULT_PATH = "cert-auth"; private final VaultLocal vaultLocal; private final String serviceName; public VaultCaSetup(String serviceName) { Objects.requireNonNull(serviceName); this.serviceName = serviceName; this.vaultLocal = new VaultLocal(vaultEndpoint, vaultToken); } @Override public void initialize() { var rootSubject = "CN=root-cert, O=" + serviceName; var data = new HashMap(); CaData caData = CaData.withSubject(rootSubject); data.put("certificate", Base64.getEncoder().encodeToString(caData.certificate().getBytes())); data.put("privateKey", Base64.getEncoder().encodeToString(caData.privateKey().getBytes())); vaultLocal.storeSecret(VAULT_PATH + "/" + serviceName, data); } }