diff options
author | Sam Whited <sam@samwhited.com> | 2014-11-15 08:48:40 -0500 |
---|---|---|
committer | Sam Whited <sam@samwhited.com> | 2014-11-15 08:49:00 -0500 |
commit | 4b5d6f5b4fd29a4ee6d469f3b540dc5ba826f1a3 (patch) | |
tree | b65f5d7b6e0861182be4774976d3601a46416bcc /src/main/java/eu/siacs/conversations/crypto/sasl/SaslMechanism.java | |
parent | 0e550789d372a1a83caa432e93a4f969a0607c9a (diff) |
Improve auth error handling and state machine
Diffstat (limited to 'src/main/java/eu/siacs/conversations/crypto/sasl/SaslMechanism.java')
-rw-r--r-- | src/main/java/eu/siacs/conversations/crypto/sasl/SaslMechanism.java | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/main/java/eu/siacs/conversations/crypto/sasl/SaslMechanism.java b/src/main/java/eu/siacs/conversations/crypto/sasl/SaslMechanism.java index 38a03c18..7dd5e99c 100644 --- a/src/main/java/eu/siacs/conversations/crypto/sasl/SaslMechanism.java +++ b/src/main/java/eu/siacs/conversations/crypto/sasl/SaslMechanism.java @@ -11,6 +11,33 @@ public abstract class SaslMechanism { final protected Account account; final protected SecureRandom rng; + protected static enum State { + INITIAL, + AUTH_TEXT_SENT, + RESPONSE_SENT, + VALID_SERVER_RESPONSE, + } + + public static class AuthenticationException extends Exception { + public AuthenticationException(final String message) { + super(message); + } + + public AuthenticationException(final Exception inner) { + super(inner); + } + } + + public static class InvalidStateException extends AuthenticationException { + public InvalidStateException(final String message) { + super(message); + } + + public InvalidStateException(final State state) { + this("Invalid state: " + state.toString()); + } + } + public SaslMechanism(final TagWriter tagWriter, final Account account, final SecureRandom rng) { this.tagWriter = tagWriter; this.account = account; |