1ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvistpackage com.android.anqp.eap; 2ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist 3ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvistimport java.util.HashMap; 4ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvistimport java.util.Iterator; 5ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvistimport java.util.Map; 6ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist 7ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist/** 8ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist * EAP Related constants for the ANQP NAIRealm element, IEEE802.11-2012 section 8.4.4.10 9ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist */ 10ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvistpublic abstract class EAP { 11ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist 12ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist private static final Map<Integer, EAPMethodID> sEapIds = new HashMap<>(); 13ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist private static final Map<EAPMethodID, Integer> sRevEapIds = new HashMap<>(); 14ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist private static final Map<Integer, AuthInfoID> sAuthIds = new HashMap<>(); 15ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist 16ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_MD5 = 4; 17ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_OTP = 5; 18ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_RSA = 9; 19ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_KEA = 11; 20ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_KEA_VALIDATE = 12; 21ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_TLS = 13; 22ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_LEAP = 17; 23ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_SIM = 18; 24ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_TTLS = 21; 25ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_AKA = 23; 26ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_3Com = 24; 27ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_MSCHAPv2 = 26; 28ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_PEAP = 29; 29ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_POTP = 32; 30ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_ActiontecWireless = 35; 31ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_HTTPDigest = 38; 32ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_SPEKE = 41; 33ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_MOBAC = 42; 34ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_FAST = 43; 35ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_ZLXEAP = 44; 36ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_Link = 45; 37ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_PAX = 46; 38ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_PSK = 47; 39ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_SAKE = 48; 40ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_IKEv2 = 49; 41ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_AKAPrim = 50; 42ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_GPSK = 51; 43ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_PWD = 52; 44ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_EKE = 53; 45ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int EAP_TEAP = 55; 46ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist 47ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public enum EAPMethodID { 48ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_MD5, 49ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_OTP, 50ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_RSA, 51ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_KEA, 52ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_KEA_VALIDATE, 53ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_TLS, 54ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_LEAP, 55ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_SIM, 56ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_TTLS, 57ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_AKA, 58ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_3Com, 59ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_MSCHAPv2, 60ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_PEAP, 61ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_POTP, 62ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_ActiontecWireless, 63ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_HTTPDigest, 64ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_SPEKE, 65ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_MOBAC, 66ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_FAST, 67ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_ZLXEAP, 68ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_Link, 69ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_PAX, 70ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_PSK, 71ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_SAKE, 72ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_IKEv2, 73ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_AKAPrim, 74ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_GPSK, 75ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_PWD, 76ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_EKE, 77ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist EAP_TEAP 78ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist } 79ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist 80ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int ExpandedEAPMethod = 1; 81ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int NonEAPInnerAuthType = 2; 82ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int InnerAuthEAPMethodType = 3; 83ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int ExpandedInnerEAPMethod = 4; 84ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int CredentialType = 5; 85ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int TunneledEAPMethodCredType = 6; 86ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static final int VendorSpecific = 221; 87ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist 88ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public enum AuthInfoID { 89ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist Undefined, 90ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist ExpandedEAPMethod, 91ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist NonEAPInnerAuthType, 92ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist InnerAuthEAPMethodType, 93ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist ExpandedInnerEAPMethod, 94ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist CredentialType, 95ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist TunneledEAPMethodCredType, 96ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist VendorSpecific 97ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist } 98ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist 99ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist static { 100ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_MD5, EAPMethodID.EAP_MD5); 101ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_OTP, EAPMethodID.EAP_OTP); 102ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_RSA, EAPMethodID.EAP_RSA); 103ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_KEA, EAPMethodID.EAP_KEA); 104ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_KEA_VALIDATE, EAPMethodID.EAP_KEA_VALIDATE); 105ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_TLS, EAPMethodID.EAP_TLS); 106ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_LEAP, EAPMethodID.EAP_LEAP); 107ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_SIM, EAPMethodID.EAP_SIM); 108ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_TTLS, EAPMethodID.EAP_TTLS); 109ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_AKA, EAPMethodID.EAP_AKA); 110ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_3Com, EAPMethodID.EAP_3Com); 111ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_MSCHAPv2, EAPMethodID.EAP_MSCHAPv2); 112ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_PEAP, EAPMethodID.EAP_PEAP); 113ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_POTP, EAPMethodID.EAP_POTP); 114ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_ActiontecWireless, EAPMethodID.EAP_ActiontecWireless); 115ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_HTTPDigest, EAPMethodID.EAP_HTTPDigest); 116ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_SPEKE, EAPMethodID.EAP_SPEKE); 117ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_MOBAC, EAPMethodID.EAP_MOBAC); 118ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_FAST, EAPMethodID.EAP_FAST); 119ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_ZLXEAP, EAPMethodID.EAP_ZLXEAP); 120ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_Link, EAPMethodID.EAP_Link); 121ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_PAX, EAPMethodID.EAP_PAX); 122ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_PSK, EAPMethodID.EAP_PSK); 123ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_SAKE, EAPMethodID.EAP_SAKE); 124ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_IKEv2, EAPMethodID.EAP_IKEv2); 125ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_AKAPrim, EAPMethodID.EAP_AKAPrim); 126ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_GPSK, EAPMethodID.EAP_GPSK); 127ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_PWD, EAPMethodID.EAP_PWD); 128ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_EKE, EAPMethodID.EAP_EKE); 129ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sEapIds.put(EAP_TEAP, EAPMethodID.EAP_TEAP); 130ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist 131ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist for (Map.Entry<Integer, EAPMethodID> entry : sEapIds.entrySet()) { 132ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sRevEapIds.put(entry.getValue(), entry.getKey()); 133ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist } 134ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist 135ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sAuthIds.put(ExpandedEAPMethod, AuthInfoID.ExpandedEAPMethod); 136ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sAuthIds.put(NonEAPInnerAuthType, AuthInfoID.NonEAPInnerAuthType); 137ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sAuthIds.put(InnerAuthEAPMethodType, AuthInfoID.InnerAuthEAPMethodType); 138ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sAuthIds.put(ExpandedInnerEAPMethod, AuthInfoID.ExpandedInnerEAPMethod); 139ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sAuthIds.put(CredentialType, AuthInfoID.CredentialType); 140ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sAuthIds.put(TunneledEAPMethodCredType, AuthInfoID.TunneledEAPMethodCredType); 141ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist sAuthIds.put(VendorSpecific, AuthInfoID.VendorSpecific); 142ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist } 143ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist 144ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static EAPMethodID mapEAPMethod(int methodID) { 145ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist return sEapIds.get(methodID); 146ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist } 147ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist 148ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static Integer mapEAPMethod(EAPMethodID methodID) { 149ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist return sRevEapIds.get(methodID); 150ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist } 151ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist 152ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public static AuthInfoID mapAuthMethod(int methodID) { 153ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist return sAuthIds.get(methodID); 154ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist } 155ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist} 156