Skip to content

Commit

Permalink
Updated as per review
Browse files Browse the repository at this point in the history
  • Loading branch information
tsegismont committed Jun 17, 2020
1 parent 9df17f8 commit 7f9ea6b
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 70 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,12 @@

import static io.quarkus.credentials.CredentialsProvider.PASSWORD_PROPERTY_NAME;
import static io.quarkus.credentials.CredentialsProvider.USER_PROPERTY_NAME;
import static io.quarkus.vertx.core.runtime.SSLConfigHelper.*;
import static io.quarkus.vertx.core.runtime.SSLConfigHelper.configureJksKeyCertOptions;
import static io.quarkus.vertx.core.runtime.SSLConfigHelper.configureJksTrustOptions;
import static io.quarkus.vertx.core.runtime.SSLConfigHelper.configurePemKeyCertOptions;
import static io.quarkus.vertx.core.runtime.SSLConfigHelper.configurePemTrustOptions;
import static io.quarkus.vertx.core.runtime.SSLConfigHelper.configurePfxKeyCertOptions;
import static io.quarkus.vertx.core.runtime.SSLConfigHelper.configurePfxTrustOptions;

import java.util.Map;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
package io.quarkus.vertx.core.runtime;

import java.util.regex.Pattern;

import io.quarkus.vertx.core.runtime.config.JksConfiguration;
import io.quarkus.vertx.core.runtime.config.PemKeyCertConfiguration;
import io.quarkus.vertx.core.runtime.config.PemTrustCertConfiguration;
import io.quarkus.vertx.core.runtime.config.PfxConfiguration;
import io.vertx.core.net.*;
import io.vertx.core.net.JksOptions;
import io.vertx.core.net.KeyCertOptions;
import io.vertx.core.net.PemKeyCertOptions;
import io.vertx.core.net.PemTrustOptions;
import io.vertx.core.net.PfxOptions;
import io.vertx.core.net.TCPSSLOptions;

public class SSLConfigHelper {

private static final Pattern COMMA_PATTERN = Pattern.compile(",");

public static void configurePemTrustOptions(TCPSSLOptions options, PemTrustCertConfiguration configuration) {
if (configuration.enabled) {
ensureTrustOptionsNotSet(options);
Expand All @@ -22,8 +23,8 @@ public static void configurePemTrustOptions(TCPSSLOptions options, PemTrustCertC
private static PemTrustOptions toPemTrustOptions(PemTrustCertConfiguration configuration) {
PemTrustOptions pemTrustOptions = new PemTrustOptions();
if (configuration.certs.isPresent()) {
for (String cert : COMMA_PATTERN.split(configuration.certs.get())) {
pemTrustOptions.addCertPath(cert.trim());
for (String cert : configuration.certs.get()) {
pemTrustOptions.addCertPath(cert);
}
}
return pemTrustOptions;
Expand Down Expand Up @@ -81,13 +82,13 @@ public static void configurePemKeyCertOptions(TCPSSLOptions options, PemKeyCertC
private static KeyCertOptions toPemKeyCertOptions(PemKeyCertConfiguration configuration) {
PemKeyCertOptions pemKeyCertOptions = new PemKeyCertOptions();
if (configuration.certs.isPresent()) {
for (String cert : COMMA_PATTERN.split(configuration.certs.get())) {
pemKeyCertOptions.addCertPath(cert.trim());
for (String cert : configuration.certs.get()) {
pemKeyCertOptions.addCertPath(cert);
}
}
if (configuration.keys.isPresent()) {
for (String cert : COMMA_PATTERN.split(configuration.keys.get())) {
pemKeyCertOptions.addKeyPath(cert.trim());
for (String cert : configuration.keys.get()) {
pemKeyCertOptions.addKeyPath(cert);
}
}
return pemKeyCertOptions;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
package io.quarkus.vertx.core.runtime;

import static io.quarkus.vertx.core.runtime.SSLConfigHelper.configureJksKeyCertOptions;
import static io.quarkus.vertx.core.runtime.SSLConfigHelper.configurePemKeyCertOptions;
import static io.quarkus.vertx.core.runtime.SSLConfigHelper.configurePemTrustOptions;
import static io.quarkus.vertx.core.runtime.SSLConfigHelper.configurePfxKeyCertOptions;
import static io.quarkus.vertx.core.runtime.SSLConfigHelper.configurePfxTrustOptions;
import static io.vertx.core.file.impl.FileResolver.CACHE_DIR_BASE_PROP_NAME;

import java.io.File;
import java.time.Duration;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
Expand All @@ -13,8 +17,6 @@
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer;
import java.util.function.Supplier;
import java.util.regex.Pattern;
import java.util.stream.Collectors;

import org.jboss.logging.Logger;
import org.wildfly.common.cpu.ProcessorInfo;
Expand All @@ -36,19 +38,13 @@
import io.vertx.core.file.FileSystemOptions;
import io.vertx.core.http.ClientAuth;
import io.vertx.core.impl.VertxImpl;
import io.vertx.core.net.JksOptions;
import io.vertx.core.net.PemKeyCertOptions;
import io.vertx.core.net.PemTrustOptions;
import io.vertx.core.net.PfxOptions;
import io.vertx.core.spi.resolver.ResolverProvider;

@Recorder
public class VertxCoreRecorder {

private static final Logger LOGGER = Logger.getLogger(VertxCoreRecorder.class.getName());

private static final Pattern COMMA_PATTERN = Pattern.compile(",");

static volatile VertxSupplier vertx;

public Supplier<Vertx> configureVertx(VertxConfiguration config,
Expand Down Expand Up @@ -257,54 +253,14 @@ private static void setEventBusOptions(VertxConfiguration conf, VertxOptions opt
opts.setTrustAll(eb.trustAll);

// Certificates and trust.
if (eb.keyCertificatePem != null) {
List<String> certs = new ArrayList<>();
List<String> keys = new ArrayList<>();
eb.keyCertificatePem.certs.ifPresent(
s -> certs.addAll(COMMA_PATTERN.splitAsStream(s).map(String::trim).collect(Collectors.toList())));
eb.keyCertificatePem.keys.ifPresent(
s -> keys.addAll(COMMA_PATTERN.splitAsStream(s).map(String::trim).collect(Collectors.toList())));
PemKeyCertOptions o = new PemKeyCertOptions()
.setCertPaths(certs)
.setKeyPaths(keys);
opts.setPemKeyCertOptions(o);
}

if (eb.keyCertificateJks != null) {
JksOptions o = new JksOptions();
eb.keyCertificateJks.path.ifPresent(o::setPath);
eb.keyCertificateJks.password.ifPresent(o::setPassword);
opts.setKeyStoreOptions(o);
}
configurePemKeyCertOptions(opts, eb.keyCertificatePem);
configureJksKeyCertOptions(opts, eb.keyCertificateJks);
configurePfxKeyCertOptions(opts, eb.keyCertificatePfx);

if (eb.keyCertificatePfx != null) {
PfxOptions o = new PfxOptions();
eb.keyCertificatePfx.path.ifPresent(o::setPath);
eb.keyCertificatePfx.password.ifPresent(o::setPassword);
opts.setPfxKeyCertOptions(o);
}
configurePemTrustOptions(opts, eb.trustCertificatePem);
configureJksKeyCertOptions(opts, eb.trustCertificateJks);
configurePfxTrustOptions(opts, eb.trustCertificatePfx);

if (eb.trustCertificatePem != null) {
eb.trustCertificatePem.certs.ifPresent(s -> {
PemTrustOptions o = new PemTrustOptions();
COMMA_PATTERN.splitAsStream(s).map(String::trim).forEach(o::addCertPath);
opts.setPemTrustOptions(o);
});
}

if (eb.trustCertificateJks != null) {
JksOptions o = new JksOptions();
eb.trustCertificateJks.path.ifPresent(o::setPath);
eb.trustCertificateJks.password.ifPresent(o::setPassword);
opts.setTrustStoreOptions(o);
}

if (eb.trustCertificatePfx != null) {
PfxOptions o = new PfxOptions();
eb.trustCertificatePfx.path.ifPresent(o::setPath);
eb.trustCertificatePfx.password.ifPresent(o::setPassword);
opts.setPfxTrustOptions(o);
}
options.setEventBusOptions(opts);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.quarkus.vertx.core.runtime.config;

import java.util.List;
import java.util.Optional;

import io.quarkus.runtime.annotations.ConfigGroup;
Expand All @@ -18,12 +19,12 @@ public class PemKeyCertConfiguration {
* Comma-separated list of the path to the key files (Pem format).
*/
@ConfigItem
public Optional<String> keys;
public Optional<List<String>> keys;

/**
* Comma-separated list of the path to the certificate files (Pem format).
*/
@ConfigItem
public Optional<String> certs;
public Optional<List<String>> certs;

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.quarkus.vertx.core.runtime.config;

import java.util.List;
import java.util.Optional;

import io.quarkus.runtime.annotations.ConfigGroup;
Expand All @@ -18,6 +19,6 @@ public class PemTrustCertConfiguration {
* Comma-separated list of the trust certificate files (Pem format).
*/
@ConfigItem
public Optional<String> certs;
public Optional<List<String>> certs;

}

0 comments on commit 7f9ea6b

Please sign in to comment.