diff --git a/acme4j-client/src/main/java/org/shredzone/acme4j/Metadata.java b/acme4j-client/src/main/java/org/shredzone/acme4j/Metadata.java index 5cead3f3..7f2b42d1 100644 --- a/acme4j-client/src/main/java/org/shredzone/acme4j/Metadata.java +++ b/acme4j-client/src/main/java/org/shredzone/acme4j/Metadata.java @@ -65,6 +65,13 @@ public class Metadata { .collect(toList()); } + /** + * Returns whether an external account is required by this CA. + */ + public boolean isExternalAccountRequired() { + return meta.get("external-account-required").orElse(false).asBoolean(); + } + /** * Returns the JSON representation of the metadata. This is useful for reading * proprietary metadata properties. diff --git a/acme4j-client/src/test/java/org/shredzone/acme4j/SessionTest.java b/acme4j-client/src/test/java/org/shredzone/acme4j/SessionTest.java index 95ee0165..8531affe 100644 --- a/acme4j-client/src/test/java/org/shredzone/acme4j/SessionTest.java +++ b/acme4j-client/src/test/java/org/shredzone/acme4j/SessionTest.java @@ -249,6 +249,7 @@ public class SessionTest { assertThat(meta.getTermsOfService(), is(URI.create("https://example.com/acme/terms"))); assertThat(meta.getWebsite(), is(url("https://www.example.com/"))); assertThat(meta.getCaaIdentities(), containsInAnyOrder("example.com")); + assertThat(meta.isExternalAccountRequired(), is(true)); assertThat(meta.getJSON(), is(notNullValue())); } diff --git a/acme4j-client/src/test/resources/json/directory.json b/acme4j-client/src/test/resources/json/directory.json index 95ec4980..fea8bdb9 100644 --- a/acme4j-client/src/test/resources/json/directory.json +++ b/acme4j-client/src/test/resources/json/directory.json @@ -9,6 +9,7 @@ "caa-identities": [ "example.com" ], + "external-account-required": true, "x-test-string": "foobar", "x-test-uri": "https://www.example.org", "x-test-array": [