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}