1package eu.siacs.conversations.crypto.sasl;
2
3import com.google.common.base.Preconditions;
4import com.google.common.io.BaseEncoding;
5import eu.siacs.conversations.entities.Account;
6import javax.net.ssl.SSLSocket;
7
8public class External extends SaslMechanism {
9
10 public static final String MECHANISM = "EXTERNAL";
11
12 public External(final Account account) {
13 super(account);
14 }
15
16 @Override
17 public int getPriority() {
18 return 25;
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 final String message = account.getJid().asBareJid().toString();
32 return BaseEncoding.base64().encode(message.getBytes());
33 }
34
35 @Override
36 public String getResponse(String challenge, SSLSocket sslSocket)
37 throws AuthenticationException {
38 // TODO check that state is in auth text sent and move to finished
39 return "";
40 }
41}