Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 81336899 authored by Jimmy Chen's avatar Jimmy Chen Committed by Android (Google) Code Review
Browse files

Merge "Wifi: add WAPI constants and fields"

parents c979fbf6 3c21193f
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -30046,6 +30046,7 @@ package android.net.wifi {
  @Deprecated public static class WifiConfiguration.GroupCipher {
    field @Deprecated public static final int CCMP = 3; // 0x3
    field @Deprecated public static final int GCMP_256 = 5; // 0x5
    field @Deprecated public static final int SMS4 = 6; // 0x6
    field @Deprecated public static final int TKIP = 2; // 0x2
    field @Deprecated public static final int WEP104 = 1; // 0x1
    field @Deprecated public static final int WEP40 = 0; // 0x0
@@ -30075,6 +30076,7 @@ package android.net.wifi {
    field @Deprecated public static final int CCMP = 2; // 0x2
    field @Deprecated public static final int GCMP_256 = 3; // 0x3
    field @Deprecated public static final int NONE = 0; // 0x0
    field @Deprecated public static final int SMS4 = 4; // 0x4
    field @Deprecated public static final int TKIP = 1; // 0x1
    field @Deprecated public static final String[] strings;
    field @Deprecated public static final String varName = "pairwise";
@@ -30082,6 +30084,7 @@ package android.net.wifi {
  @Deprecated public static class WifiConfiguration.Protocol {
    field @Deprecated public static final int RSN = 1; // 0x1
    field @Deprecated public static final int WAPI = 3; // 0x3
    field @Deprecated public static final int WPA = 0; // 0x0
    field @Deprecated public static final String[] strings;
    field @Deprecated public static final String varName = "proto";
@@ -30128,6 +30131,12 @@ package android.net.wifi {
    method @Deprecated public void setSubjectMatch(String);
    method public void writeToParcel(android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.WifiEnterpriseConfig> CREATOR;
    field public static final String EXTRA_WAPI_AS_CERTIFICATE_DATA = "android.net.wifi.extra.WAPI_AS_CERTIFICATE_DATA";
    field public static final String EXTRA_WAPI_AS_CERTIFICATE_NAME = "android.net.wifi.extra.WAPI_AS_CERTIFICATE_NAME";
    field public static final String EXTRA_WAPI_USER_CERTIFICATE_DATA = "android.net.wifi.extra.WAPI_USER_CERTIFICATE_DATA";
    field public static final String EXTRA_WAPI_USER_CERTIFICATE_NAME = "android.net.wifi.extra.WAPI_USER_CERTIFICATE_NAME";
    field public static final String WAPI_AS_CERTIFICATE = "WAPIAS_";
    field public static final String WAPI_USER_CERTIFICATE = "WAPIUSR_";
  }
  public static final class WifiEnterpriseConfig.Eap {
@@ -30140,6 +30149,7 @@ package android.net.wifi {
    field public static final int TLS = 1; // 0x1
    field public static final int TTLS = 2; // 0x2
    field public static final int UNAUTH_TLS = 7; // 0x7
    field public static final int WAPI_CERT = 8; // 0x8
  }
  public static final class WifiEnterpriseConfig.Phase2 {
@@ -30211,6 +30221,7 @@ package android.net.wifi {
    method public boolean isPreferredNetworkOffloadSupported();
    method @Deprecated public boolean isScanAlwaysAvailable();
    method public boolean isTdlsSupported();
    method public boolean isWapiSupported();
    method public boolean isWifiEnabled();
    method public boolean isWpa3SaeSupported();
    method public boolean isWpa3SuiteBSupported();
@@ -30367,6 +30378,8 @@ package android.net.wifi {
    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setPasspointConfig(@NonNull android.net.wifi.hotspot2.PasspointConfiguration);
    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setPriority(@IntRange(from=0) int);
    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setSsid(@NonNull String);
    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setWapiEnterpriseConfig(@NonNull android.net.wifi.WifiEnterpriseConfig);
    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setWapiPassphrase(@NonNull String);
    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setWpa2EnterpriseConfig(@NonNull android.net.wifi.WifiEnterpriseConfig);
    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setWpa2Passphrase(@NonNull String);
    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setWpa3EnterpriseConfig(@NonNull android.net.wifi.WifiEnterpriseConfig);
+9 −0
Original line number Diff line number Diff line
@@ -5550,6 +5550,11 @@ package android.net.wifi {
    field @Deprecated public byte id;
  }
  public class ScanResult implements android.os.Parcelable {
    field public static final int KEY_MGMT_WAPI_CERT = 14; // 0xe
    field public static final int KEY_MGMT_WAPI_PSK = 13; // 0xd
  }
  public final class SoftApConfiguration implements android.os.Parcelable {
    method public int describeContents();
    method public int getBand();
@@ -5648,6 +5653,8 @@ package android.net.wifi {
  }
  @Deprecated public static class WifiConfiguration.KeyMgmt {
    field @Deprecated public static final int WAPI_CERT = 14; // 0xe
    field @Deprecated public static final int WAPI_PSK = 13; // 0xd
    field @Deprecated public static final int WPA2_PSK = 4; // 0x4
  }
@@ -5684,10 +5691,12 @@ package android.net.wifi {
    method @NonNull public String getCaPath();
    method @NonNull public String getClientCertificateAlias();
    method public int getOcsp();
    method @Nullable public String getWapiCertSuite();
    method public void setCaCertificateAliases(@Nullable String[]);
    method public void setCaPath(@Nullable String);
    method public void setClientCertificateAlias(@Nullable String);
    method public void setOcsp(int);
    method public void setWapiCertSuite(@Nullable String);
    field public static final int OCSP_NONE = 0; // 0x0
    field public static final int OCSP_REQUEST_CERT_STATUS = 1; // 0x1
    field public static final int OCSP_REQUIRE_ALL_NON_TRUSTED_CERTS_STATUS = 3; // 0x3
+23 −0
Original line number Diff line number Diff line
@@ -101,6 +101,12 @@ public class ScanResult implements Parcelable {
     */
    public static final int PROTOCOL_OSEN = 3;

    /**
     * @hide
     * Security protocol type: WAPI.
     */
    public static final int PROTOCOL_WAPI = 4;

    /**
     * @hide
     * No security key management scheme.
@@ -167,6 +173,18 @@ public class ScanResult implements Parcelable {
     * Security key management scheme: OWE in transition mode.
     */
    public static final int KEY_MGMT_OWE_TRANSITION = 12;
    /**
     * @hide
     * Security key management scheme: WAPI_PSK.
     */
    @SystemApi
    public static final int KEY_MGMT_WAPI_PSK = 13;
    /**
     * @hide
     * Security key management scheme: WAPI_CERT.
     */
    @SystemApi
    public static final int KEY_MGMT_WAPI_CERT = 14;
    /**
     * @hide
     * No cipher suite.
@@ -192,6 +210,11 @@ public class ScanResult implements Parcelable {
     * Cipher suite: GCMP
     */
    public static final int CIPHER_GCMP_256 = 4;
    /**
     * @hide
     * Cipher suite: SMS4
     */
    public static final int CIPHER_SMS4 = 5;

    /**
     * The detected signal level in dBm, also known as the RSSI.
+63 −6
Original line number Diff line number Diff line
@@ -118,7 +118,9 @@ public class WifiConfiguration implements Parcelable {
                OWE,
                SUITE_B_192,
                WPA_PSK_SHA256,
                WPA_EAP_SHA256})
                WPA_EAP_SHA256,
                WAPI_PSK,
                WAPI_CERT})
        public @interface KeyMgmtScheme {}

        /** WPA is not used; plaintext or static WEP could be used. */
@@ -185,11 +187,26 @@ public class WifiConfiguration implements Parcelable {
         */
        public static final int WPA_EAP_SHA256 = 12;

        /**
         * WAPI pre-shared key (requires {@code preSharedKey} to be specified).
         * @hide
         */
        @SystemApi
        public static final int WAPI_PSK = 13;

        /**
         * WAPI certificate to be specified.
         * @hide
         */
        @SystemApi
        public static final int WAPI_CERT = 14;

        public static final String varName = "key_mgmt";

        public static final String[] strings = { "NONE", "WPA_PSK", "WPA_EAP",
                "IEEE8021X", "WPA2_PSK", "OSEN", "FT_PSK", "FT_EAP",
                "SAE", "OWE", "SUITE_B_192", "WPA_PSK_SHA256", "WPA_EAP_SHA256" };
                "SAE", "OWE", "SUITE_B_192", "WPA_PSK_SHA256", "WPA_EAP_SHA256",
                "WAPI_PSK", "WAPI_CERT" };
    }

    /**
@@ -210,9 +227,14 @@ public class WifiConfiguration implements Parcelable {
         */
        public static final int OSEN = 2;

        /**
         * WAPI Protocol
         */
        public static final int WAPI = 3;

        public static final String varName = "proto";

        public static final String[] strings = { "WPA", "RSN", "OSEN" };
        public static final String[] strings = { "WPA", "RSN", "OSEN", "WAPI" };
    }

    /**
@@ -255,10 +277,14 @@ public class WifiConfiguration implements Parcelable {
         * AES in Galois/Counter Mode
         */
        public static final int GCMP_256 = 3;
        /**
         * SMS4 cipher for WAPI
         */
        public static final int SMS4 = 4;

        public static final String varName = "pairwise";

        public static final String[] strings = { "NONE", "TKIP", "CCMP", "GCMP_256" };
        public static final String[] strings = { "NONE", "TKIP", "CCMP", "GCMP_256", "SMS4" };
    }

    /**
@@ -296,12 +322,17 @@ public class WifiConfiguration implements Parcelable {
         * AES in Galois/Counter Mode
         */
        public static final int GCMP_256 = 5;
        /**
         * SMS4 cipher for WAPI
         */
        public static final int SMS4 = 6;

        public static final String varName = "group";

        public static final String[] strings =
                { /* deprecated */ "WEP40", /* deprecated */ "WEP104",
                        "TKIP", "CCMP", "GTK_NOT_USED", "GCMP_256" };
                        "TKIP", "CCMP", "GTK_NOT_USED", "GCMP_256",
                        "SMS4" };
    }

    /**
@@ -383,6 +414,10 @@ public class WifiConfiguration implements Parcelable {
    public static final int SECURITY_TYPE_EAP_SUITE_B = 5;
    /** @hide */
    public static final int SECURITY_TYPE_OWE = 6;
    /** @hide */
    public static final int SECURITY_TYPE_WAPI_PSK = 7;
    /** @hide */
    public static final int SECURITY_TYPE_WAPI_CERT = 8;

    /** @hide */
    @Retention(RetentionPolicy.SOURCE)
@@ -393,7 +428,9 @@ public class WifiConfiguration implements Parcelable {
            SECURITY_TYPE_EAP,
            SECURITY_TYPE_SAE,
            SECURITY_TYPE_EAP_SUITE_B,
            SECURITY_TYPE_OWE
            SECURITY_TYPE_OWE,
            SECURITY_TYPE_WAPI_PSK,
            SECURITY_TYPE_WAPI_CERT
    })
    public @interface SecurityType {}

@@ -445,6 +482,18 @@ public class WifiConfiguration implements Parcelable {
                allowedKeyManagement.set(WifiConfiguration.KeyMgmt.OWE);
                requirePMF = true;
                break;
            case SECURITY_TYPE_WAPI_PSK:
                allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WAPI_PSK);
                allowedProtocols.set(WifiConfiguration.Protocol.WAPI);
                allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.SMS4);
                allowedGroupCiphers.set(WifiConfiguration.GroupCipher.SMS4);
                break;
            case SECURITY_TYPE_WAPI_CERT:
                allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WAPI_CERT);
                allowedProtocols.set(WifiConfiguration.Protocol.WAPI);
                allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.SMS4);
                allowedGroupCiphers.set(WifiConfiguration.GroupCipher.SMS4);
                break;
            default:
                throw new IllegalArgumentException("unknown security type " + securityType);
        }
@@ -2345,6 +2394,10 @@ public class WifiConfiguration implements Parcelable {
            return KeyMgmt.OWE;
        } else if (allowedKeyManagement.get(KeyMgmt.SUITE_B_192)) {
            return KeyMgmt.SUITE_B_192;
        } else if (allowedKeyManagement.get(KeyMgmt.WAPI_PSK)) {
            return KeyMgmt.WAPI_PSK;
        } else if (allowedKeyManagement.get(KeyMgmt.WAPI_CERT)) {
            return KeyMgmt.WAPI_CERT;
        }
        return KeyMgmt.NONE;
    }
@@ -2383,6 +2436,10 @@ public class WifiConfiguration implements Parcelable {
            key = SSID + KeyMgmt.strings[KeyMgmt.SAE];
        } else if (allowedKeyManagement.get(KeyMgmt.SUITE_B_192)) {
            key = SSID + KeyMgmt.strings[KeyMgmt.SUITE_B_192];
        } else if (allowedKeyManagement.get(KeyMgmt.WAPI_PSK)) {
            key = SSID + KeyMgmt.strings[KeyMgmt.WAPI_PSK];
        } else if (allowedKeyManagement.get(KeyMgmt.WAPI_CERT)) {
            key = SSID + KeyMgmt.strings[KeyMgmt.WAPI_CERT];
        } else {
            key = SSID + KeyMgmt.strings[KeyMgmt.NONE];
        }
+66 −1
Original line number Diff line number Diff line
@@ -41,6 +41,36 @@ import java.util.Map;
 */
public class WifiEnterpriseConfig implements Parcelable {

    /** Key prefix for WAPI AS certificates. */
    public static final String WAPI_AS_CERTIFICATE = "WAPIAS_";

    /** Key prefix for WAPI user certificates. */
    public static final String WAPI_USER_CERTIFICATE = "WAPIUSR_";

    /**
     * Intent extra: name for WAPI AS certificates
     */
    public static final String EXTRA_WAPI_AS_CERTIFICATE_NAME =
            "android.net.wifi.extra.WAPI_AS_CERTIFICATE_NAME";

    /**
     * Intent extra: data for WAPI AS certificates
     */
    public static final String EXTRA_WAPI_AS_CERTIFICATE_DATA =
            "android.net.wifi.extra.WAPI_AS_CERTIFICATE_DATA";

    /**
     * Intent extra: name for WAPI AS certificates
     */
    public static final String EXTRA_WAPI_USER_CERTIFICATE_NAME =
            "android.net.wifi.extra.WAPI_USER_CERTIFICATE_NAME";

    /**
     * Intent extra: data for WAPI AS certificates
     */
    public static final String EXTRA_WAPI_USER_CERTIFICATE_DATA =
            "android.net.wifi.extra.WAPI_USER_CERTIFICATE_DATA";

    /** @hide */
    public static final String EMPTY_VALUE         = "NULL";
    /** @hide */
@@ -61,6 +91,7 @@ public class WifiEnterpriseConfig implements Parcelable {
    public static final String DOM_SUFFIX_MATCH_KEY = "domain_suffix_match";
    /** @hide */
    public static final String OPP_KEY_CACHING     = "proactive_key_caching";

    /**
     * String representing the keystore OpenSSL ENGINE's ID.
     * @hide
@@ -130,6 +161,8 @@ public class WifiEnterpriseConfig implements Parcelable {
    public static final String PLMN_KEY            = "plmn";
    /** @hide */
    public static final String CA_CERT_ALIAS_DELIMITER = " ";
    /** @hide */
    public static final String WAPI_CERT_SUITE_KEY = "wapi_cert_suite";

    /**
     * Do not use OCSP stapling (TLS certificate status extension)
@@ -348,9 +381,12 @@ public class WifiEnterpriseConfig implements Parcelable {
        public static final int AKA_PRIME = 6;
        /** Hotspot 2.0 r2 OSEN */
        public static final int UNAUTH_TLS = 7;
        /** WAPI Certificate */
        public static final int WAPI_CERT = 8;
        /** @hide */
        public static final String[] strings =
                { "PEAP", "TLS", "TTLS", "PWD", "SIM", "AKA", "AKA'", "WFA-UNAUTH-TLS" };
                { "PEAP", "TLS", "TTLS", "PWD", "SIM", "AKA", "AKA'", "WFA-UNAUTH-TLS",
                        "WAPI_CERT" };

        /** Prevent initialization */
        private Eap() {}
@@ -494,6 +530,10 @@ public class WifiEnterpriseConfig implements Parcelable {
    public void setEapMethod(int eapMethod) {
        switch (eapMethod) {
            /** Valid methods */
            case Eap.WAPI_CERT:
                mEapMethod = eapMethod;
                setPhase2Method(Phase2.NONE);
                break;
            case Eap.TLS:
            case Eap.UNAUTH_TLS:
                setPhase2Method(Phase2.NONE);
@@ -1313,4 +1353,29 @@ public class WifiEnterpriseConfig implements Parcelable {
        }
        return false;
    }

    /**
     * Set the WAPI certificate suite name on wpa_supplicant.
     *
     * If this field is not specified, WAPI-CERT uses ASU ID from WAI packet
     * as the certificate suite name automatically.
     *
     * @param wapiCertSuite The name for WAPI certificate suite, or null/empty string to clear.
     * @hide
     */
    @SystemApi
    public void setWapiCertSuite(@Nullable String wapiCertSuite) {
        setFieldValue(WAPI_CERT_SUITE_KEY, wapiCertSuite);
    }

    /**
     * Get the WAPI certificate suite name
     * @return the certificate suite name
     * @hide
     */
    @Nullable
    @SystemApi
    public String getWapiCertSuite() {
        return getFieldValue(WAPI_CERT_SUITE_KEY);
    }
}
Loading