External.java

 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}