16a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistpackage com.android.server.wifi.anqp.eap; 26a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 36a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistimport java.net.ProtocolException; 46a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistimport java.nio.ByteBuffer; 56a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 66a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistimport static com.android.server.wifi.anqp.Constants.BYTE_MASK; 76a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 86a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist/** 96a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist * An EAP authentication parameter, IEEE802.11-2012, table 8-188 106a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist */ 116a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistpublic class Credential implements AuthParam { 126a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 136a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist public enum CredType { 146a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist Reserved, 156a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist SIM, 166a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist USIM, 176a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist NFC, 186a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist HWToken, 196a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist Softoken, 206a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist Certificate, 216a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist Username, 226a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist None, 236a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist Anonymous, 246a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist VendorSpecific} 256a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 266a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist private final EAP.AuthInfoID mAuthInfoID; 276a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist private final CredType mCredType; 286a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 293be1b3fc037bef7fb4448dec89aea3f2e1318853Jan Nordqvist public Credential(EAP.AuthInfoID infoID, int length, ByteBuffer payload) 303be1b3fc037bef7fb4448dec89aea3f2e1318853Jan Nordqvist throws ProtocolException { 31777f4fc037d3ebd555f10041f8acfb41515b2f4bJan Nordqvist if (length != 1) { 32777f4fc037d3ebd555f10041f8acfb41515b2f4bJan Nordqvist throw new ProtocolException("Bad length: " + length); 336a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist } 343be1b3fc037bef7fb4448dec89aea3f2e1318853Jan Nordqvist 353be1b3fc037bef7fb4448dec89aea3f2e1318853Jan Nordqvist mAuthInfoID = infoID; 366a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist int typeID = payload.get() & BYTE_MASK; 37777f4fc037d3ebd555f10041f8acfb41515b2f4bJan Nordqvist 386a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist mCredType = typeID < CredType.values().length ? 396a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist CredType.values()[typeID] : 406a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist CredType.Reserved; 416a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist } 426a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 436a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist @Override 446a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist public EAP.AuthInfoID getAuthInfoID() { 456a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist return mAuthInfoID; 466a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist } 476a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 486a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist @Override 496a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist public int hashCode() { 506a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist return mAuthInfoID.hashCode() * 31 + mCredType.hashCode(); 516a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist } 526a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 536a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist @Override 546a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist public boolean equals(Object thatObject) { 556a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist if (thatObject == this) { 566a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist return true; 5771a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist } else if (thatObject == null || thatObject.getClass() != Credential.class) { 586a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist return false; 596a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist } else { 606a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist return ((Credential) thatObject).getCredType() == getCredType(); 616a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist } 626a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist } 636a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 646a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist public CredType getCredType() { 656a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist return mCredType; 666a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist } 676a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 686a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist @Override 696a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist public String toString() { 707b2caa25fb57f2d95e0d0421704c49d3af4b8e6fJan Nordqvist return "Auth method " + mAuthInfoID + " = " + mCredType + "\n"; 716a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist } 726a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist} 73