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