1 package com.android.anqp.eap; 2 3 import java.net.ProtocolException; 4 import java.nio.ByteBuffer; 5 6 import static com.android.anqp.Constants.BYTE_MASK; 7 8 /** 9 * An EAP authentication parameter, IEEE802.11-2012, table 8-188 10 */ 11 public class InnerAuthEAP implements AuthParam { 12 13 private final EAP.EAPMethodID mEapMethodID; 14 15 public InnerAuthEAP(int length, ByteBuffer payload) throws ProtocolException { 16 if (length != 1) { 17 throw new ProtocolException("Bad length: " + length); 18 } 19 int typeID = payload.get() & BYTE_MASK; 20 mEapMethodID = EAP.mapEAPMethod(typeID); 21 } 22 23 public InnerAuthEAP(EAP.EAPMethodID eapMethodID) { 24 mEapMethodID = eapMethodID; 25 } 26 27 @Override 28 public EAP.AuthInfoID getAuthInfoID() { 29 return EAP.AuthInfoID.InnerAuthEAPMethodType; 30 } 31 32 public EAP.EAPMethodID getEAPMethodID() { 33 return mEapMethodID; 34 } 35 36 @Override 37 public int hashCode() { 38 return mEapMethodID != null ? mEapMethodID.hashCode() : 0; 39 } 40 41 @Override 42 public boolean equals(Object thatObject) { 43 if (thatObject == this) { 44 return true; 45 } else if (thatObject == null || thatObject.getClass() != InnerAuthEAP.class) { 46 return false; 47 } else { 48 return ((InnerAuthEAP) thatObject).getEAPMethodID() == getEAPMethodID(); 49 } 50 } 51 52 @Override 53 public String toString() { 54 return "Auth method InnerAuthEAP, inner = " + mEapMethodID + '\n'; 55 } 56 } 57