Credential.java revision a7ead3d4be45cb69bb5851f1a6f9673e93607fc2
171a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvistpackage com.android.server.wifi.hotspot2.pps; 271a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist 303e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpandeimport android.net.wifi.WifiEnterpriseConfig; 4a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvistimport android.security.Credentials; 5a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvistimport android.security.KeyStore; 6d3fb9cbb12d013dd70e672ace5c41ab18a3679a0Vinit Deshpandeimport android.text.TextUtils; 771a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvistimport android.util.Base64; 8af955ffa0082189fb688429732427c333f2491ceVinit Deshpandeimport android.util.Log; 971a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist 1003e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpandeimport com.android.server.wifi.anqp.eap.EAP; 1171a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvistimport com.android.server.wifi.anqp.eap.EAPMethod; 12a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvistimport com.android.server.wifi.anqp.eap.NonEAPInnerAuth; 1371a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvistimport com.android.server.wifi.hotspot2.Utils; 1471a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvistimport com.android.server.wifi.hotspot2.omadm.OMAException; 1571a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist 16a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvistimport java.io.IOException; 1771a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvistimport java.nio.charset.StandardCharsets; 18a1edc185d46d85e04930a5e12b465de9fea64afeJan Nordqvistimport java.security.GeneralSecurityException; 19a1edc185d46d85e04930a5e12b465de9fea64afeJan Nordqvistimport java.security.MessageDigest; 2071a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist 2171a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvistpublic class Credential { 2271a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist public enum CertType {IEEE, x509v3} 2371a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist 24a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist public static final String CertTypeX509 = "x509v3"; 25a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist public static final String CertTypeIEEE = "802.1ar"; 26a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist 2771a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist private final long mCtime; 2871a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist private final long mExpTime; 2971a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist private final String mRealm; 3071a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist private final boolean mCheckAAACert; 3171a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist 3271a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist private final String mUserName; 3371a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist private final String mPassword; 3471a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist private final boolean mMachineManaged; 3571a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist private final String mSTokenApp; 3671a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist private final boolean mShare; 3771a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist private final EAPMethod mEAPMethod; 3871a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist 3971a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist private final CertType mCertType; 4071a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist private final byte[] mFingerPrint; 4171a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist 4271a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist private final String mImsi; 4371a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist 4471a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist public Credential(long ctime, long expTime, String realm, boolean checkAAACert, 4571a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist EAPMethod eapMethod, String userName, String password, 4671a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist boolean machineManaged, String stApp, boolean share) { 4771a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mCtime = ctime; 4871a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mExpTime = expTime; 4971a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mRealm = realm; 5071a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mCheckAAACert = checkAAACert; 5171a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mEAPMethod = eapMethod; 5271a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mUserName = userName; 53d3fb9cbb12d013dd70e672ace5c41ab18a3679a0Vinit Deshpande 54a1edc185d46d85e04930a5e12b465de9fea64afeJan Nordqvist if (!TextUtils.isEmpty(password)) { 55d3fb9cbb12d013dd70e672ace5c41ab18a3679a0Vinit Deshpande byte[] pwOctets = Base64.decode(password, Base64.DEFAULT); 56d3fb9cbb12d013dd70e672ace5c41ab18a3679a0Vinit Deshpande mPassword = new String(pwOctets, StandardCharsets.UTF_8); 57d3fb9cbb12d013dd70e672ace5c41ab18a3679a0Vinit Deshpande } else { 58d3fb9cbb12d013dd70e672ace5c41ab18a3679a0Vinit Deshpande mPassword = null; 59d3fb9cbb12d013dd70e672ace5c41ab18a3679a0Vinit Deshpande } 60d3fb9cbb12d013dd70e672ace5c41ab18a3679a0Vinit Deshpande 6171a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mMachineManaged = machineManaged; 6271a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mSTokenApp = stApp; 6371a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mShare = share; 6471a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist 6571a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mCertType = null; 6671a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mFingerPrint = null; 6771a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist 6871a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mImsi = null; 6971a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist } 7071a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist 7171a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist public Credential(long ctime, long expTime, String realm, boolean checkAAACert, 7271a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist EAPMethod eapMethod, Credential.CertType certType, byte[] fingerPrint) { 7371a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mCtime = ctime; 7471a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mExpTime = expTime; 7571a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mRealm = realm; 7671a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mCheckAAACert = checkAAACert; 7771a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mEAPMethod = eapMethod; 7871a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mCertType = certType; 7971a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mFingerPrint = fingerPrint; 8071a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist 8171a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mUserName = null; 8271a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mPassword = null; 8371a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mMachineManaged = false; 8471a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mSTokenApp = null; 8571a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mShare = false; 8671a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist 8771a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mImsi = null; 8871a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist } 8971a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist 9071a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist public Credential(long ctime, long expTime, String realm, boolean checkAAACert, 9171a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist EAPMethod eapMethod, String imsi) { 9271a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mCtime = ctime; 9371a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mExpTime = expTime; 9471a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mRealm = realm; 9571a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mCheckAAACert = checkAAACert; 9671a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mEAPMethod = eapMethod; 9771a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mImsi = imsi; 9871a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist 9971a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mCertType = null; 10071a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mFingerPrint = null; 10171a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist 10271a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mUserName = null; 10371a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mPassword = null; 10471a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mMachineManaged = false; 10571a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mSTokenApp = null; 10671a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist mShare = false; 10771a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist } 10871a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist 109a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist public Credential(WifiEnterpriseConfig enterpriseConfig) throws IOException { 11003e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande mCtime = 0; 11103e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande mExpTime = 0; 11203e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande mRealm = enterpriseConfig.getRealm(); 11303e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande mCheckAAACert = true; 11403e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande mEAPMethod = mapEapMethod(enterpriseConfig.getEapMethod(), 11503e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande enterpriseConfig.getPhase2Method()); 116a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist mCertType = mEAPMethod.getEAPMethodID() == EAP.EAPMethodID.EAP_TLS ? CertType.x509v3 : null; 117a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist byte[] fingerPrint; 118a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist 119a1edc185d46d85e04930a5e12b465de9fea64afeJan Nordqvist if (enterpriseConfig.getClientCertificate() != null) { 120a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist // !!! Not sure this will be true in any practical instances: 121a1edc185d46d85e04930a5e12b465de9fea64afeJan Nordqvist try { 122a1edc185d46d85e04930a5e12b465de9fea64afeJan Nordqvist MessageDigest digester = MessageDigest.getInstance("SHA-256"); 123a1edc185d46d85e04930a5e12b465de9fea64afeJan Nordqvist fingerPrint = digester.digest(enterpriseConfig.getClientCertificate().getEncoded()); 124a1edc185d46d85e04930a5e12b465de9fea64afeJan Nordqvist } 125a1edc185d46d85e04930a5e12b465de9fea64afeJan Nordqvist catch (GeneralSecurityException gse) { 126a1edc185d46d85e04930a5e12b465de9fea64afeJan Nordqvist Log.e("CRED", "Failed to generate certificate fingerprint: " + gse); 127a1edc185d46d85e04930a5e12b465de9fea64afeJan Nordqvist fingerPrint = null; 128a1edc185d46d85e04930a5e12b465de9fea64afeJan Nordqvist } 129a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist } 130a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist else if (enterpriseConfig.getClientCertificateAlias() != null) { 131a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist String alias = enterpriseConfig.getClientCertificateAlias(); 132a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist Log.d("HS2J", "Client alias '" + alias + "'"); 133a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist byte[] octets = KeyStore.getInstance().get(Credentials.USER_CERTIFICATE + alias); 134a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist Log.d("HS2J", "DER: " + (octets == null ? "-" : Integer.toString(octets.length))); 135a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist if (octets != null) { 136a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist try { 137a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist MessageDigest digester = MessageDigest.getInstance("SHA-256"); 138a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist fingerPrint = digester.digest(octets); 139a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist } 140a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist catch (GeneralSecurityException gse) { 141a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist Log.e("HS2J", "Failed to construct digest: " + gse); 142a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist fingerPrint = null; 143a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist } 144a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist } 145a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist else // !!! The current alias is *not* derived from the fingerprint... 146a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist { 147a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist try { 148a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist fingerPrint = Base64.decode(enterpriseConfig.getClientCertificateAlias(), 149a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist Base64.DEFAULT); 150a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist } catch (IllegalArgumentException ie) { 151a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist Log.e("CRED", "Bad base 64 alias"); 152a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist fingerPrint = null; 153a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist } 154a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist } 155a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist } 156a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist else { 157a1edc185d46d85e04930a5e12b465de9fea64afeJan Nordqvist fingerPrint = null; 158d3fb9cbb12d013dd70e672ace5c41ab18a3679a0Vinit Deshpande } 159a1edc185d46d85e04930a5e12b465de9fea64afeJan Nordqvist mFingerPrint = fingerPrint; 16003e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande mImsi = enterpriseConfig.getPlmn(); 161d3fb9cbb12d013dd70e672ace5c41ab18a3679a0Vinit Deshpande mUserName = enterpriseConfig.getIdentity(); 162d3fb9cbb12d013dd70e672ace5c41ab18a3679a0Vinit Deshpande mPassword = enterpriseConfig.getPassword(); 16303e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande mMachineManaged = false; 16403e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande mSTokenApp = null; 16503e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande mShare = false; 16603e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande } 16703e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande 16871a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist public static CertType mapCertType(String certType) throws OMAException { 169a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist if (certType.equalsIgnoreCase(CertTypeX509)) { 17071a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist return CertType.x509v3; 171a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist } else if (certType.equalsIgnoreCase(CertTypeIEEE)) { 17271a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist return CertType.IEEE; 17371a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist } else { 17471a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist throw new OMAException("Invalid cert type: '" + certType + "'"); 17571a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist } 17671a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist } 17771a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist 178a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist private static EAPMethod mapEapMethod(int eapMethod, int phase2Method) throws IOException { 17903e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande if (eapMethod == WifiEnterpriseConfig.Eap.TLS) { 18003e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande return new EAPMethod(EAP.EAPMethodID.EAP_TLS, null); 18103e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande } else if (eapMethod == WifiEnterpriseConfig.Eap.TTLS) { 18203e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande /* keep this table in sync with WifiEnterpriseConfig.Phase2 enum */ 183a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist NonEAPInnerAuth inner; 184a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist switch (phase2Method) { 185a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist case WifiEnterpriseConfig.Phase2.PAP: 186a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist inner = new NonEAPInnerAuth(NonEAPInnerAuth.NonEAPType.PAP); 187a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist break; 188a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist case WifiEnterpriseConfig.Phase2.MSCHAP: 189a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist inner = new NonEAPInnerAuth(NonEAPInnerAuth.NonEAPType.MSCHAP); 190a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist break; 191a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist case WifiEnterpriseConfig.Phase2.MSCHAPV2: 192a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist inner = new NonEAPInnerAuth(NonEAPInnerAuth.NonEAPType.MSCHAPv2); 193a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist break; 194a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist default: 195a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist throw new IOException("TTLS phase2 method " + 196a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist phase2Method + " not valid for Passpoint"); 197d3fb9cbb12d013dd70e672ace5c41ab18a3679a0Vinit Deshpande } 198a7ead3d4be45cb69bb5851f1a6f9673e93607fc2Jan Nordqvist return new EAPMethod(EAP.EAPMethodID.EAP_TTLS, inner); 19903e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande } else if (eapMethod == WifiEnterpriseConfig.Eap.PEAP) { 20003e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande /* restricting passpoint implementation from using PEAP */ 20103e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande return null; 20203e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande } else if (eapMethod == WifiEnterpriseConfig.Eap.PWD) { 20303e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande /* restricting passpoint implementation from using EAP_PWD */ 20403e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande return null; 20503e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande } else if (eapMethod == WifiEnterpriseConfig.Eap.SIM) { 20603e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande return new EAPMethod(EAP.EAPMethodID.EAP_SIM, null); 20703e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande } else if (eapMethod == WifiEnterpriseConfig.Eap.AKA) { 20803e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande return new EAPMethod(EAP.EAPMethodID.EAP_AKA, null); 20903e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande } 21003e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande /* 21103e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande TODO: Uncomment this when AKA_PRIME is defined in WifiEnterpriseConfig 21203e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande else if (eapMethod == WifiEnterpriseConfig.Eap.AKA_PRIME) { 21303e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande return new EAPMethod(EAP.EAPMethodID.EAP_AKAPrim, null); 21403e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande } 21503e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande */ 21603e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande 217af955ffa0082189fb688429732427c333f2491ceVinit Deshpande Log.d("PARSE-LOG", "Invalid eap method"); 21803e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande return null; 21903e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande } 22003e92b925a595a1a467290a2d54ca2602cce9b9eVinit Deshpande 22171a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist public EAPMethod getEAPMethod() { 22271a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist return mEAPMethod; 22371a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist } 22471a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist 22571a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist public String getRealm() { 22671a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist return mRealm; 22771a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist } 22871a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist 22971a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist public String getImsi() { 23071a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist return mImsi; 23171a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist } 23271a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist 23377f2b82a2e80af8da52c22d69a76def6d4209757Jan Nordqvist public String getUserName() { 23477f2b82a2e80af8da52c22d69a76def6d4209757Jan Nordqvist return mUserName; 23577f2b82a2e80af8da52c22d69a76def6d4209757Jan Nordqvist } 23677f2b82a2e80af8da52c22d69a76def6d4209757Jan Nordqvist 23777f2b82a2e80af8da52c22d69a76def6d4209757Jan Nordqvist public String getPassword() { 23877f2b82a2e80af8da52c22d69a76def6d4209757Jan Nordqvist return mPassword; 23977f2b82a2e80af8da52c22d69a76def6d4209757Jan Nordqvist } 24077f2b82a2e80af8da52c22d69a76def6d4209757Jan Nordqvist 241a1edc185d46d85e04930a5e12b465de9fea64afeJan Nordqvist public CertType getCertType() { 242a1edc185d46d85e04930a5e12b465de9fea64afeJan Nordqvist return mCertType; 243a1edc185d46d85e04930a5e12b465de9fea64afeJan Nordqvist } 244a1edc185d46d85e04930a5e12b465de9fea64afeJan Nordqvist 245a1edc185d46d85e04930a5e12b465de9fea64afeJan Nordqvist public byte[] getFingerPrint() { 246a1edc185d46d85e04930a5e12b465de9fea64afeJan Nordqvist return mFingerPrint; 247a1edc185d46d85e04930a5e12b465de9fea64afeJan Nordqvist } 248a1edc185d46d85e04930a5e12b465de9fea64afeJan Nordqvist 24971a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist @Override 25071a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist public String toString() { 25171a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist return "Credential{" + 25271a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist "mCtime=" + Utils.toUTCString(mCtime) + 25371a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist ", mExpTime=" + Utils.toUTCString(mExpTime) + 25471a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist ", mRealm='" + mRealm + '\'' + 25571a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist ", mCheckAAACert=" + mCheckAAACert + 25671a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist ", mUserName='" + mUserName + '\'' + 25771a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist ", mPassword='" + mPassword + '\'' + 25871a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist ", mMachineManaged=" + mMachineManaged + 25971a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist ", mSTokenApp='" + mSTokenApp + '\'' + 26071a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist ", mShare=" + mShare + 26171a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist ", mEAPMethod=" + mEAPMethod + 26271a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist ", mCertType=" + mCertType + 26371a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist ", mFingerPrint=" + Utils.toHexString(mFingerPrint) + 26471a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist ", mImsi='" + mImsi + '\'' + 26571a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist '}'; 26671a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist } 26771a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist} 268