From fcc8fa0d150191fbfa6215bd622709f1146cf788 Mon Sep 17 00:00:00 2001 From: Hai Shalom Date: Mon, 15 Oct 2018 15:36:04 -0700 Subject: [PATCH] wifi/supplicant: Create version 1.2 and add support for SAE and OWE Create version 1.2. and add new interfaces for SAE and OWE, including new key management types and API. Bug: 112195778 Test: Unit tested Change-Id: I9895d3a12c5b8953a04c6f1ebb24e06503e0ff9b --- wifi/supplicant/1.2/Android.bp | 19 ++ wifi/supplicant/1.2/ISupplicantStaNetwork.hal | 232 ++++++++++++++++++ 2 files changed, 251 insertions(+) create mode 100644 wifi/supplicant/1.2/Android.bp create mode 100644 wifi/supplicant/1.2/ISupplicantStaNetwork.hal diff --git a/wifi/supplicant/1.2/Android.bp b/wifi/supplicant/1.2/Android.bp new file mode 100644 index 0000000000..bafd148313 --- /dev/null +++ b/wifi/supplicant/1.2/Android.bp @@ -0,0 +1,19 @@ +// This file is autogenerated by hidl-gen -Landroidbp. + +hidl_interface { + name: "android.hardware.wifi.supplicant@1.2", + root: "android.hardware", + vndk: { + enabled: true, + }, + srcs: [ + "ISupplicantStaNetwork.hal", + ], + interfaces: [ + "android.hardware.wifi.supplicant@1.0", + "android.hardware.wifi.supplicant@1.1", + "android.hidl.base@1.0", + ], + gen_java: true, +} + diff --git a/wifi/supplicant/1.2/ISupplicantStaNetwork.hal b/wifi/supplicant/1.2/ISupplicantStaNetwork.hal new file mode 100644 index 0000000000..0bba0962ae --- /dev/null +++ b/wifi/supplicant/1.2/ISupplicantStaNetwork.hal @@ -0,0 +1,232 @@ +/* + * Copyright 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.hardware.wifi.supplicant@1.2; + +import @1.0::ISupplicantStaNetworkCallback; +import @1.0::ISupplicantStaNetwork; +import @1.0::SupplicantStatus; +import @1.1::ISupplicantStaNetwork; + +/** + * Interface exposed by the supplicant for each station mode network + * configuration it controls. + */ +interface ISupplicantStaNetwork extends @1.1::ISupplicantStaNetwork { + /** Possble mask of values for KeyMgmt param. */ + enum KeyMgmtMask : @1.0::ISupplicantStaNetwork.KeyMgmtMask { + /** WPA3-Personal SAE Key management */ + SAE = 1 << 10, + + /** WPA3-Enterprise Suite-B Key management */ + SUITE_B_192 = 1 << 17, + + /** Enhacned Open (OWE) Key management */ + OWE = 1 << 22, + }; + + /** Possble mask of values for PairwiseCipher param. */ + enum PairwiseCipherMask : @1.0::ISupplicantStaNetwork.PairwiseCipherMask { + /** GCMP-256 Pairwise Cipher */ + GCMP_256 = 1 << 8, + }; + + /** Possble mask of values for GroupCipher param. */ + enum GroupCipherMask : @1.0::ISupplicantStaNetwork.GroupCipherMask { + /** GCMP-256 Group Cipher */ + GCMP_256 = 1 << 8, + }; + + /** + * Set key management mask for the network. + * + * @param keyMgmtMask value to set. + * Combination of |KeyMgmtMask| values. + * @return status Status of the operation. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + setKeyMgmt_1_2(bitfield keyMgmtMask) generates (SupplicantStatus status); + + /** + * Get the key mgmt mask set for the network. + * + * @return status Status of the operation. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + * @return keyMgmtMask Combination of |KeyMgmtMask| values. + */ + getKeyMgmt_1_2() + generates (SupplicantStatus status, bitfield keyMgmtMask); + + /** + * Set pairwise cipher mask for the network. + * + * @param pairwiseCipherMask value to set. + * Combination of |PairwiseCipherMask| values. + * @return status Status of the operation. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + setPairwiseCipher_1_2(bitfield pairwiseCipherMask) + generates (SupplicantStatus status); + + /** + * Get the pairwise cipher mask set for the network. + * + * @return status Status of the operation. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + * @return pairwiseCipherMask Combination of |PairwiseCipherMask| values. + */ + getPairwiseCipher_1_2() + generates (SupplicantStatus status, + bitfield pairwiseCipherMask); + + /** + * Set group cipher mask for the network. + * + * @param groupCipherMask value to set. + * Combination of |GroupCipherMask| values. + * @return status Status of the operation. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + setGroupCipher_1_2(bitfield groupCipherMask) + generates (SupplicantStatus status); + + /** + * Get the group cipher mask set for the network. + * + * @return status Status of the operation. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + * @return groupCipherMask Combination of |GroupCipherMask| values. + */ + getGroupCipher_1_2() + generates (SupplicantStatus status, + bitfield groupCipherMask); + + /** + * Enable TLS Suite-B in EAP Phase1 + * + * @param enable Set to true to enable TLS Suite-B in EAP phase1 + * + * @return status Status of the operation. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + enableTlsSuiteBEapPhase1Param(bool enable) + generates (SupplicantStatus status); + + /** + * Set EAP OpenSSL Suite-B-192 ciphers for WPA3-Enterprise + * Supported option: + * + * @return status Status of the operation. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + enableSuiteBEapOpenSslCiphers() + generates (SupplicantStatus status); + + /** + * Get SAE password for WPA3-Personal + * + * @return status Status of the operation, and a string. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + getSaePassword() + generates (SupplicantStatus status, string saePassword); + + /** + * Get SAE password ID for WPA3-Personal + * + * @return status Status of the operation, and a string. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + getSaePasswordId() + generates (SupplicantStatus status, string saePasswordId); + + /** + * Set SAE password for WPA3-Personal + * + * @param saePassword string with the above option + * + * @return status Status of the operation. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + setSaePassword(string saePassword) + generates (SupplicantStatus status); + + /** + * Set SAE password ID for WPA3-Personal + * + * @param sae_password_id string with the above option + * + * @return status Status of the operation. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + setSaePasswordId(string saePasswordId) + generates (SupplicantStatus status); + + /** + * Get Key management capabilities of the device + * + * @return status Status of the operation, and a string. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + getKeyMgmtCapabilities() + generates (SupplicantStatus status, bitfield keyMgmtMask); +};