diff options
| -rwxr-xr-x | api/system-current.txt | 33 | ||||
| -rw-r--r-- | wifi/java/android/net/wifi/ScanResult.java | 25 | ||||
| -rw-r--r-- | wifi/java/android/net/wifi/WifiAnnotations.java | 41 | ||||
| -rw-r--r-- | wifi/java/android/net/wifi/wificond/WifiCondManager.java | 64 |
4 files changed, 163 insertions, 0 deletions
diff --git a/api/system-current.txt b/api/system-current.txt index 5da2db8383e0..d19a4fd475dc 100755 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -5606,8 +5606,32 @@ package android.net.wifi { } public class ScanResult implements android.os.Parcelable { + field public static final int CIPHER_CCMP = 3; // 0x3 + field public static final int CIPHER_GCMP_256 = 4; // 0x4 + field public static final int CIPHER_NONE = 0; // 0x0 + field public static final int CIPHER_NO_GROUP_ADDRESSED = 1; // 0x1 + field public static final int CIPHER_SMS4 = 5; // 0x5 + field public static final int CIPHER_TKIP = 2; // 0x2 + field public static final int KEY_MGMT_EAP = 2; // 0x2 + field public static final int KEY_MGMT_EAP_SHA256 = 6; // 0x6 + field public static final int KEY_MGMT_EAP_SUITE_B_192 = 10; // 0xa + field public static final int KEY_MGMT_FT_EAP = 4; // 0x4 + field public static final int KEY_MGMT_FT_PSK = 3; // 0x3 + field public static final int KEY_MGMT_FT_SAE = 11; // 0xb + field public static final int KEY_MGMT_NONE = 0; // 0x0 + field public static final int KEY_MGMT_OSEN = 7; // 0x7 + field public static final int KEY_MGMT_OWE = 9; // 0x9 + field public static final int KEY_MGMT_OWE_TRANSITION = 12; // 0xc + field public static final int KEY_MGMT_PSK = 1; // 0x1 + field public static final int KEY_MGMT_PSK_SHA256 = 5; // 0x5 + field public static final int KEY_MGMT_SAE = 8; // 0x8 field public static final int KEY_MGMT_WAPI_CERT = 14; // 0xe field public static final int KEY_MGMT_WAPI_PSK = 13; // 0xd + field public static final int PROTOCOL_NONE = 0; // 0x0 + field public static final int PROTOCOL_OSEN = 3; // 0x3 + field public static final int PROTOCOL_RSN = 2; // 0x2 + field public static final int PROTOCOL_WAPI = 4; // 0x4 + field public static final int PROTOCOL_WPA = 1; // 0x1 } public final class SoftApCapability implements android.os.Parcelable { @@ -6346,6 +6370,7 @@ package android.net.wifi.wificond { method @NonNull public java.util.List<android.net.wifi.wificond.NativeScanResult> getScanResults(@NonNull String, int); method @Nullable public android.net.wifi.wificond.WifiCondManager.TxPacketCounters getTxPacketCounters(@NonNull String); method public boolean initialize(@NonNull Runnable); + method @Nullable public static android.net.wifi.wificond.WifiCondManager.OemSecurityType parseOemSecurityTypeElement(int, int, @NonNull byte[]); method public boolean registerApCallback(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.wificond.WifiCondManager.SoftApCallback); method public void sendMgmtFrame(@NonNull String, @NonNull byte[], int, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.wificond.WifiCondManager.SendMgmtFrameCallback); method public boolean setupInterfaceForClientMode(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.wificond.WifiCondManager.ScanEventCallback, @NonNull android.net.wifi.wificond.WifiCondManager.ScanEventCallback); @@ -6366,6 +6391,14 @@ package android.net.wifi.wificond { field public static final int SEND_MGMT_FRAME_ERROR_UNKNOWN = 1; // 0x1 } + public static class WifiCondManager.OemSecurityType { + ctor public WifiCondManager.OemSecurityType(int, @NonNull java.util.List<java.lang.Integer>, @NonNull java.util.List<java.lang.Integer>, int); + field public final int groupCipher; + field @NonNull public final java.util.List<java.lang.Integer> keyManagement; + field @NonNull public final java.util.List<java.lang.Integer> pairwiseCipher; + field public final int protocol; + } + public static interface WifiCondManager.PnoScanRequestCallback { method public void onPnoRequestFailed(); method public void onPnoRequestSucceeded(); diff --git a/wifi/java/android/net/wifi/ScanResult.java b/wifi/java/android/net/wifi/ScanResult.java index 83a18008919d..61b5aef462df 100644 --- a/wifi/java/android/net/wifi/ScanResult.java +++ b/wifi/java/android/net/wifi/ScanResult.java @@ -82,16 +82,19 @@ public class ScanResult implements Parcelable { * @hide * No security protocol. */ + @SystemApi public static final int PROTOCOL_NONE = 0; /** * @hide * Security protocol type: WPA version 1. */ + @SystemApi public static final int PROTOCOL_WPA = 1; /** * @hide * Security protocol type: RSN, for WPA version 2, and version 3. */ + @SystemApi public static final int PROTOCOL_RSN = 2; /** * @hide @@ -99,79 +102,94 @@ public class ScanResult implements Parcelable { * OSU Server-only authenticated layer 2 Encryption Network. * Used for Hotspot 2.0. */ + @SystemApi public static final int PROTOCOL_OSEN = 3; /** * @hide * Security protocol type: WAPI. */ + @SystemApi public static final int PROTOCOL_WAPI = 4; /** * @hide * No security key management scheme. */ + @SystemApi public static final int KEY_MGMT_NONE = 0; /** * @hide * Security key management scheme: PSK. */ + @SystemApi public static final int KEY_MGMT_PSK = 1; /** * @hide * Security key management scheme: EAP. */ + @SystemApi public static final int KEY_MGMT_EAP = 2; /** * @hide * Security key management scheme: FT_PSK. */ + @SystemApi public static final int KEY_MGMT_FT_PSK = 3; /** * @hide * Security key management scheme: FT_EAP. */ + @SystemApi public static final int KEY_MGMT_FT_EAP = 4; /** * @hide * Security key management scheme: PSK_SHA256 */ + @SystemApi public static final int KEY_MGMT_PSK_SHA256 = 5; /** * @hide * Security key management scheme: EAP_SHA256. */ + @SystemApi public static final int KEY_MGMT_EAP_SHA256 = 6; /** * @hide * Security key management scheme: OSEN. * Used for Hotspot 2.0. */ + @SystemApi public static final int KEY_MGMT_OSEN = 7; /** * @hide * Security key management scheme: SAE. */ + @SystemApi public static final int KEY_MGMT_SAE = 8; /** * @hide * Security key management scheme: OWE. */ + @SystemApi public static final int KEY_MGMT_OWE = 9; /** * @hide * Security key management scheme: SUITE_B_192. */ + @SystemApi public static final int KEY_MGMT_EAP_SUITE_B_192 = 10; /** * @hide * Security key management scheme: FT_SAE. */ + @SystemApi public static final int KEY_MGMT_FT_SAE = 11; /** * @hide * Security key management scheme: OWE in transition mode. */ + @SystemApi public static final int KEY_MGMT_OWE_TRANSITION = 12; /** * @hide @@ -185,35 +203,42 @@ public class ScanResult implements Parcelable { */ @SystemApi public static final int KEY_MGMT_WAPI_CERT = 14; + /** * @hide * No cipher suite. */ + @SystemApi public static final int CIPHER_NONE = 0; /** * @hide * No group addressed, only used for group data cipher. */ + @SystemApi public static final int CIPHER_NO_GROUP_ADDRESSED = 1; /** * @hide * Cipher suite: TKIP */ + @SystemApi public static final int CIPHER_TKIP = 2; /** * @hide * Cipher suite: CCMP */ + @SystemApi public static final int CIPHER_CCMP = 3; /** * @hide * Cipher suite: GCMP */ + @SystemApi public static final int CIPHER_GCMP_256 = 4; /** * @hide * Cipher suite: SMS4 */ + @SystemApi public static final int CIPHER_SMS4 = 5; /** diff --git a/wifi/java/android/net/wifi/WifiAnnotations.java b/wifi/java/android/net/wifi/WifiAnnotations.java index 9223d28836b6..05e5b1d45684 100644 --- a/wifi/java/android/net/wifi/WifiAnnotations.java +++ b/wifi/java/android/net/wifi/WifiAnnotations.java @@ -60,4 +60,45 @@ public final class WifiAnnotations { }) @Retention(RetentionPolicy.SOURCE) public @interface Bandwidth {} + + @IntDef(prefix = { "PROTOCOL_" }, value = { + ScanResult.PROTOCOL_NONE, + ScanResult.PROTOCOL_WPA, + ScanResult.PROTOCOL_RSN, + ScanResult.PROTOCOL_OSEN, + ScanResult.PROTOCOL_WAPI + }) + @Retention(RetentionPolicy.SOURCE) + public @interface Protocol {} + + @IntDef(prefix = { "KEY_MGMT_" }, value = { + ScanResult.KEY_MGMT_NONE, + ScanResult.KEY_MGMT_PSK, + ScanResult.KEY_MGMT_EAP, + ScanResult.KEY_MGMT_FT_PSK, + ScanResult.KEY_MGMT_FT_EAP, + ScanResult.KEY_MGMT_PSK_SHA256, + ScanResult.KEY_MGMT_EAP_SHA256, + ScanResult.KEY_MGMT_OSEN, + ScanResult.KEY_MGMT_SAE, + ScanResult.KEY_MGMT_OWE, + ScanResult.KEY_MGMT_EAP_SUITE_B_192, + ScanResult.KEY_MGMT_FT_SAE, + ScanResult.KEY_MGMT_OWE_TRANSITION, + ScanResult.KEY_MGMT_WAPI_PSK, + ScanResult.KEY_MGMT_WAPI_CERT + }) + @Retention(RetentionPolicy.SOURCE) + public @interface KeyMgmt {} + + @IntDef(prefix = { "CIPHER_" }, value = { + ScanResult.CIPHER_NONE, + ScanResult.CIPHER_NO_GROUP_ADDRESSED, + ScanResult.CIPHER_TKIP, + ScanResult.CIPHER_CCMP, + ScanResult.CIPHER_GCMP_256, + ScanResult.CIPHER_SMS4 + }) + @Retention(RetentionPolicy.SOURCE) + public @interface Cipher {} } diff --git a/wifi/java/android/net/wifi/wificond/WifiCondManager.java b/wifi/java/android/net/wifi/wificond/WifiCondManager.java index 283f2dd78abb..f70bdac25c33 100644 --- a/wifi/java/android/net/wifi/wificond/WifiCondManager.java +++ b/wifi/java/android/net/wifi/wificond/WifiCondManager.java @@ -1154,4 +1154,68 @@ public class WifiCondManager { mApInterfaceListeners.clear(); mSendMgmtFrameInProgress.set(false); } + + /** + * OEM parsed security type + */ + public static class OemSecurityType { + /** The protocol defined in {@link android.net.wifi.WifiAnnotations.Protocol}. */ + public final @WifiAnnotations.Protocol int protocol; + /** + * Supported key management types defined + * in {@link android.net.wifi.WifiAnnotations.KeyMgmt}. + */ + @NonNull public final List<Integer> keyManagement; + /** + * Supported pairwise cipher types defined + * in {@link android.net.wifi.WifiAnnotations.Cipher}. + */ + @NonNull public final List<Integer> pairwiseCipher; + /** The group cipher type defined in {@link android.net.wifi.WifiAnnotations.Cipher}. */ + public final @WifiAnnotations.Cipher int groupCipher; + /** + * Default constructor for OemSecurityType + * + * @param protocol The protocol defined in + * {@link android.net.wifi.WifiAnnotations.Protocol}. + * @param keyManagement Supported key management types defined + * in {@link android.net.wifi.WifiAnnotations.KeyMgmt}. + * @param pairwiseCipher Supported pairwise cipher types defined + * in {@link android.net.wifi.WifiAnnotations.Cipher}. + * @param groupCipher The group cipher type defined + * in {@link android.net.wifi.WifiAnnotations.Cipher}. + */ + public OemSecurityType( + @WifiAnnotations.Protocol int protocol, + @NonNull List<Integer> keyManagement, + @NonNull List<Integer> pairwiseCipher, + @WifiAnnotations.Cipher int groupCipher) { + this.protocol = protocol; + this.keyManagement = (keyManagement != null) + ? keyManagement : new ArrayList<Integer>(); + this.pairwiseCipher = (pairwiseCipher != null) + ? pairwiseCipher : new ArrayList<Integer>(); + this.groupCipher = groupCipher; + } + } + + /** + * OEM information element parser for security types not parsed by the framework. + * + * The OEM method should use the method inputs {@code id}, {@code idExt}, and {@code bytes} + * to perform the parsing. The method should place the results in an OemSecurityType objct. + * + * @param id The information element id. + * @param idExt The information element extension id. This is valid only when id is + * the extension id, {@code 255}. + * @param bytes The raw bytes of information element data, 'Element ID' and 'Length' are + * stripped off already. + * @return an OemSecurityType object if this IE is parsed successfully, null otherwise. + */ + @Nullable public static OemSecurityType parseOemSecurityTypeElement( + int id, + int idExt, + @NonNull byte[] bytes) { + return null; + } } |