package com.android.anqp.eap;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* EAP Related constants for the ANQP NAIRealm element, IEEE802.11-2012 section 8.4.4.10
*/
public abstract class EAP {
private static final Map<Integer, EAPMethodID> sEapIds = new HashMap<>();
private static final Map<EAPMethodID, Integer> sRevEapIds = new HashMap<>();
private static final Map<Integer, AuthInfoID> sAuthIds = new HashMap<>();
public static final int EAP_MD5 = 4;
public static final int EAP_OTP = 5;
public static final int EAP_RSA = 9;
public static final int EAP_KEA = 11;
public static final int EAP_KEA_VALIDATE = 12;
public static final int EAP_TLS = 13;
public static final int EAP_LEAP = 17;
public static final int EAP_SIM = 18;
public static final int EAP_TTLS = 21;
public static final int EAP_AKA = 23;
public static final int EAP_3Com = 24;
public static final int EAP_MSCHAPv2 = 26;
public static final int EAP_PEAP = 29;
public static final int EAP_POTP = 32;
public static final int EAP_ActiontecWireless = 35;
public static final int EAP_HTTPDigest = 38;
public static final int EAP_SPEKE = 41;
public static final int EAP_MOBAC = 42;
public static final int EAP_FAST = 43;
public static final int EAP_ZLXEAP = 44;
public static final int EAP_Link = 45;
public static final int EAP_PAX = 46;
public static final int EAP_PSK = 47;
public static final int EAP_SAKE = 48;
public static final int EAP_IKEv2 = 49;
public static final int EAP_AKAPrim = 50;
public static final int EAP_GPSK = 51;
public static final int EAP_PWD = 52;
public static final int EAP_EKE = 53;
public static final int EAP_TEAP = 55;
public enum EAPMethodID {
EAP_MD5,
EAP_OTP,
EAP_RSA,
EAP_KEA,
EAP_KEA_VALIDATE,
EAP_TLS,
EAP_LEAP,
EAP_SIM,
EAP_TTLS,
EAP_AKA,
EAP_3Com,
EAP_MSCHAPv2,
EAP_PEAP,
EAP_POTP,
EAP_ActiontecWireless,
EAP_HTTPDigest,
EAP_SPEKE,
EAP_MOBAC,
EAP_FAST,
EAP_ZLXEAP,
EAP_Link,
EAP_PAX,
EAP_PSK,
EAP_SAKE,
EAP_IKEv2,
EAP_AKAPrim,
EAP_GPSK,
EAP_PWD,
EAP_EKE,
EAP_TEAP
}
public static final int ExpandedEAPMethod = 1;
public static final int NonEAPInnerAuthType = 2;
public static final int InnerAuthEAPMethodType = 3;
public static final int ExpandedInnerEAPMethod = 4;
public static final int CredentialType = 5;
public static final int TunneledEAPMethodCredType = 6;
public static final int VendorSpecific = 221;
public enum AuthInfoID {
Undefined,
ExpandedEAPMethod,
NonEAPInnerAuthType,
InnerAuthEAPMethodType,
ExpandedInnerEAPMethod,
CredentialType,
TunneledEAPMethodCredType,
VendorSpecific
}
static {
sEapIds.put(EAP_MD5, EAPMethodID.EAP_MD5);
sEapIds.put(EAP_OTP, EAPMethodID.EAP_OTP);
sEapIds.put(EAP_RSA, EAPMethodID.EAP_RSA);
sEapIds.put(EAP_KEA, EAPMethodID.EAP_KEA);
sEapIds.put(EAP_KEA_VALIDATE, EAPMethodID.EAP_KEA_VALIDATE);
sEapIds.put(EAP_TLS, EAPMethodID.EAP_TLS);
sEapIds.put(EAP_LEAP, EAPMethodID.EAP_LEAP);
sEapIds.put(EAP_SIM, EAPMethodID.EAP_SIM);
sEapIds.put(EAP_TTLS, EAPMethodID.EAP_TTLS);
sEapIds.put(EAP_AKA, EAPMethodID.EAP_AKA);
sEapIds.put(EAP_3Com, EAPMethodID.EAP_3Com);
sEapIds.put(EAP_MSCHAPv2, EAPMethodID.EAP_MSCHAPv2);
sEapIds.put(EAP_PEAP, EAPMethodID.EAP_PEAP);
sEapIds.put(EAP_POTP, EAPMethodID.EAP_POTP);
sEapIds.put(EAP_ActiontecWireless, EAPMethodID.EAP_ActiontecWireless);
sEapIds.put(EAP_HTTPDigest, EAPMethodID.EAP_HTTPDigest);
sEapIds.put(EAP_SPEKE, EAPMethodID.EAP_SPEKE);
sEapIds.put(EAP_MOBAC, EAPMethodID.EAP_MOBAC);
sEapIds.put(EAP_FAST, EAPMethodID.EAP_FAST);
sEapIds.put(EAP_ZLXEAP, EAPMethodID.EAP_ZLXEAP);
sEapIds.put(EAP_Link, EAPMethodID.EAP_Link);
sEapIds.put(EAP_PAX, EAPMethodID.EAP_PAX);
sEapIds.put(EAP_PSK, EAPMethodID.EAP_PSK);
sEapIds.put(EAP_SAKE, EAPMethodID.EAP_SAKE);
sEapIds.put(EAP_IKEv2, EAPMethodID.EAP_IKEv2);
sEapIds.put(EAP_AKAPrim, EAPMethodID.EAP_AKAPrim);
sEapIds.put(EAP_GPSK, EAPMethodID.EAP_GPSK);
sEapIds.put(EAP_PWD, EAPMethodID.EAP_PWD);
sEapIds.put(EAP_EKE, EAPMethodID.EAP_EKE);
sEapIds.put(EAP_TEAP, EAPMethodID.EAP_TEAP);
for (Map.Entry<Integer, EAPMethodID> entry : sEapIds.entrySet()) {
sRevEapIds.put(entry.getValue(), entry.getKey());
}
sAuthIds.put(ExpandedEAPMethod, AuthInfoID.ExpandedEAPMethod);
sAuthIds.put(NonEAPInnerAuthType, AuthInfoID.NonEAPInnerAuthType);
sAuthIds.put(InnerAuthEAPMethodType, AuthInfoID.InnerAuthEAPMethodType);
sAuthIds.put(ExpandedInnerEAPMethod, AuthInfoID.ExpandedInnerEAPMethod);
sAuthIds.put(CredentialType, AuthInfoID.CredentialType);
sAuthIds.put(TunneledEAPMethodCredType, AuthInfoID.TunneledEAPMethodCredType);
sAuthIds.put(VendorSpecific, AuthInfoID.VendorSpecific);
}
public static EAPMethodID mapEAPMethod(int methodID) {
return sEapIds.get(methodID);
}
public static Integer mapEAPMethod(EAPMethodID methodID) {
return sRevEapIds.get(methodID);
}
public static AuthInfoID mapAuthMethod(int methodID) {
return sAuthIds.get(methodID);
}
}