mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 11:36:00 +00:00
Merge "hostapd: Add SAE Support"
This commit is contained in:
committed by
Android (Google) Code Review
commit
f2aaa68ec4
@@ -650,7 +650,7 @@ a3eddd9bbdc87e8c22764070037dd1154f1cf006e6fba93364c4f85d4c134a19 android.hardwar
|
||||
94e803236398bed1febb11cc21051bc42ec003700139b099d6c479e02a7ca3c3 android.hardware.neuralnetworks@1.3::IPreparedModelCallback
|
||||
f3c1e7298da628a755b452cd3325e8d0fe867a2debb873069baab6a27434a72d android.hardware.neuralnetworks@1.3::types
|
||||
3e01d4446cd69fd1c48f8572efd97487bc179564b32bd795800b97bbe10be37b android.hardware.wifi@1.4::IWifi
|
||||
514dc8b810658c45d7b0d34132b708cee2658ecedd9c7efc57d0d666ef182484 android.hardware.wifi.hostapd@1.2::IHostapd
|
||||
42e72d7c8fd843d2611ffb9142bfae61dcdb5325860c6602825863f086a91bff android.hardware.wifi.hostapd@1.2::IHostapd
|
||||
11f6448d15336361180391c8ebcdfd2d7cf77b3782d577e594d583aadc9c2877 android.hardware.wifi.hostapd@1.2::types
|
||||
a64467bae843569f0d465c5be7f0c7a5b987985b55a3ef4794dd5afc68538650 android.hardware.wifi.supplicant@1.3::ISupplicant
|
||||
c72cb37b3f66ef65aeb5c6438a3fbe17bbe847fdf62d1a76eafd7f3a8a526105 android.hardware.wifi.supplicant@1.3::ISupplicantStaIface
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package android.hardware.wifi.hostapd@1.2;
|
||||
|
||||
import @1.0::IHostapd.EncryptionType;
|
||||
import @1.0::IHostapd.NetworkParams;
|
||||
import @1.1::IHostapd;
|
||||
import HostapdStatus;
|
||||
@@ -27,6 +28,12 @@ import DebugLevel;
|
||||
* Top-level object for managing SoftAPs.
|
||||
*/
|
||||
interface IHostapd extends @1.1::IHostapd {
|
||||
/** Possible Security types. */
|
||||
enum EncryptionType : @1.0::IHostapd.EncryptionType {
|
||||
WPA3_SAE_TRANSITION,
|
||||
WPA3_SAE,
|
||||
};
|
||||
|
||||
/**
|
||||
* Band bitmMask to use for the SoftAp operations.
|
||||
* A combinatoin of these bits are used to identify the allowed bands
|
||||
@@ -150,6 +157,24 @@ interface IHostapd extends @1.1::IHostapd {
|
||||
ChannelParams channelParams;
|
||||
};
|
||||
|
||||
/**
|
||||
* Parameters to use for setting up the access point network.
|
||||
*/
|
||||
struct NetworkParams {
|
||||
/**
|
||||
* Baseline information as defined in HAL 1.0.
|
||||
*/
|
||||
@1.0::IHostapd.NetworkParams V1_0;
|
||||
/** Key management mask for the replace V1_0.encryptionType. */
|
||||
EncryptionType encryptionType;
|
||||
/**
|
||||
* Passphrase for WPA3_SAE network, WPA3_SAE_TRANSITION and
|
||||
* WPA2_PSK. Replaces @1.0::IHostapd.NetworkParams.pskPassphrase.
|
||||
*/
|
||||
string passphrase;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Adds a new access point for hostapd to control.
|
||||
*
|
||||
|
||||
@@ -41,6 +41,9 @@ namespace {
|
||||
constexpr unsigned char kNwSsid[] = {'t', 'e', 's', 't', '1',
|
||||
'2', '3', '4', '5'};
|
||||
constexpr char kNwPassphrase[] = "test12345";
|
||||
constexpr char kInvalidMaxPskNwPassphrase[] =
|
||||
"0123456789012345678901234567890123456789012345678901234567890123456789";
|
||||
constexpr char kInvalidMinPskNwPassphrase[] = "test";
|
||||
constexpr int kIfaceChannel = 6;
|
||||
constexpr int kIfaceInvalidChannel = 567;
|
||||
constexpr uint8_t kTestZeroMacAddr[] = {[0 ... 5] = 0x0};
|
||||
@@ -61,7 +64,7 @@ class HostapdHidlTest
|
||||
ASSERT_NE(hostapd_.get(), nullptr);
|
||||
}
|
||||
|
||||
virtual void TearDown() override { stopHostapd(wifi_instance_name_); }
|
||||
virtual void TearDown() override { stopHostapd(hostapd_instance_name_); }
|
||||
|
||||
protected:
|
||||
std::string getPrimaryWlanIfaceName() {
|
||||
@@ -133,31 +136,59 @@ class HostapdHidlTest
|
||||
}
|
||||
|
||||
IHostapd::NetworkParams getOpenNwParams() {
|
||||
IHostapd::NetworkParams nw_params;
|
||||
nw_params.ssid =
|
||||
IHostapd::NetworkParams nw_params_1_2;
|
||||
::android::hardware::wifi::hostapd::V1_0::IHostapd::NetworkParams
|
||||
nw_params_1_0;
|
||||
nw_params_1_0.ssid =
|
||||
std::vector<uint8_t>(kNwSsid, kNwSsid + sizeof(kNwSsid));
|
||||
nw_params.isHidden = false;
|
||||
nw_params.encryptionType = IHostapd::EncryptionType::NONE;
|
||||
return nw_params;
|
||||
nw_params_1_0.isHidden = false;
|
||||
nw_params_1_2.V1_0 = nw_params_1_0;
|
||||
nw_params_1_2.encryptionType = IHostapd::EncryptionType::NONE;
|
||||
return nw_params_1_2;
|
||||
}
|
||||
|
||||
IHostapd::NetworkParams getPskNwParams() {
|
||||
IHostapd::NetworkParams nw_params;
|
||||
nw_params.ssid =
|
||||
std::vector<uint8_t>(kNwSsid, kNwSsid + sizeof(kNwSsid));
|
||||
nw_params.isHidden = false;
|
||||
nw_params.encryptionType = IHostapd::EncryptionType::WPA2;
|
||||
nw_params.pskPassphrase = kNwPassphrase;
|
||||
return nw_params;
|
||||
IHostapd::NetworkParams nw_params_1_2 = getOpenNwParams();
|
||||
nw_params_1_2.encryptionType = IHostapd::EncryptionType::WPA2;
|
||||
nw_params_1_2.passphrase = kNwPassphrase;
|
||||
return nw_params_1_2;
|
||||
}
|
||||
|
||||
IHostapd::NetworkParams getInvalidPskNwParams() {
|
||||
IHostapd::NetworkParams nw_params;
|
||||
nw_params.ssid =
|
||||
std::vector<uint8_t>(kNwSsid, kNwSsid + sizeof(kNwSsid));
|
||||
nw_params.isHidden = false;
|
||||
nw_params.encryptionType = IHostapd::EncryptionType::WPA2;
|
||||
return nw_params;
|
||||
IHostapd::NetworkParams nw_params_1_2 = getOpenNwParams();
|
||||
nw_params_1_2.encryptionType = IHostapd::EncryptionType::WPA2;
|
||||
nw_params_1_2.passphrase = kInvalidMaxPskNwPassphrase;
|
||||
|
||||
return nw_params_1_2;
|
||||
}
|
||||
|
||||
IHostapd::NetworkParams getSaeTransitionNwParams() {
|
||||
IHostapd::NetworkParams nw_params_1_2 = getOpenNwParams();
|
||||
nw_params_1_2.encryptionType =
|
||||
IHostapd::EncryptionType::WPA3_SAE_TRANSITION;
|
||||
nw_params_1_2.passphrase = kNwPassphrase;
|
||||
return nw_params_1_2;
|
||||
}
|
||||
|
||||
IHostapd::NetworkParams getInvalidSaeTransitionNwParams() {
|
||||
IHostapd::NetworkParams nw_params_1_2 = getOpenNwParams();
|
||||
nw_params_1_2.encryptionType = IHostapd::EncryptionType::WPA2;
|
||||
nw_params_1_2.passphrase = kInvalidMinPskNwPassphrase;
|
||||
return nw_params_1_2;
|
||||
}
|
||||
|
||||
IHostapd::NetworkParams getSaeNwParams() {
|
||||
IHostapd::NetworkParams nw_params_1_2 = getOpenNwParams();
|
||||
nw_params_1_2.encryptionType = IHostapd::EncryptionType::WPA3_SAE;
|
||||
nw_params_1_2.passphrase = kNwPassphrase;
|
||||
return nw_params_1_2;
|
||||
}
|
||||
|
||||
IHostapd::NetworkParams getInvalidSaeNwParams() {
|
||||
IHostapd::NetworkParams nw_params_1_2 = getOpenNwParams();
|
||||
nw_params_1_2.encryptionType = IHostapd::EncryptionType::WPA3_SAE;
|
||||
nw_params_1_2.passphrase = "";
|
||||
return nw_params_1_2;
|
||||
}
|
||||
|
||||
IHostapd::IfaceParams getIfaceParamsWithInvalidChannel() {
|
||||
@@ -238,6 +269,27 @@ TEST_P(HostapdHidlTest, AddOpenAccessPointWithoutAcs) {
|
||||
EXPECT_EQ(HostapdStatusCode::SUCCESS, status.code);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an access point with SAE Transition network config & ACS disabled.
|
||||
* Access point creation should pass.
|
||||
*/
|
||||
TEST_P(HostapdHidlTest, AddSaeTransitionAccessPointWithoutAcs) {
|
||||
auto status =
|
||||
HIDL_INVOKE(hostapd_, addAccessPoint_1_2, getIfaceParamsWithoutAcs(),
|
||||
getSaeTransitionNwParams());
|
||||
EXPECT_EQ(HostapdStatusCode::SUCCESS, status.code);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an access point with SAE network config & ACS disabled.
|
||||
* Access point creation should pass.
|
||||
*/
|
||||
TEST_P(HostapdHidlTest, AddSAEAccessPointWithoutAcs) {
|
||||
auto status = HIDL_INVOKE(hostapd_, addAccessPoint_1_2,
|
||||
getIfaceParamsWithoutAcs(), getSaeNwParams());
|
||||
EXPECT_EQ(HostapdStatusCode::SUCCESS, status.code);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds & then removes an access point with PSK network config & ACS enabled.
|
||||
* Access point creation & removal should pass.
|
||||
@@ -292,6 +344,28 @@ TEST_P(HostapdHidlTest, AddInvalidPskAccessPointWithoutAcs) {
|
||||
EXPECT_NE(HostapdStatusCode::SUCCESS, status.code);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an access point with invalid SAE transition network config.
|
||||
* Access point creation should fail.
|
||||
*/
|
||||
TEST_P(HostapdHidlTest, AddInvalidSaeTransitionAccessPointWithoutAcs) {
|
||||
auto status =
|
||||
HIDL_INVOKE(hostapd_, addAccessPoint_1_2, getIfaceParamsWithoutAcs(),
|
||||
getInvalidSaeTransitionNwParams());
|
||||
EXPECT_NE(HostapdStatusCode::SUCCESS, status.code);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an access point with invalid SAE network config.
|
||||
* Access point creation should fail.
|
||||
*/
|
||||
TEST_P(HostapdHidlTest, AddInvalidSaeAccessPointWithoutAcs) {
|
||||
auto status =
|
||||
HIDL_INVOKE(hostapd_, addAccessPoint_1_2, getIfaceParamsWithoutAcs(),
|
||||
getInvalidSaeNwParams());
|
||||
EXPECT_NE(HostapdStatusCode::SUCCESS, status.code);
|
||||
}
|
||||
|
||||
/**
|
||||
* forceClientDisconnect should return FAILURE_IFACE_UNKNOWN
|
||||
* when hotspot interface doesn't init..
|
||||
|
||||
Reference in New Issue
Block a user