aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/eu/siacs/conversations/crypto/sasl/SaslMechanism.java
diff options
context:
space:
mode:
authorSam Whited <sam@samwhited.com>2014-11-15 08:48:40 -0500
committerSam Whited <sam@samwhited.com>2014-11-15 08:49:00 -0500
commit4b5d6f5b4fd29a4ee6d469f3b540dc5ba826f1a3 (patch)
treeb65f5d7b6e0861182be4774976d3601a46416bcc /src/main/java/eu/siacs/conversations/crypto/sasl/SaslMechanism.java
parent0e550789d372a1a83caa432e93a4f969a0607c9a (diff)
Improve auth error handling and state machine
Diffstat (limited to '')
-rw-r--r--src/main/java/eu/siacs/conversations/crypto/sasl/SaslMechanism.java27
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;