From fdc028383a01eaaa9bf93cb5d3ce50bd744eab52 Mon Sep 17 00:00:00 2001 From: Irfan Sheriff Date: Thu, 7 Feb 2013 15:09:22 -0800 Subject: [PATCH] Expose EAP config API This API allows apps to setup access to enterprise Wi-Fi networks. Change-Id: I37573d76b8bd9cad72413afdc4fc62ce57b4dc43 --- api/current.txt | 40 +++++++++++++++++++ .../android/net/wifi/WifiConfiguration.java | 1 - .../net/wifi/WifiEnterpriseConfig.java | 30 ++++++++++++-- 3 files changed, 66 insertions(+), 5 deletions(-) diff --git a/api/current.txt b/api/current.txt index ee4732d019f64..2615e0bcc877b 100644 --- a/api/current.txt +++ b/api/current.txt @@ -13417,6 +13417,7 @@ package android.net.wifi { field public java.util.BitSet allowedKeyManagement; field public java.util.BitSet allowedPairwiseCiphers; field public java.util.BitSet allowedProtocols; + field public android.net.wifi.WifiEnterpriseConfig enterpriseConfig; field public boolean hiddenSSID; field public int networkId; field public java.lang.String preSharedKey; @@ -13474,6 +13475,45 @@ package android.net.wifi { field public static final java.lang.String[] strings; } + public class WifiEnterpriseConfig implements android.os.Parcelable { + ctor public WifiEnterpriseConfig(); + ctor public WifiEnterpriseConfig(android.net.wifi.WifiEnterpriseConfig); + method public int describeContents(); + method public java.lang.String getAnonymousIdentity(); + method public int getEapMethod(); + method public java.lang.String getIdentity(); + method public int getPhase2Method(); + method public java.lang.String getSubjectMatch(); + method public void setAnonymousIdentity(java.lang.String); + method public void setCaCertificate(java.security.cert.X509Certificate); + method public void setClientKeyEntry(java.security.PrivateKey, java.security.cert.X509Certificate); + method public void setEapMethod(int); + method public void setIdentity(java.lang.String); + method public void setPassword(java.lang.String); + method public void setPhase2Method(int); + method public void setSubjectMatch(java.lang.String); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + + public static final class WifiEnterpriseConfig.Eap { + ctor public WifiEnterpriseConfig.Eap(); + field public static final int NONE = -1; // 0xffffffff + field public static final int PEAP = 0; // 0x0 + field public static final int PWD = 3; // 0x3 + field public static final int TLS = 1; // 0x1 + field public static final int TTLS = 2; // 0x2 + } + + public static final class WifiEnterpriseConfig.Phase2 { + ctor public WifiEnterpriseConfig.Phase2(); + field public static final int GTC = 4; // 0x4 + field public static final int MSCHAP = 2; // 0x2 + field public static final int MSCHAPV2 = 3; // 0x3 + field public static final int NONE = 0; // 0x0 + field public static final int PAP = 1; // 0x1 + } + public class WifiInfo implements android.os.Parcelable { method public int describeContents(); method public java.lang.String getBSSID(); diff --git a/wifi/java/android/net/wifi/WifiConfiguration.java b/wifi/java/android/net/wifi/WifiConfiguration.java index bf82792779bb1..b971fc3387352 100644 --- a/wifi/java/android/net/wifi/WifiConfiguration.java +++ b/wifi/java/android/net/wifi/WifiConfiguration.java @@ -277,7 +277,6 @@ public class WifiConfiguration implements Parcelable { /** * The enterprise configuration details specifying the EAP method, * certificates and other settings associated with the EAP. - * @hide */ public WifiEnterpriseConfig enterpriseConfig; diff --git a/wifi/java/android/net/wifi/WifiEnterpriseConfig.java b/wifi/java/android/net/wifi/WifiEnterpriseConfig.java index 7313e7ee511bf..95ffb1c8b1880 100644 --- a/wifi/java/android/net/wifi/WifiEnterpriseConfig.java +++ b/wifi/java/android/net/wifi/WifiEnterpriseConfig.java @@ -42,7 +42,10 @@ import java.security.spec.PKCS8EncodedKeySpec; import java.util.HashMap; import java.util.Map; -/** Enterprise configuration details for Wi-Fi @hide */ +/** + * Enterprise configuration details for Wi-Fi. Stores details about the EAP method + * and any associated credentials. + */ public class WifiEnterpriseConfig implements Parcelable { private static final String TAG = "WifiEnterpriseConfig"; /** @@ -211,22 +214,32 @@ public class WifiEnterpriseConfig implements Parcelable { } }; + /** The Extensible Authentication Protocol method used */ public static final class Eap { - /* NONE represents an empty enterprise config */ + /** No EAP method used. Represents an empty config */ public static final int NONE = -1; + /** Protected EAP */ public static final int PEAP = 0; + /** EAP-Transport Layer Security */ public static final int TLS = 1; + /** EAP-Tunneled Transport Layer Security */ public static final int TTLS = 2; + /** EAP-Password */ public static final int PWD = 3; /** @hide */ public static final String[] strings = { "PEAP", "TLS", "TTLS", "PWD" }; } + /** The inner authentication method used */ public static final class Phase2 { public static final int NONE = 0; + /** Password Authentication Protocol */ public static final int PAP = 1; + /** Microsoft Challenge Handshake Authentication Protocol */ public static final int MSCHAP = 2; + /** Microsoft Challenge Handshake Authentication Protocol v2 */ public static final int MSCHAPV2 = 3; + /** Generic Token Card */ public static final int GTC = 4; private static final String PREFIX = "auth="; /** @hide */ @@ -249,6 +262,7 @@ public class WifiEnterpriseConfig implements Parcelable { * Set the EAP authentication method. * @param eapMethod is one {@link Eap#PEAP}, {@link Eap#TLS}, {@link Eap#TTLS} or * {@link Eap#PWD} + * @throws IllegalArgumentException on an invalid eap method */ public void setEapMethod(int eapMethod) { switch (eapMethod) { @@ -279,6 +293,7 @@ public class WifiEnterpriseConfig implements Parcelable { * @param phase2Method is the inner authentication method and can be one of {@link Phase2#NONE}, * {@link Phase2#PAP}, {@link Phase2#MSCHAP}, {@link Phase2#MSCHAPV2}, * {@link Phase2#GTC} + * @throws IllegalArgumentException on an invalid phase2 method * */ public void setPhase2Method(int phase2Method) { @@ -378,7 +393,10 @@ public class WifiEnterpriseConfig implements Parcelable { * Specify a X.509 certificate that identifies the server. * *

A default name is automatically assigned to the certificate and used - * with this configuration. + * with this configuration. The framework takes care of installing the + * certificate when the config is saved and removing the certificate when + * the config is removed. + * * @param cert X.509 CA certificate * @throws IllegalArgumentException if not a CA certificate */ @@ -425,9 +443,13 @@ public class WifiEnterpriseConfig implements Parcelable { * Specify a private key and client certificate for client authorization. * *

A default name is automatically assigned to the key entry and used - * with this configuration. + * with this configuration. The framework takes care of installing the + * key entry when the config is saved and removing the key entry when + * the config is removed. + * @param privateKey * @param clientCertificate + * @throws IllegalArgumentException for an invalid key or certificate. */ public void setClientKeyEntry(PrivateKey privateKey, X509Certificate clientCertificate) { if (clientCertificate != null) {