summaryrefslogtreecommitdiffstats
path: root/security-utils
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@oath.com>2018-10-30 13:39:55 +0100
committerBjørn Christian Seime <bjorncs@oath.com>2018-10-30 13:39:55 +0100
commitf82663d75023486d3bbad4e7195afda37574fe8d (patch)
treedfd5bcf153edfd14be527e6a13b90e236a936dab /security-utils
parentaf146b406da7911a0e035ea3bf184680b31bac9b (diff)
Add TransportSecurityOptions.fromJson(String)
Diffstat (limited to 'security-utils')
-rw-r--r--security-utils/src/main/java/com/yahoo/security/tls/TransportSecurityOptions.java23
-rw-r--r--security-utils/src/test/java/com/yahoo/security/tls/TransportSecurityOptionsTest.java11
2 files changed, 28 insertions, 6 deletions
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/TransportSecurityOptions.java b/security-utils/src/main/java/com/yahoo/security/tls/TransportSecurityOptions.java
index f0d1edd6889..67466179634 100644
--- a/security-utils/src/main/java/com/yahoo/security/tls/TransportSecurityOptions.java
+++ b/security-utils/src/main/java/com/yahoo/security/tls/TransportSecurityOptions.java
@@ -48,17 +48,28 @@ public class TransportSecurityOptions {
public static TransportSecurityOptions fromJsonFile(Path file) {
try {
- JsonNode root = mapper.readTree(file.toFile());
- JsonNode filesNode = getField(root, "files");
- String privateKeyFile = getField(filesNode, "private-key").asText();
- String certificatesFile = getField(filesNode, "certificates").asText();
- String caCertificatesFile = getField(filesNode, "ca-certificates").asText();
- return new TransportSecurityOptions(privateKeyFile, certificatesFile, caCertificatesFile);
+ return fromJsonNode(mapper.readTree(file.toFile()));
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
+ public static TransportSecurityOptions fromJson(String json) {
+ try {
+ return fromJsonNode(mapper.readTree(json));
+ } catch (IOException e) {
+ throw new UncheckedIOException(e);
+ }
+ }
+
+ private static TransportSecurityOptions fromJsonNode(JsonNode root) {
+ JsonNode filesNode = getField(root, "files");
+ String privateKeyFile = getField(filesNode, "private-key").asText();
+ String certificatesFile = getField(filesNode, "certificates").asText();
+ String caCertificatesFile = getField(filesNode, "ca-certificates").asText();
+ return new TransportSecurityOptions(privateKeyFile, certificatesFile, caCertificatesFile);
+ }
+
private static JsonNode getField(JsonNode root, String fieldName) {
return Optional.ofNullable(root.get(fieldName))
.orElseThrow(() -> new IllegalArgumentException(String.format("'%s' field missing", fieldName)));
diff --git a/security-utils/src/test/java/com/yahoo/security/tls/TransportSecurityOptionsTest.java b/security-utils/src/test/java/com/yahoo/security/tls/TransportSecurityOptionsTest.java
index f311651cab0..84f71cf8fc2 100644
--- a/security-utils/src/test/java/com/yahoo/security/tls/TransportSecurityOptionsTest.java
+++ b/security-utils/src/test/java/com/yahoo/security/tls/TransportSecurityOptionsTest.java
@@ -3,6 +3,9 @@ package com.yahoo.security.tls;
import org.junit.Test;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@@ -22,4 +25,12 @@ public class TransportSecurityOptionsTest {
assertEquals(expectedOptions, actualOptions);
}
+ @Test
+ public void can_read_options_from_json() throws IOException {
+ String tlsJson = new String(Files.readAllBytes(TEST_CONFIG_FILE), StandardCharsets.UTF_8);
+ TransportSecurityOptions expectedOptions = new TransportSecurityOptions("myhost.key", "certs.pem", "my_cas.pem");
+ TransportSecurityOptions actualOptions = TransportSecurityOptions.fromJson(tlsJson);
+ assertEquals(expectedOptions, actualOptions);
+ }
+
}