blob: 0a89f4fffe9dc432da13458962c8dda9f4897d58 [file] [log] [blame]
package com.android.anqp.eap;
import java.net.ProtocolException;
import java.nio.ByteBuffer;
import static com.android.anqp.Constants.BYTE_MASK;
/**
* An EAP authentication parameter, IEEE802.11-2012, table 8-188
*/
public class Credential implements AuthParam {
public enum CredType {
Reserved,
SIM,
USIM,
NFC,
HWToken,
Softoken,
Certificate,
Username,
None,
Anonymous,
VendorSpecific}
private final EAP.AuthInfoID mAuthInfoID;
private final CredType mCredType;
public Credential(EAP.AuthInfoID infoID, int length, ByteBuffer payload)
throws ProtocolException {
if (length != 1) {
throw new ProtocolException("Bad length: " + length);
}
mAuthInfoID = infoID;
int typeID = payload.get() & BYTE_MASK;
mCredType = typeID < CredType.values().length ?
CredType.values()[typeID] :
CredType.Reserved;
}
@Override
public EAP.AuthInfoID getAuthInfoID() {
return mAuthInfoID;
}
@Override
public int hashCode() {
return mAuthInfoID.hashCode() * 31 + mCredType.hashCode();
}
@Override
public boolean equals(Object thatObject) {
if (thatObject == this) {
return true;
} else if (thatObject == null || thatObject.getClass() != Credential.class) {
return false;
} else {
return ((Credential) thatObject).getCredType() == getCredType();
}
}
public CredType getCredType() {
return mCredType;
}
@Override
public String toString() {
return "Auth method " + mAuthInfoID + " = " + mCredType + "\n";
}
}