Anonymous.java

 1package eu.siacs.conversations.crypto.sasl;
 2
 3import com.google.common.base.Preconditions;
 4import com.google.common.base.Strings;
 5import eu.siacs.conversations.entities.Account;
 6import javax.net.ssl.SSLSocket;
 7
 8public class Anonymous extends SaslMechanism {
 9
10    public static final String MECHANISM = "ANONYMOUS";
11
12    public Anonymous(final Account account) {
13        super(account);
14    }
15
16    @Override
17    public int getPriority() {
18        return 0;
19    }
20
21    @Override
22    public String getMechanism() {
23        return MECHANISM;
24    }
25
26    @Override
27    public String getClientFirstMessage(final SSLSocket sslSocket) {
28        Preconditions.checkState(
29                this.state == State.INITIAL, "Calling getClientFirstMessage from invalid state");
30        this.state = State.AUTH_TEXT_SENT;
31        return "";
32    }
33
34    @Override
35    public String getResponse(final String challenge, final SSLSocket sslSocket)
36            throws AuthenticationException {
37        checkState(State.AUTH_TEXT_SENT);
38        if (Strings.isNullOrEmpty(challenge)) {
39            this.state = State.VALID_SERVER_RESPONSE;
40            return null;
41        }
42        throw new AuthenticationException("Unexpected server response");
43    }
44}