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); } }