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