Loading current.txt +1 −1 Original line number Diff line number Diff line Loading @@ -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 Loading wifi/hostapd/1.2/IHostapd.hal +25 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 Loading Loading @@ -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. * Loading wifi/hostapd/1.2/vts/functional/hostapd_hidl_test.cpp +93 −19 Original line number Diff line number Diff line Loading @@ -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}; Loading @@ -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() { Loading Loading @@ -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() { Loading Loading @@ -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. Loading Loading @@ -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.. Loading Loading
current.txt +1 −1 Original line number Diff line number Diff line Loading @@ -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 Loading
wifi/hostapd/1.2/IHostapd.hal +25 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 Loading Loading @@ -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. * Loading
wifi/hostapd/1.2/vts/functional/hostapd_hidl_test.cpp +93 −19 Original line number Diff line number Diff line Loading @@ -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}; Loading @@ -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() { Loading Loading @@ -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() { Loading Loading @@ -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. Loading Loading @@ -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.. Loading