package cassandra.auth;
import java.nio.charset.Charset;
public class PlainTextAuthProvider implements AuthProvider {
private final String username, password;
public PlainTextAuthProvider(String username, String password) {
if (username == null) {
throw new NullPointerException("username");
}
if (username.isEmpty()) {
throw new IllegalArgumentException("empty username");
}
if (password == null) {
throw new NullPointerException("password");
}
this.username = username;
this.password = password;
}
@Override
public Authenticator newAuthenticator(String authenticator) throws AuthenticationException {
return new PlainTextAuthenticator(username, password);
}
public static class PlainTextAuthenticator implements Authenticator {
private static final byte NUL = 0;
private final byte[] token;
PlainTextAuthenticator(String username, String password) {
byte[] user = username.getBytes(Charset.forName("UTF8"));
byte[] pass = password.getBytes(Charset.forName("UTF8"));
token = new byte[2 + user.length + pass.length];
token[0] = NUL;
System.arraycopy(user, 0, token, 1, user.length);
token[pass.length + 1] = NUL;
System.arraycopy(pass, 0, token, user.length + 2, pass.length);
}
@Override
public byte[] initialResponse() {
return token;
}
@Override
public byte[] evaluateResponse(byte[] serverResponse) throws AuthenticationException {
return null;
}
}
}