1ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvistpackage com.android.anqp.eap;
2ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist
3ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvistimport java.net.ProtocolException;
4ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvistimport java.nio.ByteBuffer;
5ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvistimport java.util.Arrays;
6ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist
7ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist/**
8ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist * An EAP authentication parameter, IEEE802.11-2012, table 8-188
9ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist */
10ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvistpublic class VendorSpecificAuth implements AuthParam {
11ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist
12ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist    private final byte[] mData;
13ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist
14ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist    public VendorSpecificAuth(int length, ByteBuffer payload) throws ProtocolException {
15ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist        mData = new byte[length];
16ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist        payload.get(mData);
17ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist    }
18ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist
19ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist    @Override
20ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist    public EAP.AuthInfoID getAuthInfoID() {
21ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist        return EAP.AuthInfoID.VendorSpecific;
22ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist    }
23ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist
24ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist    public int hashCode() {
25ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist        return Arrays.hashCode(mData);
26ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist    }
27ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist
28ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist    @Override
29ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist    public boolean equals(Object thatObject) {
30ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist        if (thatObject == this) {
31ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist            return true;
32ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist        } else if (thatObject == null || thatObject.getClass() != VendorSpecificAuth.class) {
33ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist            return false;
34ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist        } else {
35ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist            return Arrays.equals(((VendorSpecificAuth) thatObject).getData(), getData());
36ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist        }
37ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist    }
38ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist
39ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist    public byte[] getData() {
40ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist        return mData;
41ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist    }
42ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist
43ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist    @Override
44ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist    public String toString() {
45ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist        return "Auth method VendorSpecificAuth, data = " + Arrays.toString(mData) + '\n';
46ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist    }
47ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist}
48