diff --git a/acme4j-client/src/main/java/org/shredzone/acme4j/Session.java b/acme4j-client/src/main/java/org/shredzone/acme4j/Session.java index ce130ad7..dc6c0480 100644 --- a/acme4j-client/src/main/java/org/shredzone/acme4j/Session.java +++ b/acme4j-client/src/main/java/org/shredzone/acme4j/Session.java @@ -27,9 +27,9 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.stream.StreamSupport; import org.shredzone.acme4j.challenge.Challenge; -import org.shredzone.acme4j.challenge.TokenChallenge; import org.shredzone.acme4j.connector.Resource; import org.shredzone.acme4j.exception.AcmeException; +import org.shredzone.acme4j.exception.AcmeProtocolException; import org.shredzone.acme4j.provider.AcmeProvider; import org.shredzone.acme4j.toolbox.JSON; @@ -174,15 +174,9 @@ public class Session { * @return {@link Challenge} instance */ public Challenge createChallenge(JSON data) { - Objects.requireNonNull(data, "data"); - Challenge challenge = provider().createChallenge(this, data); if (challenge == null) { - if (data.contains("token")) { - challenge = new TokenChallenge(this, data); - } else { - challenge = new Challenge(this, data); - } + throw new AcmeProtocolException("Could not create challenge for: " + data); } return challenge; } diff --git a/acme4j-client/src/main/java/org/shredzone/acme4j/provider/AbstractAcmeProvider.java b/acme4j-client/src/main/java/org/shredzone/acme4j/provider/AbstractAcmeProvider.java index 7ebb5be0..e61b7ddf 100644 --- a/acme4j-client/src/main/java/org/shredzone/acme4j/provider/AbstractAcmeProvider.java +++ b/acme4j-client/src/main/java/org/shredzone/acme4j/provider/AbstractAcmeProvider.java @@ -25,6 +25,7 @@ import org.shredzone.acme4j.challenge.Challenge; import org.shredzone.acme4j.challenge.Dns01Challenge; import org.shredzone.acme4j.challenge.Http01Challenge; import org.shredzone.acme4j.challenge.TlsSni02Challenge; +import org.shredzone.acme4j.challenge.TokenChallenge; import org.shredzone.acme4j.connector.Connection; import org.shredzone.acme4j.connector.DefaultConnection; import org.shredzone.acme4j.connector.HttpConnector; @@ -72,6 +73,9 @@ public abstract class AbstractAcmeProvider implements AcmeProvider { /** * {@inheritDoc} *
+ * This implementation handles the standard challenge types. For unknown types, + * generic {@link Challenge} or {@link TokenChallenge} instances are created. + *
* Custom provider implementations may override this method to provide challenges that
* are unique to the provider.
*/
@@ -83,11 +87,15 @@ public abstract class AbstractAcmeProvider implements AcmeProvider {
String type = data.get("type").required().asString();
BiFunction