summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/wifi/AccessPointState.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/settings/wifi/AccessPointState.java')
-rw-r--r--src/com/android/settings/wifi/AccessPointState.java105
1 files changed, 100 insertions, 5 deletions
diff --git a/src/com/android/settings/wifi/AccessPointState.java b/src/com/android/settings/wifi/AccessPointState.java
index 256980238..d05076701 100644
--- a/src/com/android/settings/wifi/AccessPointState.java
+++ b/src/com/android/settings/wifi/AccessPointState.java
@@ -43,6 +43,12 @@ public final class AccessPointState implements Comparable<AccessPointState>, Par
public static final String WEP = "WEP";
public static final String OPEN = "Open";
+ /* For EAP Enterprise fields */
+ public static final String WPA_EAP = "WPA-EAP";
+ public static final String IEEE8021X = "IEEE8021X";
+
+ public static final String[] EAP_METHOD = { "PEAP", "TLS", "TTLS" };
+
/** String present in capabilities if the scan result is ad-hoc */
private static final String ADHOC_CAPABILITY = "[IBSS]";
/** String present in capabilities if the scan result is enterprise secured */
@@ -93,7 +99,19 @@ public final class AccessPointState implements Comparable<AccessPointState>, Par
public static final int WEP_PASSWORD_ASCII = 1;
public static final int WEP_PASSWORD_HEX = 2;
private int mWepPasswordType;
-
+
+ /* Enterprise Fields */
+ public static final int IDENTITY = 0;
+ public static final int ANONYMOUS_IDENTITY = 1;
+ public static final int PRIVATE_KEY_PASSWD = 2;
+ public static final int CLIENT_CERT = 3;
+ public static final int CA_CERT = 4;
+ public static final int PRIVATE_KEY = 5;
+ public static final int MAX_ENTRPRISE_FIELD = 6;
+ private String mEnterpriseFields[] = new String[MAX_ENTRPRISE_FIELD];
+ private String mEap;
+ private String mPhase2;
+
private Context mContext;
/**
@@ -275,7 +293,9 @@ public final class AccessPointState implements Comparable<AccessPointState>, Par
else if (security.equals(WEP)) return mContext.getString(R.string.wifi_security_wep);
else if (security.equals(WPA)) return mContext.getString(R.string.wifi_security_wpa);
else if (security.equals(WPA2)) return mContext.getString(R.string.wifi_security_wpa2);
-
+ else if (security.equals(WPA_EAP)) return mContext.getString(R.string.wifi_security_wpa_eap);
+ else if (security.equals(IEEE8021X)) return mContext.getString(R.string.wifi_security_ieee8021x);
+
return mContext.getString(R.string.wifi_security_unknown);
}
@@ -300,7 +320,7 @@ public final class AccessPointState implements Comparable<AccessPointState>, Par
*/
public static String getScanResultSecurity(ScanResult scanResult) {
final String cap = scanResult.capabilities;
- final String[] securityModes = { WEP, WPA, WPA2 };
+ final String[] securityModes = { WEP, WPA, WPA2, WPA_EAP, IEEE8021X };
for (int i = securityModes.length - 1; i >= 0; i--) {
if (cap.contains(securityModes[i])) {
return securityModes[i];
@@ -347,7 +367,30 @@ public final class AccessPointState implements Comparable<AccessPointState>, Par
mPassword = password;
mWepPasswordType = wepPasswordType;
}
-
+
+ /* For Enterprise Fields */
+ public void setEnterpriseField(int field, String value) {
+ if (value != null && field >= 0 && field < MAX_ENTRPRISE_FIELD) {
+ this.mEnterpriseFields[field] = value;
+ requestRefresh();
+ }
+ }
+
+ public void setEap(int method) {
+ mEap = EAP_METHOD[method];
+ requestRefresh();
+ }
+
+ public String getEap() {
+ return mEap;
+ }
+ public String getEnterpriseField(int field) {
+ if(field >=0 && field < MAX_ENTRPRISE_FIELD) {
+ return mEnterpriseFields[field];
+ }
+ return null;
+ }
+
public boolean hasPassword() {
return !TextUtils.isEmpty(mPassword) || mConfigHadPassword;
}
@@ -382,6 +425,10 @@ public final class AccessPointState implements Comparable<AccessPointState>, Par
} else {
return OPEN;
}
+ } else if (wifiConfig.allowedKeyManagement.get(KeyMgmt.WPA_EAP)) {
+ return WPA_EAP;
+ } else if (wifiConfig.allowedKeyManagement.get(KeyMgmt.IEEE8021X)) {
+ return IEEE8021X;
} else if (wifiConfig.allowedProtocols.get(Protocol.RSN)) {
return WPA2;
} else if (wifiConfig.allowedProtocols.get(Protocol.WPA)) {
@@ -442,7 +489,43 @@ public final class AccessPointState implements Comparable<AccessPointState>, Par
config.priority = priority;
config.hiddenSSID = hiddenSsid;
config.SSID = convertToQuotedString(ssid);
-
+ config.eap = mEap;
+ if (!TextUtils.isEmpty(mEnterpriseFields[IDENTITY])) {
+ config.identity =
+ convertToQuotedString(mEnterpriseFields[IDENTITY]);
+ } else {
+ config.identity = null;
+ }
+ if (!TextUtils.isEmpty(mEnterpriseFields[ANONYMOUS_IDENTITY])) {
+ config.anonymousIdentity = convertToQuotedString(
+ mEnterpriseFields[ANONYMOUS_IDENTITY]);
+ } else {
+ config.anonymousIdentity = null;
+ }
+ if (!TextUtils.isEmpty(mEnterpriseFields[CLIENT_CERT])) {
+ config.clientCert = convertToQuotedString(
+ mEnterpriseFields[CLIENT_CERT]);
+ } else {
+ config.clientCert = null;
+ }
+ if (!TextUtils.isEmpty(mEnterpriseFields[CA_CERT])) {
+ config.caCert = convertToQuotedString(
+ mEnterpriseFields[CA_CERT]);
+ } else {
+ config.caCert = null;
+ }
+ if (!TextUtils.isEmpty(mEnterpriseFields[PRIVATE_KEY])) {
+ config.privateKey = convertToQuotedString(
+ mEnterpriseFields[PRIVATE_KEY]);
+ } else {
+ config.privateKey = null;
+ }
+ if (!TextUtils.isEmpty(mEnterpriseFields[PRIVATE_KEY_PASSWD])) {
+ config.privateKeyPasswd = convertToQuotedString(
+ mEnterpriseFields[PRIVATE_KEY_PASSWD]);
+ } else {
+ config.privateKeyPasswd = null;
+ }
setupSecurity(config);
}
@@ -509,6 +592,14 @@ public final class AccessPointState implements Comparable<AccessPointState>, Par
} else if (security.equals(OPEN)) {
config.allowedKeyManagement.set(KeyMgmt.NONE);
+ } else if (security.equals(WPA_EAP)) {
+ config.allowedGroupCiphers.set(GroupCipher.TKIP);
+ config.allowedGroupCiphers.set(GroupCipher.CCMP);
+ config.allowedKeyManagement.set(KeyMgmt.WPA_EAP);
+ } else if (security.equals(IEEE8021X)) {
+ config.allowedGroupCiphers.set(GroupCipher.TKIP);
+ config.allowedGroupCiphers.set(GroupCipher.CCMP);
+ config.allowedKeyManagement.set(KeyMgmt.IEEE8021X);
}
}
@@ -716,6 +807,10 @@ public final class AccessPointState implements Comparable<AccessPointState>, Par
return mContext.getString(R.string.wifi_security_verbose_wpa2);
} else if (OPEN.equals(security)) {
return mContext.getString(R.string.wifi_security_verbose_open);
+ } else if (WPA_EAP.equals(security)) {
+ return mContext.getString(R.string.wifi_security_verbose_wpa_eap);
+ } else if (IEEE8021X.equals(security)) {
+ return mContext.getString(R.string.wifi_security_verbose_ieee8021x);
} else {
return null;
}