16ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius/* 26ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * hidl interface for wpa_supplicant daemon 36ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * Copyright (c) 2004-2016, Jouni Malinen <j@w1.fi> 46ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * Copyright (c) 2004-2016, Roshan Pius <rpius@google.com> 56ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * 66ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * This software may be distributed under the terms of the BSD license. 76ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * See README for more details. 86ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius */ 96ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 106ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius#include "hidl_manager.h" 116ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius#include "hidl_return_util.h" 126ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius#include "misc_utils.h" 136ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius#include "sta_network.h" 146ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 156ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusextern "C" { 166ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius#include "wps_supplicant.h" 176ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 186ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 196ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusnamespace { 206ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piususing android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork; 216ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piususing android::hardware::wifi::supplicant::V1_0::SupplicantStatus; 226ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 236ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusconstexpr uint8_t kZeroBssid[6] = {0, 0, 0, 0, 0, 0}; 246ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 256ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusconstexpr uint32_t kAllowedKeyMgmtMask = 266ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius (static_cast<uint32_t>(ISupplicantStaNetwork::KeyMgmtMask::NONE) | 276ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<uint32_t>(ISupplicantStaNetwork::KeyMgmtMask::WPA_PSK) | 286ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<uint32_t>(ISupplicantStaNetwork::KeyMgmtMask::WPA_EAP) | 296ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<uint32_t>(ISupplicantStaNetwork::KeyMgmtMask::IEEE8021X) | 306ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<uint32_t>(ISupplicantStaNetwork::KeyMgmtMask::FT_EAP) | 316ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<uint32_t>(ISupplicantStaNetwork::KeyMgmtMask::FT_PSK) | 326ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<uint32_t>(ISupplicantStaNetwork::KeyMgmtMask::OSEN)); 336ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusconstexpr uint32_t kAllowedProtoMask = 346ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius (static_cast<uint32_t>(ISupplicantStaNetwork::ProtoMask::WPA) | 356ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<uint32_t>(ISupplicantStaNetwork::ProtoMask::RSN) | 366ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<uint32_t>(ISupplicantStaNetwork::ProtoMask::OSEN)); 376ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusconstexpr uint32_t kAllowedAuthAlgMask = 386ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius (static_cast<uint32_t>(ISupplicantStaNetwork::AuthAlgMask::OPEN) | 396ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<uint32_t>(ISupplicantStaNetwork::AuthAlgMask::SHARED) | 406ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<uint32_t>(ISupplicantStaNetwork::AuthAlgMask::LEAP)); 416ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusconstexpr uint32_t kAllowedGroupCipherMask = 426ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius (static_cast<uint32_t>(ISupplicantStaNetwork::GroupCipherMask::WEP40) | 436ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<uint32_t>(ISupplicantStaNetwork::GroupCipherMask::WEP104) | 446ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<uint32_t>(ISupplicantStaNetwork::GroupCipherMask::TKIP) | 456ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<uint32_t>(ISupplicantStaNetwork::GroupCipherMask::CCMP) | 466ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<uint32_t>( 476ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius ISupplicantStaNetwork::GroupCipherMask::GTK_NOT_USED)); 486ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusconstexpr uint32_t kAllowedPairwisewCipherMask = 496ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius (static_cast<uint32_t>(ISupplicantStaNetwork::PairwiseCipherMask::NONE) | 506ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<uint32_t>(ISupplicantStaNetwork::PairwiseCipherMask::TKIP) | 516ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<uint32_t>(ISupplicantStaNetwork::PairwiseCipherMask::CCMP)); 526ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 536ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusconstexpr uint32_t kEapMethodMax = 546ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<uint32_t>(ISupplicantStaNetwork::EapMethod::WFA_UNAUTH_TLS) + 1; 556ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusconstexpr char const *kEapMethodStrings[kEapMethodMax] = { 566ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius "PEAP", "TLS", "TTLS", "PWD", "SIM", "AKA", "AKA'", "WFA-UNAUTH-TLS"}; 576ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusconstexpr uint32_t kEapPhase2MethodMax = 586ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<uint32_t>(ISupplicantStaNetwork::EapPhase2Method::AKA_PRIME) + 596ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 1; 606ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusconstexpr char const *kEapPhase2MethodStrings[kEapPhase2MethodMax] = { 616ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius "", "PAP", "MSCHAP", "MSCHAPV2", "GTC", "SIM", "AKA", "AKA'"}; 626ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusconstexpr char kEapPhase2AuthPrefix[] = "auth="; 636ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusconstexpr char kEapPhase2AuthEapPrefix[] = "autheap="; 646ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusconstexpr char kNetworkEapSimGsmAuthResponse[] = "GSM-AUTH"; 656ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusconstexpr char kNetworkEapSimUmtsAuthResponse[] = "UMTS-AUTH"; 666ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusconstexpr char kNetworkEapSimUmtsAutsResponse[] = "UMTS-AUTS"; 676ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusconstexpr char kNetworkEapSimGsmAuthFailure[] = "GSM-FAIL"; 686ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusconstexpr char kNetworkEapSimUmtsAuthFailure[] = "UMTS-FAIL"; 696ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} // namespace 706ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 716ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusnamespace android { 726ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusnamespace hardware { 736ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusnamespace wifi { 746ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusnamespace supplicant { 756ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusnamespace V1_1 { 766ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusnamespace implementation { 776ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piususing hidl_return_util::validateAndCall; 786ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 796ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusStaNetwork::StaNetwork( 806ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_global *wpa_global, const char ifname[], int network_id) 816ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius : wpa_global_(wpa_global), 826ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius ifname_(ifname), 836ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius network_id_(network_id), 846ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius is_valid_(true) 856ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 866ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 876ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 886ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusvoid StaNetwork::invalidate() { is_valid_ = false; } 896ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusbool StaNetwork::isValid() 906ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 916ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return (is_valid_ && (retrieveNetworkPtr() != nullptr)); 926ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 936ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 946ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getId(getId_cb _hidl_cb) 956ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 966ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 976ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 986ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getIdInternal, _hidl_cb); 996ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 1006ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 1016ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getInterfaceName(getInterfaceName_cb _hidl_cb) 1026ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 1036ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 1046ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 1056ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getInterfaceNameInternal, _hidl_cb); 1066ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 1076ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 1086ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getType(getType_cb _hidl_cb) 1096ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 1106ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 1116ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 1126ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getTypeInternal, _hidl_cb); 1136ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 1146ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 1156ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::registerCallback( 1166ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const sp<ISupplicantStaNetworkCallback> &callback, 1176ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius registerCallback_cb _hidl_cb) 1186ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 1196ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 1206ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 1216ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::registerCallbackInternal, _hidl_cb, callback); 1226ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 1236ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 1246ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setSsid( 1256ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const hidl_vec<uint8_t> &ssid, setSsid_cb _hidl_cb) 1266ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 1276ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 1286ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 1296ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setSsidInternal, _hidl_cb, ssid); 1306ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 1316ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 1326ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setBssid( 1336ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const hidl_array<uint8_t, 6> &bssid, setBssid_cb _hidl_cb) 1346ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 1356ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 1366ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 1376ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setBssidInternal, _hidl_cb, bssid); 1386ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 1396ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 1406ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setScanSsid(bool enable, setScanSsid_cb _hidl_cb) 1416ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 1426ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 1436ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 1446ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setScanSsidInternal, _hidl_cb, enable); 1456ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 1466ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 1476ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setKeyMgmt( 1486ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius uint32_t key_mgmt_mask, setKeyMgmt_cb _hidl_cb) 1496ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 1506ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 1516ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 1526ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setKeyMgmtInternal, _hidl_cb, key_mgmt_mask); 1536ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 1546ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 1556ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setProto(uint32_t proto_mask, setProto_cb _hidl_cb) 1566ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 1576ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 1586ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 1596ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setProtoInternal, _hidl_cb, proto_mask); 1606ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 1616ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 1626ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setAuthAlg( 1636ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius uint32_t auth_alg_mask, 1646ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::function<void(const SupplicantStatus &status)> _hidl_cb) 1656ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 1666ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 1676ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 1686ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setAuthAlgInternal, _hidl_cb, auth_alg_mask); 1696ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 1706ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 1716ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setGroupCipher( 1726ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius uint32_t group_cipher_mask, setGroupCipher_cb _hidl_cb) 1736ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 1746ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 1756ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 1766ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setGroupCipherInternal, _hidl_cb, group_cipher_mask); 1776ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 1786ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 1796ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setPairwiseCipher( 1806ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius uint32_t pairwise_cipher_mask, setPairwiseCipher_cb _hidl_cb) 1816ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 1826ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 1836ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 1846ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setPairwiseCipherInternal, _hidl_cb, 1856ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius pairwise_cipher_mask); 1866ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 1876ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 1886ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setPskPassphrase( 1896ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const hidl_string &psk, setPskPassphrase_cb _hidl_cb) 1906ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 1916ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 1926ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 1936ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setPskPassphraseInternal, _hidl_cb, psk); 1946ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 1956ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 1966ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setPsk( 1976ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const hidl_array<uint8_t, 32> &psk, setPsk_cb _hidl_cb) 1986ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 1996ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 2006ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 2016ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setPskInternal, _hidl_cb, psk); 2026ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 2036ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 2046ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setWepKey( 2056ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius uint32_t key_idx, const hidl_vec<uint8_t> &wep_key, setWepKey_cb _hidl_cb) 2066ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 2076ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 2086ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 2096ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setWepKeyInternal, _hidl_cb, key_idx, wep_key); 2106ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 2116ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 2126ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setWepTxKeyIdx( 2136ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius uint32_t key_idx, setWepTxKeyIdx_cb _hidl_cb) 2146ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 2156ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 2166ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 2176ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setWepTxKeyIdxInternal, _hidl_cb, key_idx); 2186ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 2196ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 2206ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setRequirePmf(bool enable, setRequirePmf_cb _hidl_cb) 2216ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 2226ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 2236ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 2246ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setRequirePmfInternal, _hidl_cb, enable); 2256ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 2266ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 2276ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setEapMethod( 2286ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius ISupplicantStaNetwork::EapMethod method, setEapMethod_cb _hidl_cb) 2296ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 2306ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 2316ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 2326ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setEapMethodInternal, _hidl_cb, method); 2336ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 2346ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 2356ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setEapPhase2Method( 2366ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius ISupplicantStaNetwork::EapPhase2Method method, 2376ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius setEapPhase2Method_cb _hidl_cb) 2386ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 2396ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 2406ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 2416ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setEapPhase2MethodInternal, _hidl_cb, method); 2426ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 2436ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 2446ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setEapIdentity( 2456ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const hidl_vec<uint8_t> &identity, setEapIdentity_cb _hidl_cb) 2466ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 2476ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 2486ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 2496ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setEapIdentityInternal, _hidl_cb, identity); 2506ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 2516ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 25289da2fbba2216ed312512c8a2ea5e675d5157077pkanwarReturn<void> StaNetwork::setEapEncryptedImsiIdentity( 25389da2fbba2216ed312512c8a2ea5e675d5157077pkanwar const EapSimEncryptedIdentity &identity, setEapEncryptedImsiIdentity_cb _hidl_cb) 25489da2fbba2216ed312512c8a2ea5e675d5157077pkanwar{ 25589da2fbba2216ed312512c8a2ea5e675d5157077pkanwar return validateAndCall( 25689da2fbba2216ed312512c8a2ea5e675d5157077pkanwar this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 25789da2fbba2216ed312512c8a2ea5e675d5157077pkanwar &StaNetwork::setEapEncryptedImsiIdentityInternal, _hidl_cb, identity); 25889da2fbba2216ed312512c8a2ea5e675d5157077pkanwar} 25989da2fbba2216ed312512c8a2ea5e675d5157077pkanwar 2606ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setEapAnonymousIdentity( 2616ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const hidl_vec<uint8_t> &identity, setEapAnonymousIdentity_cb _hidl_cb) 2626ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 2636ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 2646ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 2656ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setEapAnonymousIdentityInternal, _hidl_cb, identity); 2666ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 2676ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 2686ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setEapPassword( 2696ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const hidl_vec<uint8_t> &password, setEapPassword_cb _hidl_cb) 2706ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 2716ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 2726ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 2736ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setEapPasswordInternal, _hidl_cb, password); 2746ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 2756ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 2766ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setEapCACert( 2776ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const hidl_string &path, setEapCACert_cb _hidl_cb) 2786ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 2796ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 2806ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 2816ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setEapCACertInternal, _hidl_cb, path); 2826ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 2836ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 2846ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setEapCAPath( 2856ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const hidl_string &path, setEapCAPath_cb _hidl_cb) 2866ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 2876ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 2886ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 2896ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setEapCAPathInternal, _hidl_cb, path); 2906ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 2916ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 2926ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setEapClientCert( 2936ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const hidl_string &path, setEapClientCert_cb _hidl_cb) 2946ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 2956ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 2966ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 2976ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setEapClientCertInternal, _hidl_cb, path); 2986ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 2996ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 3006ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setEapPrivateKeyId( 3016ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const hidl_string &id, setEapPrivateKeyId_cb _hidl_cb) 3026ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 3036ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 3046ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 3056ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setEapPrivateKeyIdInternal, _hidl_cb, id); 3066ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 3076ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 3086ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setEapSubjectMatch( 3096ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const hidl_string &match, setEapSubjectMatch_cb _hidl_cb) 3106ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 3116ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 3126ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 3136ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setEapSubjectMatchInternal, _hidl_cb, match); 3146ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 3156ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 3166ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setEapAltSubjectMatch( 3176ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const hidl_string &match, setEapAltSubjectMatch_cb _hidl_cb) 3186ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 3196ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 3206ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 3216ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setEapAltSubjectMatchInternal, _hidl_cb, match); 3226ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 3236ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 3246ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setEapEngine(bool enable, setEapEngine_cb _hidl_cb) 3256ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 3266ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 3276ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 3286ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setEapEngineInternal, _hidl_cb, enable); 3296ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 3306ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 3316ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setEapEngineID( 3326ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const hidl_string &id, setEapEngineID_cb _hidl_cb) 3336ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 3346ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 3356ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 3366ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setEapEngineIDInternal, _hidl_cb, id); 3376ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 3386ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 3396ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setEapDomainSuffixMatch( 3406ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const hidl_string &match, setEapDomainSuffixMatch_cb _hidl_cb) 3416ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 3426ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 3436ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 3446ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setEapDomainSuffixMatchInternal, _hidl_cb, match); 3456ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 3466ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 3476ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setProactiveKeyCaching( 3486ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius bool enable, setProactiveKeyCaching_cb _hidl_cb) 3496ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 3506ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 3516ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 3526ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setProactiveKeyCachingInternal, _hidl_cb, enable); 3536ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 3546ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 3556ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setIdStr( 3566ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const hidl_string &id_str, setIdStr_cb _hidl_cb) 3576ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 3586ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 3596ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 3606ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setIdStrInternal, _hidl_cb, id_str); 3616ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 3626ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 3636ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::setUpdateIdentifier( 3646ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius uint32_t id, setUpdateIdentifier_cb _hidl_cb) 3656ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 3666ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 3676ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 3686ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::setUpdateIdentifierInternal, _hidl_cb, id); 3696ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 3706ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 3716ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getSsid(getSsid_cb _hidl_cb) 3726ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 3736ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 3746ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 3756ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getSsidInternal, _hidl_cb); 3766ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 3776ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 3786ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getBssid(getBssid_cb _hidl_cb) 3796ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 3806ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 3816ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 3826ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getBssidInternal, _hidl_cb); 3836ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 3846ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 3856ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getScanSsid(getScanSsid_cb _hidl_cb) 3866ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 3876ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 3886ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 3896ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getScanSsidInternal, _hidl_cb); 3906ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 3916ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 3926ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getKeyMgmt(getKeyMgmt_cb _hidl_cb) 3936ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 3946ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 3956ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 3966ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getKeyMgmtInternal, _hidl_cb); 3976ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 3986ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 3996ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getProto(getProto_cb _hidl_cb) 4006ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 4016ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 4026ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 4036ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getProtoInternal, _hidl_cb); 4046ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 4056ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 4066ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getAuthAlg(getAuthAlg_cb _hidl_cb) 4076ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 4086ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 4096ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 4106ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getAuthAlgInternal, _hidl_cb); 4116ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 4126ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 4136ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getGroupCipher(getGroupCipher_cb _hidl_cb) 4146ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 4156ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 4166ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 4176ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getGroupCipherInternal, _hidl_cb); 4186ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 4196ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 4206ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getPairwiseCipher(getPairwiseCipher_cb _hidl_cb) 4216ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 4226ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 4236ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 4246ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getPairwiseCipherInternal, _hidl_cb); 4256ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 4266ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 4276ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getPskPassphrase(getPskPassphrase_cb _hidl_cb) 4286ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 4296ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 4306ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 4316ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getPskPassphraseInternal, _hidl_cb); 4326ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 4336ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 4346ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getPsk(getPsk_cb _hidl_cb) 4356ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 4366ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 4376ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 4386ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getPskInternal, _hidl_cb); 4396ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 4406ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 4416ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getWepKey(uint32_t key_idx, getWepKey_cb _hidl_cb) 4426ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 4436ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 4446ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 4456ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getWepKeyInternal, _hidl_cb, key_idx); 4466ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 4476ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 4486ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getWepTxKeyIdx(getWepTxKeyIdx_cb _hidl_cb) 4496ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 4506ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 4516ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 4526ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getWepTxKeyIdxInternal, _hidl_cb); 4536ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 4546ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 4556ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getRequirePmf(getRequirePmf_cb _hidl_cb) 4566ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 4576ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 4586ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 4596ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getRequirePmfInternal, _hidl_cb); 4606ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 4616ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 4626ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getEapMethod(getEapMethod_cb _hidl_cb) 4636ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 4646ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 4656ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 4666ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getEapMethodInternal, _hidl_cb); 4676ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 4686ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 4696ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getEapPhase2Method(getEapPhase2Method_cb _hidl_cb) 4706ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 4716ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 4726ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 4736ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getEapPhase2MethodInternal, _hidl_cb); 4746ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 4756ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 4766ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getEapIdentity(getEapIdentity_cb _hidl_cb) 4776ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 4786ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 4796ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 4806ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getEapIdentityInternal, _hidl_cb); 4816ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 4826ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 4836ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getEapAnonymousIdentity( 4846ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius getEapAnonymousIdentity_cb _hidl_cb) 4856ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 4866ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 4876ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 4886ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getEapAnonymousIdentityInternal, _hidl_cb); 4896ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 4906ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 4916ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getEapPassword(getEapPassword_cb _hidl_cb) 4926ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 4936ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 4946ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 4956ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getEapPasswordInternal, _hidl_cb); 4966ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 4976ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 4986ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getEapCACert(getEapCACert_cb _hidl_cb) 4996ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 5006ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 5016ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 5026ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getEapCACertInternal, _hidl_cb); 5036ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 5046ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 5056ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getEapCAPath(getEapCAPath_cb _hidl_cb) 5066ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 5076ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 5086ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 5096ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getEapCAPathInternal, _hidl_cb); 5106ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 5116ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 5126ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getEapClientCert(getEapClientCert_cb _hidl_cb) 5136ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 5146ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 5156ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 5166ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getEapClientCertInternal, _hidl_cb); 5176ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 5186ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 5196ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getEapPrivateKeyId(getEapPrivateKeyId_cb _hidl_cb) 5206ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 5216ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 5226ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 5236ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getEapPrivateKeyIdInternal, _hidl_cb); 5246ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 5256ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 5266ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getEapSubjectMatch(getEapSubjectMatch_cb _hidl_cb) 5276ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 5286ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 5296ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 5306ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getEapSubjectMatchInternal, _hidl_cb); 5316ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 5326ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 5336ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getEapAltSubjectMatch( 5346ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius getEapAltSubjectMatch_cb _hidl_cb) 5356ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 5366ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 5376ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 5386ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getEapAltSubjectMatchInternal, _hidl_cb); 5396ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 5406ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 5416ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getEapEngine(getEapEngine_cb _hidl_cb) 5426ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 5436ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 5446ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 5456ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getEapEngineInternal, _hidl_cb); 5466ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 5476ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 5486ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getEapEngineID(getEapEngineID_cb _hidl_cb) 5496ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 5506ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 5516ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 5526ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getEapEngineIDInternal, _hidl_cb); 5536ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 5546ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 5556ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getEapDomainSuffixMatch( 5566ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius getEapDomainSuffixMatch_cb _hidl_cb) 5576ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 5586ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 5596ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 5606ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getEapDomainSuffixMatchInternal, _hidl_cb); 5616ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 5626ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 5636ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getIdStr(getIdStr_cb _hidl_cb) 5646ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 5656ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 5666ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 5676ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getIdStrInternal, _hidl_cb); 5686ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 5696ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 5706ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::getWpsNfcConfigurationToken( 5716ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius getWpsNfcConfigurationToken_cb _hidl_cb) 5726ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 5736ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 5746ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 5756ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::getWpsNfcConfigurationTokenInternal, _hidl_cb); 5766ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 5776ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 5786ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::enable(bool no_connect, enable_cb _hidl_cb) 5796ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 5806ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 5816ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 5826ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::enableInternal, _hidl_cb, no_connect); 5836ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 5846ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 5856ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::disable(disable_cb _hidl_cb) 5866ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 5876ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 5886ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 5896ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::disableInternal, _hidl_cb); 5906ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 5916ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 5926ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::select(select_cb _hidl_cb) 5936ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 5946ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 5956ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 5966ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::selectInternal, _hidl_cb); 5976ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 5986ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 5996ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::sendNetworkEapSimGsmAuthResponse( 6006ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const hidl_vec<ISupplicantStaNetwork::NetworkResponseEapSimGsmAuthParams> 6016ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &vec_params, 6026ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius sendNetworkEapSimGsmAuthResponse_cb _hidl_cb) 6036ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 6046ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 6056ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 6066ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::sendNetworkEapSimGsmAuthResponseInternal, _hidl_cb, 6076ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius vec_params); 6086ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 6096ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 6106ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::sendNetworkEapSimGsmAuthFailure( 6116ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius sendNetworkEapSimGsmAuthFailure_cb _hidl_cb) 6126ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 6136ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 6146ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 6156ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::sendNetworkEapSimGsmAuthFailureInternal, _hidl_cb); 6166ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 6176ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 6186ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::sendNetworkEapSimUmtsAuthResponse( 6196ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const ISupplicantStaNetwork::NetworkResponseEapSimUmtsAuthParams ¶ms, 6206ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius sendNetworkEapSimUmtsAuthResponse_cb _hidl_cb) 6216ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 6226ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 6236ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 6246ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::sendNetworkEapSimUmtsAuthResponseInternal, _hidl_cb, 6256ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius params); 6266ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 6276ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 6286ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::sendNetworkEapSimUmtsAutsResponse( 6296ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const hidl_array<uint8_t, 14> &auts, 6306ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius sendNetworkEapSimUmtsAutsResponse_cb _hidl_cb) 6316ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 6326ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 6336ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 6346ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::sendNetworkEapSimUmtsAutsResponseInternal, _hidl_cb, 6356ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius auts); 6366ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 6376ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 6386ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::sendNetworkEapSimUmtsAuthFailure( 6396ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius sendNetworkEapSimUmtsAuthFailure_cb _hidl_cb) 6406ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 6416ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 6426ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 6436ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::sendNetworkEapSimUmtsAuthFailureInternal, _hidl_cb); 6446ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 6456ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 6466ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusReturn<void> StaNetwork::sendNetworkEapIdentityResponse( 6476ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const hidl_vec<uint8_t> &identity, 6486ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius sendNetworkEapIdentityResponse_cb _hidl_cb) 6496ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 6506ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return validateAndCall( 6516ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 6526ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &StaNetwork::sendNetworkEapIdentityResponseInternal, _hidl_cb, 6536ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius identity); 6546ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 6556ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 65689da2fbba2216ed312512c8a2ea5e675d5157077pkanwarReturn<void> StaNetwork::sendNetworkEapIdentityResponse_1_1( 65789da2fbba2216ed312512c8a2ea5e675d5157077pkanwar const EapSimIdentity &identity, 65889da2fbba2216ed312512c8a2ea5e675d5157077pkanwar const EapSimEncryptedIdentity &encrypted_imsi_identity, 65989da2fbba2216ed312512c8a2ea5e675d5157077pkanwar sendNetworkEapIdentityResponse_1_1_cb _hidl_cb) 66089da2fbba2216ed312512c8a2ea5e675d5157077pkanwar{ 66189da2fbba2216ed312512c8a2ea5e675d5157077pkanwar return validateAndCall( 66289da2fbba2216ed312512c8a2ea5e675d5157077pkanwar this, SupplicantStatusCode::FAILURE_NETWORK_INVALID, 66389da2fbba2216ed312512c8a2ea5e675d5157077pkanwar &StaNetwork::sendNetworkEapIdentityResponseInternal_1_1, _hidl_cb, 66489da2fbba2216ed312512c8a2ea5e675d5157077pkanwar identity, encrypted_imsi_identity); 66589da2fbba2216ed312512c8a2ea5e675d5157077pkanwar} 66689da2fbba2216ed312512c8a2ea5e675d5157077pkanwar 6676ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, uint32_t> StaNetwork::getIdInternal() 6686ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 6696ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, network_id_}; 6706ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 6716ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 6726ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, std::string> StaNetwork::getInterfaceNameInternal() 6736ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 6746ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, ifname_}; 6756ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 6766ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 6776ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, IfaceType> StaNetwork::getTypeInternal() 6786ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 6796ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, IfaceType::STA}; 6806ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 6816ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 6826ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::registerCallbackInternal( 6836ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const sp<ISupplicantStaNetworkCallback> &callback) 6846ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 6856ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius HidlManager *hidl_manager = HidlManager::getInstance(); 6866ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (!hidl_manager || 6876ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius hidl_manager->addStaNetworkCallbackHidlObject( 6886ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius ifname_, network_id_, callback)) { 6896ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 6906ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 6916ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 6926ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 6936ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 6946ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setSsidInternal(const std::vector<uint8_t> &ssid) 6956ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 6966ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 6976ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (ssid.size() == 0 || 6986ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius ssid.size() > 6996ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<uint32_t>(ISupplicantStaNetwork::ParamSizeLimits:: 7006ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius SSID_MAX_LEN_IN_BYTES)) { 7016ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_ARGS_INVALID, ""}; 7026ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 7036ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (setByteArrayFieldAndResetState( 7046ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius ssid.data(), ssid.size(), &(wpa_ssid->ssid), 7056ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &(wpa_ssid->ssid_len), "ssid")) { 7066ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 7076ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 7086ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (wpa_ssid->passphrase) { 7096ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_config_update_psk(wpa_ssid); 7106ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 7116ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 7126ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 7136ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 7146ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setBssidInternal( 7156ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const std::array<uint8_t, 6> &bssid) 7166ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 7176ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 7186ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius int prev_bssid_set = wpa_ssid->bssid_set; 7196ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius u8 prev_bssid[ETH_ALEN]; 7206ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius os_memcpy(prev_bssid, wpa_ssid->bssid, ETH_ALEN); 7216ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius // Zero'ed array is used to clear out the BSSID value. 7226ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (os_memcmp(bssid.data(), kZeroBssid, ETH_ALEN) == 0) { 7236ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->bssid_set = 0; 7246ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_printf(MSG_MSGDUMP, "BSSID any"); 7256ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } else { 7266ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius os_memcpy(wpa_ssid->bssid, bssid.data(), ETH_ALEN); 7276ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->bssid_set = 1; 7286ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_hexdump(MSG_MSGDUMP, "BSSID", wpa_ssid->bssid, ETH_ALEN); 7296ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 7306ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_supplicant *wpa_s = retrieveIfacePtr(); 7316ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if ((wpa_ssid->bssid_set != prev_bssid_set || 7326ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius os_memcmp(wpa_ssid->bssid, prev_bssid, ETH_ALEN) != 0)) { 7336ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpas_notify_network_bssid_set_changed(wpa_s, wpa_ssid); 7346ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 7356ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 7366ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 7376ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 7386ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setScanSsidInternal(bool enable) 7396ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 7406ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 7416ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->scan_ssid = enable ? 1 : 0; 7426ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius resetInternalStateAfterParamsUpdate(); 7436ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 7446ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 7456ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 7466ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setKeyMgmtInternal(uint32_t key_mgmt_mask) 7476ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 7486ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 7496ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (key_mgmt_mask & ~kAllowedKeyMgmtMask) { 7506ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_ARGS_INVALID, ""}; 7516ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 7526ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->key_mgmt = key_mgmt_mask; 7536ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_printf(MSG_MSGDUMP, "key_mgmt: 0x%x", wpa_ssid->key_mgmt); 7546ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius resetInternalStateAfterParamsUpdate(); 7556ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 7566ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 7576ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 7586ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setProtoInternal(uint32_t proto_mask) 7596ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 7606ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 7616ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (proto_mask & ~kAllowedProtoMask) { 7626ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_ARGS_INVALID, ""}; 7636ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 7646ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->proto = proto_mask; 7656ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_printf(MSG_MSGDUMP, "proto: 0x%x", wpa_ssid->proto); 7666ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius resetInternalStateAfterParamsUpdate(); 7676ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 7686ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 7696ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 7706ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setAuthAlgInternal(uint32_t auth_alg_mask) 7716ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 7726ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 7736ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (auth_alg_mask & ~kAllowedAuthAlgMask) { 7746ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_ARGS_INVALID, ""}; 7756ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 7766ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->auth_alg = auth_alg_mask; 7776ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_printf(MSG_MSGDUMP, "auth_alg: 0x%x", wpa_ssid->auth_alg); 7786ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius resetInternalStateAfterParamsUpdate(); 7796ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 7806ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 7816ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 7826ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setGroupCipherInternal(uint32_t group_cipher_mask) 7836ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 7846ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 7856ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (group_cipher_mask & ~kAllowedGroupCipherMask) { 7866ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_ARGS_INVALID, ""}; 7876ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 7886ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->group_cipher = group_cipher_mask; 7896ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_printf(MSG_MSGDUMP, "group_cipher: 0x%x", wpa_ssid->group_cipher); 7906ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius resetInternalStateAfterParamsUpdate(); 7916ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 7926ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 7936ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 7946ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setPairwiseCipherInternal( 7956ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius uint32_t pairwise_cipher_mask) 7966ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 7976ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 7986ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (pairwise_cipher_mask & ~kAllowedPairwisewCipherMask) { 7996ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_ARGS_INVALID, ""}; 8006ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 8016ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->pairwise_cipher = pairwise_cipher_mask; 8026ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_printf( 8036ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius MSG_MSGDUMP, "pairwise_cipher: 0x%x", wpa_ssid->pairwise_cipher); 8046ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius resetInternalStateAfterParamsUpdate(); 8056ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 8066ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 8076ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 8086ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setPskPassphraseInternal(const std::string &psk) 8096ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 8106ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 8116ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (isPskPassphraseValid(psk)) { 8126ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_ARGS_INVALID, ""}; 8136ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 8146ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (wpa_ssid->passphrase && 8156ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius os_strlen(wpa_ssid->passphrase) == psk.size() && 8166ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius os_memcmp(wpa_ssid->passphrase, psk.c_str(), psk.size()) == 0) { 8176ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 8186ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 8196ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius // Flag to indicate if raw psk is calculated or not using 8206ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius // |wpa_config_update_psk|. Deferred if ssid not already set. 8216ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->psk_set = 0; 8226ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (setStringKeyFieldAndResetState( 8236ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius psk.c_str(), &(wpa_ssid->passphrase), "psk passphrase")) { 8246ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 8256ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 8266ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (wpa_ssid->ssid_len) { 8276ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_config_update_psk(wpa_ssid); 8286ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 8296ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 8306ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 8316ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 8326ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setPskInternal(const std::array<uint8_t, 32> &psk) 8336ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 8346ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 8356ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius WPA_ASSERT(psk.size() == sizeof(wpa_ssid->psk)); 8366ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius str_clear_free(wpa_ssid->passphrase); 8376ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->passphrase = nullptr; 8386ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius os_memcpy(wpa_ssid->psk, psk.data(), sizeof(wpa_ssid->psk)); 8396ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->psk_set = 1; 8406ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius resetInternalStateAfterParamsUpdate(); 8416ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 8426ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 8436ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 8446ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setWepKeyInternal( 8456ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius uint32_t key_idx, const std::vector<uint8_t> &wep_key) 8466ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 8476ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 8486ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (key_idx >= 8496ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<uint32_t>( 8506ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius ISupplicantStaNetwork::ParamSizeLimits::WEP_KEYS_MAX_NUM)) { 8516ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_ARGS_INVALID, ""}; 8526ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 8536ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (wep_key.size() != 8546ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<uint32_t>(ISupplicantStaNetwork::ParamSizeLimits:: 8556ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius WEP40_KEY_LEN_IN_BYTES) && 8566ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wep_key.size() != 8576ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<uint32_t>(ISupplicantStaNetwork::ParamSizeLimits:: 8586ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius WEP104_KEY_LEN_IN_BYTES)) { 8596ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_ARGS_INVALID, ""}; 8606ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 8616ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius os_memcpy(wpa_ssid->wep_key[key_idx], wep_key.data(), wep_key.size()); 8626ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->wep_key_len[key_idx] = wep_key.size(); 8636ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::string msg_dump_title("wep_key" + std::to_string(key_idx)); 8646ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_hexdump_key( 8656ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius MSG_MSGDUMP, msg_dump_title.c_str(), wpa_ssid->wep_key[key_idx], 8666ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->wep_key_len[key_idx]); 8676ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius resetInternalStateAfterParamsUpdate(); 8686ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 8696ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 8706ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 8716ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setWepTxKeyIdxInternal(uint32_t key_idx) 8726ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 8736ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 8746ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (key_idx >= 8756ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<uint32_t>( 8766ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius ISupplicantStaNetwork::ParamSizeLimits::WEP_KEYS_MAX_NUM)) { 8776ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_ARGS_INVALID, ""}; 8786ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 8796ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->wep_tx_keyidx = key_idx; 8806ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius resetInternalStateAfterParamsUpdate(); 8816ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 8826ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 8836ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 8846ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setRequirePmfInternal(bool enable) 8856ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 8866ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 8876ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->ieee80211w = 8886ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius enable ? MGMT_FRAME_PROTECTION_REQUIRED : NO_MGMT_FRAME_PROTECTION; 8896ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius resetInternalStateAfterParamsUpdate(); 8906ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 8916ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 8926ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 8936ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setEapMethodInternal( 8946ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius ISupplicantStaNetwork::EapMethod method) 8956ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 8966ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius uint32_t eap_method_idx = static_cast< 8976ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::underlying_type<ISupplicantStaNetwork::EapMethod>::type>( 8986ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius method); 8996ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (eap_method_idx >= kEapMethodMax) { 9006ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_ARGS_INVALID, ""}; 9016ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 9026ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 9036ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 9046ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius int retrieved_vendor, retrieved_method; 9056ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const char *method_str = kEapMethodStrings[eap_method_idx]; 9066ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius // This string lookup is needed to check if the device supports the 9076ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius // corresponding EAP type. 9086ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius retrieved_method = eap_peer_get_type(method_str, &retrieved_vendor); 9096ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (retrieved_vendor == EAP_VENDOR_IETF && 9106ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius retrieved_method == EAP_TYPE_NONE) { 9116ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 9126ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 9136ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (wpa_ssid->eap.eap_methods) { 9146ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius os_free(wpa_ssid->eap.eap_methods); 9156ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 9166ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius // wpa_supplicant can support setting multiple eap methods for each 9176ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius // network. But, this is not really used by Android. So, just adding 9186ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius // support for setting one EAP method for each network. The additional 9196ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius // |eap_method_type| member in the array is used to indicate the end 9206ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius // of list. 9216ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->eap.eap_methods = 9226ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius (eap_method_type *)os_malloc(sizeof(eap_method_type) * 2); 9236ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (!wpa_ssid->eap.eap_methods) { 9246ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 9256ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 9266ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->eap.eap_methods[0].vendor = retrieved_vendor; 9276ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->eap.eap_methods[0].method = retrieved_method; 9286ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->eap.eap_methods[1].vendor = EAP_VENDOR_IETF; 9296ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->eap.eap_methods[1].method = EAP_TYPE_NONE; 9306ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 9316ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->leap = 0; 9326ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->non_leap = 0; 9336ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (retrieved_vendor == EAP_VENDOR_IETF && 9346ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius retrieved_method == EAP_TYPE_LEAP) { 9356ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->leap++; 9366ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } else { 9376ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->non_leap++; 9386ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 9396ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_hexdump( 9406ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius MSG_MSGDUMP, "eap methods", (u8 *)wpa_ssid->eap.eap_methods, 9416ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius sizeof(eap_method_type) * 2); 9426ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius resetInternalStateAfterParamsUpdate(); 9436ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 9446ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 9456ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 9466ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setEapPhase2MethodInternal( 9476ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius ISupplicantStaNetwork::EapPhase2Method method) 9486ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 9496ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius uint32_t eap_phase2_method_idx = static_cast< 9506ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::underlying_type<ISupplicantStaNetwork::EapPhase2Method>::type>( 9516ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius method); 9526ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (eap_phase2_method_idx >= kEapPhase2MethodMax) { 9536ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_ARGS_INVALID, ""}; 9546ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 9556ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 9566ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 9576ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius // EAP method needs to be set for us to construct the eap 9586ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius // phase 2 method string. 9596ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius SupplicantStatus status; 9606ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius ISupplicantStaNetwork::EapMethod eap_method; 9616ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::tie(status, eap_method) = getEapMethodInternal(); 9626ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (status.code != SupplicantStatusCode::SUCCESS) { 9636ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_UNKNOWN, 9646ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius "EAP method not set"}; 9656ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 9666ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::string eap_phase2_str; 9676ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (method == ISupplicantStaNetwork::EapPhase2Method::NONE) { 9686ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius eap_phase2_str = ""; 9696ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } else if ( 9706ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius eap_method == ISupplicantStaNetwork::EapMethod::TTLS && 9716ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius method == ISupplicantStaNetwork::EapPhase2Method::GTC) { 9726ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius eap_phase2_str = kEapPhase2AuthEapPrefix; 9736ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } else { 9746ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius eap_phase2_str = kEapPhase2AuthPrefix; 9756ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 9766ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius eap_phase2_str += kEapPhase2MethodStrings[eap_phase2_method_idx]; 9776ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (setStringFieldAndResetState( 9786ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius eap_phase2_str.c_str(), &(wpa_ssid->eap.phase2), 9796ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius "eap phase2")) { 9806ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 9816ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 9826ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 9836ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 9846ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 9856ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setEapIdentityInternal( 9866ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const std::vector<uint8_t> &identity) 9876ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 9886ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 9896ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (setByteArrayFieldAndResetState( 9906ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius identity.data(), identity.size(), &(wpa_ssid->eap.identity), 9916ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &(wpa_ssid->eap.identity_len), "eap identity")) { 99200a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park return { SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 99300a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park } 99400a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park // plain IMSI identity 99500a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park if (setByteArrayFieldAndResetState( 99600a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park identity.data(), identity.size(), &(wpa_ssid->eap.imsi_identity), 99700a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park &(wpa_ssid->eap.imsi_identity_len), "eap imsi identity")) { 99800a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park return { SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 9996ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 10006ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 10016ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 10026ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 100389da2fbba2216ed312512c8a2ea5e675d5157077pkanwarSupplicantStatus StaNetwork::setEapEncryptedImsiIdentityInternal( 100489da2fbba2216ed312512c8a2ea5e675d5157077pkanwar const std::vector<uint8_t> &identity) 100589da2fbba2216ed312512c8a2ea5e675d5157077pkanwar{ 100600a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 100700a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park // encrypted IMSI identity 100800a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park if (setByteArrayFieldAndResetState( 100900a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park identity.data(), identity.size(), &(wpa_ssid->eap.identity), 101000a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park &(wpa_ssid->eap.identity_len), "eap encrypted imsi identity")) { 101100a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 101200a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park } 101300a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park return {SupplicantStatusCode::SUCCESS, ""}; 101489da2fbba2216ed312512c8a2ea5e675d5157077pkanwar} 101589da2fbba2216ed312512c8a2ea5e675d5157077pkanwar 10166ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setEapAnonymousIdentityInternal( 10176ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const std::vector<uint8_t> &identity) 10186ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 10196ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 10206ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (setByteArrayFieldAndResetState( 10216ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius identity.data(), identity.size(), 10226ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &(wpa_ssid->eap.anonymous_identity), 10236ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &(wpa_ssid->eap.anonymous_identity_len), 10246ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius "eap anonymous_identity")) { 10256ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 10266ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 10276ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 10286ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 10296ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 10306ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setEapPasswordInternal( 10316ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const std::vector<uint8_t> &password) 10326ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 10336ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 10346ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (setByteArrayKeyFieldAndResetState( 10356ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius password.data(), password.size(), &(wpa_ssid->eap.password), 10366ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &(wpa_ssid->eap.password_len), "eap password")) { 10376ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 10386ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 10396ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->eap.flags &= ~EAP_CONFIG_FLAGS_PASSWORD_NTHASH; 10406ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->eap.flags &= ~EAP_CONFIG_FLAGS_EXT_PASSWORD; 10416ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 10426ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 10436ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 10446ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setEapCACertInternal(const std::string &path) 10456ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 10466ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 10476ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (setStringFieldAndResetState( 10486ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius path.c_str(), &(wpa_ssid->eap.ca_cert), "eap ca_cert")) { 10496ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 10506ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 10516ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 10526ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 10536ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 10546ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setEapCAPathInternal(const std::string &path) 10556ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 10566ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 10576ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (setStringFieldAndResetState( 10586ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius path.c_str(), &(wpa_ssid->eap.ca_path), "eap ca_path")) { 10596ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 10606ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 10616ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 10626ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 10636ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 10646ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setEapClientCertInternal(const std::string &path) 10656ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 10666ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 10676ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (setStringFieldAndResetState( 10686ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius path.c_str(), &(wpa_ssid->eap.client_cert), 10696ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius "eap client_cert")) { 10706ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 10716ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 10726ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 10736ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 10746ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 10756ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setEapPrivateKeyIdInternal(const std::string &id) 10766ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 10776ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 10786ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (setStringFieldAndResetState( 10796ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius id.c_str(), &(wpa_ssid->eap.key_id), "eap key_id")) { 10806ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 10816ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 10826ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 10836ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 10846ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 10856ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setEapSubjectMatchInternal( 10866ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const std::string &match) 10876ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 10886ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 10896ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (setStringFieldAndResetState( 10906ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius match.c_str(), &(wpa_ssid->eap.subject_match), 10916ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius "eap subject_match")) { 10926ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 10936ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 10946ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 10956ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 10966ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 10976ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setEapAltSubjectMatchInternal( 10986ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const std::string &match) 10996ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 11006ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 11016ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (setStringFieldAndResetState( 11026ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius match.c_str(), &(wpa_ssid->eap.altsubject_match), 11036ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius "eap altsubject_match")) { 11046ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 11056ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 11066ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 11076ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 11086ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 11096ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setEapEngineInternal(bool enable) 11106ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 11116ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 11126ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->eap.engine = enable ? 1 : 0; 11136ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 11146ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 11156ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 11166ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setEapEngineIDInternal(const std::string &id) 11176ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 11186ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 11196ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (setStringFieldAndResetState( 11206ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius id.c_str(), &(wpa_ssid->eap.engine_id), "eap engine_id")) { 11216ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 11226ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 11236ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 11246ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 11256ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 11266ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setEapDomainSuffixMatchInternal( 11276ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const std::string &match) 11286ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 11296ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 11306ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (setStringFieldAndResetState( 11316ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius match.c_str(), &(wpa_ssid->eap.domain_suffix_match), 11326ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius "eap domain_suffix_match")) { 11336ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 11346ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 11356ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 11366ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 11376ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 11386ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setProactiveKeyCachingInternal(bool enable) 11396ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 11406ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 11416ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->proactive_key_caching = enable ? 1 : 0; 11426ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius resetInternalStateAfterParamsUpdate(); 11436ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 11446ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 11456ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 11466ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setIdStrInternal(const std::string &id_str) 11476ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 11486ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 11496ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (setStringFieldAndResetState( 11506ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius id_str.c_str(), &(wpa_ssid->id_str), "id_str")) { 11516ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 11526ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 11536ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 11546ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 11556ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 11566ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::setUpdateIdentifierInternal(uint32_t id) 11576ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 11586ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 11596ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->update_identifier = id; 11606ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_printf( 11616ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius MSG_MSGDUMP, "update_identifier: %d", wpa_ssid->update_identifier); 11626ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius resetInternalStateAfterParamsUpdate(); 11636ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 11646ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 11656ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 11666ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, std::vector<uint8_t>> StaNetwork::getSsidInternal() 11676ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 11686ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 11696ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::vector<uint8_t> ssid; 11706ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius ssid.assign(wpa_ssid->ssid, wpa_ssid->ssid + wpa_ssid->ssid_len); 11716ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, std::move(ssid)}; 11726ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 11736ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 11746ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, std::array<uint8_t, 6>> 11756ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusStaNetwork::getBssidInternal() 11766ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 11776ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 11786ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::array<uint8_t, 6> bssid{}; 11796ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius os_memcpy(bssid.data(), kZeroBssid, ETH_ALEN); 11806ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (wpa_ssid->bssid_set) { 11816ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius os_memcpy(bssid.data(), wpa_ssid->bssid, ETH_ALEN); 11826ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 11836ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, std::move(bssid)}; 11846ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 11856ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 11866ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, bool> StaNetwork::getScanSsidInternal() 11876ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 11886ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 11896ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, 11906ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius (wpa_ssid->scan_ssid == 1)}; 11916ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 11926ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 11936ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, uint32_t> StaNetwork::getKeyMgmtInternal() 11946ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 11956ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 11966ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, 11976ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->key_mgmt & kAllowedKeyMgmtMask}; 11986ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 11996ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 12006ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, uint32_t> StaNetwork::getProtoInternal() 12016ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 12026ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 12036ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, 12046ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->proto & kAllowedProtoMask}; 12056ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 12066ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 12076ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, uint32_t> StaNetwork::getAuthAlgInternal() 12086ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 12096ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 12106ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, 12116ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->auth_alg & kAllowedAuthAlgMask}; 12126ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 12136ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 12146ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, uint32_t> StaNetwork::getGroupCipherInternal() 12156ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 12166ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 12176ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, 12186ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->group_cipher & kAllowedGroupCipherMask}; 12196ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 12206ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 12216ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, uint32_t> StaNetwork::getPairwiseCipherInternal() 12226ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 12236ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 12246ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, 12256ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->pairwise_cipher & kAllowedPairwisewCipherMask}; 12266ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 12276ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 12286ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, std::string> StaNetwork::getPskPassphraseInternal() 12296ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 12306ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 12316ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (!wpa_ssid->passphrase) { 12326ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, {}}; 12336ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 12346ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, wpa_ssid->passphrase}; 12356ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 12366ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 12376ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, std::array<uint8_t, 32>> 12386ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusStaNetwork::getPskInternal() 12396ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 12406ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 12416ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius WPA_ASSERT(psk.size() == sizeof(wpa_ssid->psk)); 12426ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (!wpa_ssid->psk_set) { 12436ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, {}}; 12446ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 12456ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::array<uint8_t, 32> psk; 12466ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius os_memcpy(psk.data(), wpa_ssid->psk, psk.size()); 12476ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, psk}; 12486ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 12496ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 12506ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, std::vector<uint8_t>> StaNetwork::getWepKeyInternal( 12516ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius uint32_t key_idx) 12526ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 12536ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::vector<uint8_t> wep_key; 12546ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 12556ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (key_idx >= 12566ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<uint32_t>( 12576ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius ISupplicantStaNetwork::ParamSizeLimits::WEP_KEYS_MAX_NUM)) { 12586ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::FAILURE_ARGS_INVALID, ""}, 12596ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wep_key}; 12606ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 12616ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wep_key.assign( 12626ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->wep_key[key_idx], 12636ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->wep_key[key_idx] + wpa_ssid->wep_key_len[key_idx]); 12646ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, std::move(wep_key)}; 12656ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 12666ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 12676ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, uint32_t> StaNetwork::getWepTxKeyIdxInternal() 12686ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 12696ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 12706ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, wpa_ssid->wep_tx_keyidx}; 12716ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 12726ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 12736ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, bool> StaNetwork::getRequirePmfInternal() 12746ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 12756ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 12766ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, 12776ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius (wpa_ssid->ieee80211w == MGMT_FRAME_PROTECTION_REQUIRED)}; 12786ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 12796ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 12806ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, ISupplicantStaNetwork::EapMethod> 12816ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusStaNetwork::getEapMethodInternal() 12826ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 12836ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 12846ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (!wpa_ssid->eap.eap_methods) { 12856ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, {}}; 12866ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 12876ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius // wpa_supplicant can support setting multiple eap methods for each 12886ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius // network. But, this is not really used by Android. So, just reading 12896ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius // the first EAP method for each network. 12906ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const std::string eap_method_str = eap_get_name( 12916ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->eap.eap_methods[0].vendor, 12926ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<EapType>(wpa_ssid->eap.eap_methods[0].method)); 12936ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius size_t eap_method_idx = 12946ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::find( 12956ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::begin(kEapMethodStrings), std::end(kEapMethodStrings), 12966ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius eap_method_str) - 12976ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::begin(kEapMethodStrings); 12986ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (eap_method_idx >= kEapMethodMax) { 12996ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, {}}; 13006ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 13016ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, 13026ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<ISupplicantStaNetwork::EapMethod>(eap_method_idx)}; 13036ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 13046ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 13056ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, ISupplicantStaNetwork::EapPhase2Method> 13066ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusStaNetwork::getEapPhase2MethodInternal() 13076ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 13086ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 13096ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (!wpa_ssid->eap.phase2) { 13106ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, {}}; 13116ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 13126ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const std::string eap_phase2_method_str_with_prefix = 13136ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->eap.phase2; 13146ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::string eap_phase2_method_str; 13156ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius // Strip out the phase 2 method prefix before doing a reverse lookup 13166ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius // of phase 2 string to the Eap Phase 2 type. 13176ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (eap_phase2_method_str_with_prefix.find(kEapPhase2AuthPrefix) == 0) { 13186ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius eap_phase2_method_str = 13196ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius eap_phase2_method_str_with_prefix.substr( 13206ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius strlen(kEapPhase2AuthPrefix), 13216ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius eap_phase2_method_str_with_prefix.size()); 13226ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } else if ( 13236ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius eap_phase2_method_str_with_prefix.find(kEapPhase2AuthEapPrefix) == 13246ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 0) { 13256ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius eap_phase2_method_str = 13266ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius eap_phase2_method_str_with_prefix.substr( 13276ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius strlen(kEapPhase2AuthEapPrefix), 13286ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius eap_phase2_method_str_with_prefix.size()); 13296ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 13306ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius size_t eap_phase2_method_idx = 13316ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::find( 13326ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::begin(kEapPhase2MethodStrings), 13336ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::end(kEapPhase2MethodStrings), eap_phase2_method_str) - 13346ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::begin(kEapPhase2MethodStrings); 13356ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (eap_phase2_method_idx >= kEapPhase2MethodMax) { 13366ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, {}}; 13376ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 13386ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, 13396ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<ISupplicantStaNetwork::EapPhase2Method>( 13406ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius eap_phase2_method_idx)}; 13416ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 13426ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 13436ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, std::vector<uint8_t>> 13446ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusStaNetwork::getEapIdentityInternal() 13456ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 13466ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 13476ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (!wpa_ssid->eap.identity) { 13486ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, {}}; 13496ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 13506ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, 13516ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::vector<uint8_t>( 13526ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->eap.identity, 13536ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->eap.identity + wpa_ssid->eap.identity_len)}; 13546ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 13556ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 13566ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, std::vector<uint8_t>> 13576ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusStaNetwork::getEapAnonymousIdentityInternal() 13586ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 13596ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 13606ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (!wpa_ssid->eap.anonymous_identity) { 13616ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, {}}; 13626ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 13636ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, 13646ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::vector<uint8_t>( 13656ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->eap.anonymous_identity, 13666ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->eap.anonymous_identity + 13676ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->eap.anonymous_identity_len)}; 13686ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 13696ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 13706ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, std::vector<uint8_t>> 13716ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusStaNetwork::getEapPasswordInternal() 13726ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 13736ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 13746ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (!wpa_ssid->eap.password) { 13756ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, {}}; 13766ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 13776ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, 13786ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::vector<uint8_t>( 13796ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->eap.password, 13806ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->eap.password + wpa_ssid->eap.password_len)}; 13816ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 13826ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 13836ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, std::string> StaNetwork::getEapCACertInternal() 13846ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 13856ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 13866ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (!wpa_ssid->eap.ca_cert) { 13876ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, {}}; 13886ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 13896ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, 13906ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius reinterpret_cast<char *>(wpa_ssid->eap.ca_cert)}; 13916ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 13926ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 13936ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, std::string> StaNetwork::getEapCAPathInternal() 13946ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 13956ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 13966ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (!wpa_ssid->eap.ca_path) { 13976ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, {}}; 13986ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 13996ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, 14006ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius reinterpret_cast<char *>(wpa_ssid->eap.ca_path)}; 14016ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 14026ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 14036ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, std::string> StaNetwork::getEapClientCertInternal() 14046ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 14056ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 14066ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (!wpa_ssid->eap.client_cert) { 14076ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, {}}; 14086ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 14096ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, 14106ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius reinterpret_cast<char *>(wpa_ssid->eap.client_cert)}; 14116ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 14126ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 14136ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, std::string> 14146ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusStaNetwork::getEapPrivateKeyIdInternal() 14156ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 14166ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 14176ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (!wpa_ssid->eap.key_id) { 14186ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, {}}; 14196ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 14206ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, wpa_ssid->eap.key_id}; 14216ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 14226ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 14236ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, std::string> 14246ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusStaNetwork::getEapSubjectMatchInternal() 14256ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 14266ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 14276ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (!wpa_ssid->eap.subject_match) { 14286ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, {}}; 14296ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 14306ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, 14316ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius reinterpret_cast<char *>(wpa_ssid->eap.subject_match)}; 14326ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 14336ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 14346ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, std::string> 14356ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusStaNetwork::getEapAltSubjectMatchInternal() 14366ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 14376ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 14386ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (!wpa_ssid->eap.altsubject_match) { 14396ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, {}}; 14406ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 14416ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, 14426ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius reinterpret_cast<char *>(wpa_ssid->eap.altsubject_match)}; 14436ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 14446ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 14456ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, bool> StaNetwork::getEapEngineInternal() 14466ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 14476ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 14486ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, wpa_ssid->eap.engine == 1}; 14496ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 14506ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 14516ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, std::string> StaNetwork::getEapEngineIDInternal() 14526ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 14536ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 14546ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (!wpa_ssid->eap.engine_id) { 14556ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, {}}; 14566ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 14576ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, {wpa_ssid->eap.engine_id}}; 14586ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 14596ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 14606ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, std::string> 14616ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusStaNetwork::getEapDomainSuffixMatchInternal() 14626ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 14636ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 14646ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (!wpa_ssid->eap.domain_suffix_match) { 14656ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, {}}; 14666ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 14676ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, 14686ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius {wpa_ssid->eap.domain_suffix_match}}; 14696ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 14706ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 14716ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, std::string> StaNetwork::getIdStrInternal() 14726ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 14736ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 14746ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (!wpa_ssid->id_str) { 14756ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, {}}; 14766ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 14776ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, {wpa_ssid->id_str}}; 14786ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 14796ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 14806ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstd::pair<SupplicantStatus, std::vector<uint8_t>> 14816ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusStaNetwork::getWpsNfcConfigurationTokenInternal() 14826ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 14836ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_supplicant *wpa_s = retrieveIfacePtr(); 14846ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 14856ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius auto token_buf = misc_utils::createWpaBufUniquePtr( 14866ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpas_wps_network_config_token(wpa_s, 0, wpa_ssid)); 14876ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (!token_buf) { 14886ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, {}}; 14896ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 14906ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {{SupplicantStatusCode::SUCCESS, ""}, 14916ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius misc_utils::convertWpaBufToVector(token_buf.get())}; 14926ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 14936ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 14946ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::enableInternal(bool no_connect) 14956ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 14966ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 14976ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (wpa_ssid->disabled == 2) { 14986ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 14996ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 15006ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_supplicant *wpa_s = retrieveIfacePtr(); 15016ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (no_connect) { 15026ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_ssid->disabled = 0; 15036ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } else { 15046ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_s->scan_min_time.sec = 0; 15056ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_s->scan_min_time.usec = 0; 15066ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_supplicant_enable_network(wpa_s, wpa_ssid); 15076ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 15086ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 15096ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 15106ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 15116ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::disableInternal() 15126ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 15136ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 15146ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (wpa_ssid->disabled == 2) { 15156ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 15166ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 15176ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_supplicant *wpa_s = retrieveIfacePtr(); 15186ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_supplicant_disable_network(wpa_s, wpa_ssid); 15196ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 15206ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 15216ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 15226ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::selectInternal() 15236ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 15246ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 15256ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (wpa_ssid->disabled == 2) { 15266ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 15276ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 15286ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_supplicant *wpa_s = retrieveIfacePtr(); 15296ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_s->scan_min_time.sec = 0; 15306ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_s->scan_min_time.usec = 0; 153120ba891e22aced98b4a6bb3af16b2ea5f592f633Jong Wook Kim // Make sure that the supplicant is updated to the latest 153220ba891e22aced98b4a6bb3af16b2ea5f592f633Jong Wook Kim // MAC address, which might have changed due to MAC randomization. 153320ba891e22aced98b4a6bb3af16b2ea5f592f633Jong Wook Kim wpa_supplicant_update_mac_addr(wpa_s); 15346ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_supplicant_select_network(wpa_s, wpa_ssid); 15356ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 15366ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 15376ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 15386ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::sendNetworkEapSimGsmAuthResponseInternal( 15396ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const std::vector<ISupplicantStaNetwork::NetworkResponseEapSimGsmAuthParams> 15406ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius &vec_params) 15416ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 15426ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 15436ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius // Convert the incoming parameters to a string to pass to 15446ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius // wpa_supplicant. 15456ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::string ctrl_rsp_param = std::string(kNetworkEapSimGsmAuthResponse); 15466ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius for (const auto ¶ms : vec_params) { 15476ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius uint32_t kc_hex_len = params.kc.size() * 2 + 1; 15486ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::vector<char> kc_hex(kc_hex_len); 15496ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius uint32_t sres_hex_len = params.sres.size() * 2 + 1; 15506ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::vector<char> sres_hex(sres_hex_len); 15516ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_snprintf_hex( 15526ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius kc_hex.data(), kc_hex.size(), params.kc.data(), 15536ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius params.kc.size()); 15546ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_snprintf_hex( 15556ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius sres_hex.data(), sres_hex.size(), params.sres.data(), 15566ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius params.sres.size()); 15576ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius ctrl_rsp_param += ":" + std::string(kc_hex.data()) + ":" + 15586ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::string(sres_hex.data()); 15596ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 15606ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius enum wpa_ctrl_req_type rtype = WPA_CTRL_REQ_SIM; 15616ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_supplicant *wpa_s = retrieveIfacePtr(); 15626ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (wpa_supplicant_ctrl_rsp_handle( 1563eb9203eb4fce4b311977f47e0bb0f9ae27a90d3apkanwar wpa_s, wpa_ssid, rtype, ctrl_rsp_param.c_str(), 1564eb9203eb4fce4b311977f47e0bb0f9ae27a90d3apkanwar ctrl_rsp_param.size())) { 15656ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 15666ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 15676ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius eapol_sm_notify_ctrl_response(wpa_s->eapol); 15686ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_hexdump_ascii_key( 15696ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius MSG_DEBUG, "network sim gsm auth response param", 15706ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius (const u8 *)ctrl_rsp_param.c_str(), ctrl_rsp_param.size()); 15716ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 15726ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 15736ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 15746ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::sendNetworkEapSimGsmAuthFailureInternal() 15756ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 15766ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 15776ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_supplicant *wpa_s = retrieveIfacePtr(); 15786ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius enum wpa_ctrl_req_type rtype = WPA_CTRL_REQ_SIM; 15796ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (wpa_supplicant_ctrl_rsp_handle( 1580eb9203eb4fce4b311977f47e0bb0f9ae27a90d3apkanwar wpa_s, wpa_ssid, rtype, kNetworkEapSimGsmAuthFailure, 1581eb9203eb4fce4b311977f47e0bb0f9ae27a90d3apkanwar strlen(kNetworkEapSimGsmAuthFailure))) { 15826ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 15836ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 15846ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius eapol_sm_notify_ctrl_response(wpa_s->eapol); 15856ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 15866ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 15876ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 15886ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::sendNetworkEapSimUmtsAuthResponseInternal( 15896ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const ISupplicantStaNetwork::NetworkResponseEapSimUmtsAuthParams ¶ms) 15906ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 15916ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 15926ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius // Convert the incoming parameters to a string to pass to 15936ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius // wpa_supplicant. 15946ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius uint32_t ik_hex_len = params.ik.size() * 2 + 1; 15956ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::vector<char> ik_hex(ik_hex_len); 15966ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius uint32_t ck_hex_len = params.ck.size() * 2 + 1; 15976ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::vector<char> ck_hex(ck_hex_len); 15986ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius uint32_t res_hex_len = params.res.size() * 2 + 1; 15996ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::vector<char> res_hex(res_hex_len); 16006ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_snprintf_hex( 16016ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius ik_hex.data(), ik_hex.size(), params.ik.data(), params.ik.size()); 16026ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_snprintf_hex( 16036ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius ck_hex.data(), ck_hex.size(), params.ck.data(), params.ck.size()); 16046ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_snprintf_hex( 16056ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius res_hex.data(), res_hex.size(), params.res.data(), 16066ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius params.res.size()); 16076ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::string ctrl_rsp_param = 16086ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::string(kNetworkEapSimUmtsAuthResponse) + ":" + 16096ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::string(ik_hex.data()) + ":" + std::string(ck_hex.data()) + 16106ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius ":" + std::string(res_hex.data()); 16116ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius enum wpa_ctrl_req_type rtype = WPA_CTRL_REQ_SIM; 16126ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_supplicant *wpa_s = retrieveIfacePtr(); 16136ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (wpa_supplicant_ctrl_rsp_handle( 1614eb9203eb4fce4b311977f47e0bb0f9ae27a90d3apkanwar wpa_s, wpa_ssid, rtype, ctrl_rsp_param.c_str(), 1615eb9203eb4fce4b311977f47e0bb0f9ae27a90d3apkanwar ctrl_rsp_param.size())) { 16166ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 16176ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 16186ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius eapol_sm_notify_ctrl_response(wpa_s->eapol); 16196ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_hexdump_ascii_key( 16206ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius MSG_DEBUG, "network sim umts auth response param", 16216ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius (const u8 *)ctrl_rsp_param.c_str(), ctrl_rsp_param.size()); 16226ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 16236ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 16246ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 16256ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::sendNetworkEapSimUmtsAutsResponseInternal( 16266ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const std::array<uint8_t, 14> &auts) 16276ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 16286ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 16296ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius uint32_t auts_hex_len = auts.size() * 2 + 1; 16306ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::vector<char> auts_hex(auts_hex_len); 16316ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_snprintf_hex( 16326ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius auts_hex.data(), auts_hex.size(), auts.data(), auts.size()); 16336ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::string ctrl_rsp_param = 16346ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::string(kNetworkEapSimUmtsAutsResponse) + ":" + 16356ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::string(auts_hex.data()); 16366ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius enum wpa_ctrl_req_type rtype = WPA_CTRL_REQ_SIM; 16376ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_supplicant *wpa_s = retrieveIfacePtr(); 16386ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (wpa_supplicant_ctrl_rsp_handle( 1639eb9203eb4fce4b311977f47e0bb0f9ae27a90d3apkanwar wpa_s, wpa_ssid, rtype, ctrl_rsp_param.c_str(), 1640eb9203eb4fce4b311977f47e0bb0f9ae27a90d3apkanwar ctrl_rsp_param.size())) { 16416ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 16426ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 16436ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius eapol_sm_notify_ctrl_response(wpa_s->eapol); 16446ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_hexdump_ascii_key( 16456ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius MSG_DEBUG, "network sim umts auts response param", 16466ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius (const u8 *)ctrl_rsp_param.c_str(), ctrl_rsp_param.size()); 16476ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 16486ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 16496ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 16506ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::sendNetworkEapSimUmtsAuthFailureInternal() 16516ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 16526ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 16536ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_supplicant *wpa_s = retrieveIfacePtr(); 16546ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius enum wpa_ctrl_req_type rtype = WPA_CTRL_REQ_SIM; 16556ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (wpa_supplicant_ctrl_rsp_handle( 1656eb9203eb4fce4b311977f47e0bb0f9ae27a90d3apkanwar wpa_s, wpa_ssid, rtype, kNetworkEapSimUmtsAuthFailure, 1657eb9203eb4fce4b311977f47e0bb0f9ae27a90d3apkanwar strlen(kNetworkEapSimUmtsAuthFailure))) { 16586ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 16596ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 16606ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius eapol_sm_notify_ctrl_response(wpa_s->eapol); 16616ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 16626ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 16636ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 16646ca7b54de22e93958b79bae0a4428107e08cb778Roshan PiusSupplicantStatus StaNetwork::sendNetworkEapIdentityResponseInternal( 16656ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const std::vector<uint8_t> &identity) 16666ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 16676ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 16686ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius std::string ctrl_rsp_param(identity.begin(), identity.end()); 16696ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius enum wpa_ctrl_req_type rtype = WPA_CTRL_REQ_EAP_IDENTITY; 16706ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_supplicant *wpa_s = retrieveIfacePtr(); 16716ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (wpa_supplicant_ctrl_rsp_handle( 1672eb9203eb4fce4b311977f47e0bb0f9ae27a90d3apkanwar wpa_s, wpa_ssid, rtype, ctrl_rsp_param.c_str(), 1673eb9203eb4fce4b311977f47e0bb0f9ae27a90d3apkanwar ctrl_rsp_param.size())) { 16746ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 16756ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 16766ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius eapol_sm_notify_ctrl_response(wpa_s->eapol); 16776ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_hexdump_ascii_key( 16786ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius MSG_DEBUG, "network identity response param", 16796ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius (const u8 *)ctrl_rsp_param.c_str(), ctrl_rsp_param.size()); 16806ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return {SupplicantStatusCode::SUCCESS, ""}; 168189da2fbba2216ed312512c8a2ea5e675d5157077pkanwar} 168289da2fbba2216ed312512c8a2ea5e675d5157077pkanwar 168389da2fbba2216ed312512c8a2ea5e675d5157077pkanwarSupplicantStatus StaNetwork::sendNetworkEapIdentityResponseInternal_1_1( 168489da2fbba2216ed312512c8a2ea5e675d5157077pkanwar const std::vector<uint8_t> &identity, const std::vector<uint8_t> &encrypted_imsi_identity) 168589da2fbba2216ed312512c8a2ea5e675d5157077pkanwar{ 168600a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 168700a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park // format: plain identity + ":" + encrypted identity(encrypted_imsi_identity) 168800a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park std::string ctrl_rsp_param = 168900a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park std::string(identity.begin(), identity.end()) + ":" + 169000a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park std::string(encrypted_imsi_identity.begin(), encrypted_imsi_identity.end()); 169100a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park enum wpa_ctrl_req_type rtype = WPA_CTRL_REQ_EAP_IDENTITY; 169200a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park struct wpa_supplicant *wpa_s = retrieveIfacePtr(); 169300a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park if (wpa_supplicant_ctrl_rsp_handle( 169400a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park wpa_s, wpa_ssid, rtype, ctrl_rsp_param.c_str(), 169500a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park ctrl_rsp_param.size())) { 169600a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park return {SupplicantStatusCode::FAILURE_UNKNOWN, ""}; 169700a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park } 169800a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park eapol_sm_notify_ctrl_response(wpa_s->eapol); 169900a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park wpa_hexdump_ascii_key( 170000a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park MSG_DEBUG, "network identity response param", 170100a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park (const u8 *)ctrl_rsp_param.c_str(), ctrl_rsp_param.size()); 170200a7b21c7b2af9b19a0b6173e0de92197d537fecEcco Park return {SupplicantStatusCode::SUCCESS, ""}; 17036ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 17046ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 17056ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius/** 17066ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * Retrieve the underlying |wpa_ssid| struct pointer for 17076ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * this network. 17086ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * If the underlying network is removed or the interface 17096ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * this network belong to 17106ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * is removed, all RPC method calls on this object will 17116ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * return failure. 17126ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius */ 17136ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstruct wpa_ssid *StaNetwork::retrieveNetworkPtr() 17146ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 17156ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_supplicant *wpa_s = retrieveIfacePtr(); 17166ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (!wpa_s) 17176ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return nullptr; 17186ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return wpa_config_get_network(wpa_s->conf, network_id_); 17196ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 17206ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 17216ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius/** 17226ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * Retrieve the underlying |wpa_supplicant| struct 17236ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * pointer for 17246ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * this network. 17256ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius */ 17266ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusstruct wpa_supplicant *StaNetwork::retrieveIfacePtr() 17276ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 17286ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return wpa_supplicant_get_iface(wpa_global_, ifname_.c_str()); 17296ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 17306ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 17316ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius/** 17326ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * Check if the provided psk passhrase is valid or not. 17336ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * 17346ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * Returns 0 if valid, 1 otherwise. 17356ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius */ 17366ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusint StaNetwork::isPskPassphraseValid(const std::string &psk) 17376ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 17386ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (psk.size() < 17396ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<uint32_t>(ISupplicantStaNetwork::ParamSizeLimits:: 17406ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius PSK_PASSPHRASE_MIN_LEN_IN_BYTES) || 17416ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius psk.size() > 17426ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius static_cast<uint32_t>(ISupplicantStaNetwork::ParamSizeLimits:: 17436ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius PSK_PASSPHRASE_MAX_LEN_IN_BYTES)) { 17446ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return 1; 17456ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 17466ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (has_ctrl_char((u8 *)psk.c_str(), psk.size())) { 17476ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return 1; 17486ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 17496ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return 0; 17506ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 17516ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 17526ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius/** 17536ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * Reset internal wpa_supplicant state machine state 17546ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * after params update (except 17556ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * bssid). 17566ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius */ 17576ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusvoid StaNetwork::resetInternalStateAfterParamsUpdate() 17586ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 17596ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_supplicant *wpa_s = retrieveIfacePtr(); 17606ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius struct wpa_ssid *wpa_ssid = retrieveNetworkPtr(); 17616ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 17626ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_sm_pmksa_cache_flush(wpa_s->wpa, wpa_ssid); 17636ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 17646ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (wpa_s->current_ssid == wpa_ssid || wpa_s->current_ssid == NULL) { 17656ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius /* 17666ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * Invalidate the EAP session cache if 17676ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * anything in the 17686ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * current or previously used 17696ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * configuration changes. 17706ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius */ 17716ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius eapol_sm_invalidate_cached_session(wpa_s->eapol); 17726ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 17736ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 17746ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 17756ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius/** 17766ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * Helper function to set value in a string field in |wpa_ssid| structue 17776ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * instance for this network. 17786ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * This function frees any existing data in these fields. 17796ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius */ 17806ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusint StaNetwork::setStringFieldAndResetState( 17816ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const char *value, uint8_t **to_update_field, const char *hexdump_prefix) 17826ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 17836ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return setStringFieldAndResetState( 17846ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius value, (char **)to_update_field, hexdump_prefix); 17856ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 17866ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 17876ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius/** 17886ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * Helper function to set value in a string field in |wpa_ssid| structue 17896ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * instance for this network. 17906ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * This function frees any existing data in these fields. 17916ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius */ 17926ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusint StaNetwork::setStringFieldAndResetState( 17936ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const char *value, char **to_update_field, const char *hexdump_prefix) 17946ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 17956ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius int value_len = strlen(value); 17966ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (*to_update_field) { 17976ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius os_free(*to_update_field); 17986ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 17996ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius *to_update_field = dup_binstr(value, value_len); 18006ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (!(*to_update_field)) { 18016ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return 1; 18026ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 18036ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_hexdump_ascii( 18046ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius MSG_MSGDUMP, hexdump_prefix, *to_update_field, value_len); 18056ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius resetInternalStateAfterParamsUpdate(); 18066ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return 0; 18076ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 18086ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 18096ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius/** 18106ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * Helper function to set value in a string key field in |wpa_ssid| structue 18116ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * instance for this network. 18126ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * This function frees any existing data in these fields. 18136ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius */ 18146ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusint StaNetwork::setStringKeyFieldAndResetState( 18156ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const char *value, char **to_update_field, const char *hexdump_prefix) 18166ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 18176ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius int value_len = strlen(value); 18186ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (*to_update_field) { 18196ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius str_clear_free(*to_update_field); 18206ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 18216ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius *to_update_field = dup_binstr(value, value_len); 18226ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (!(*to_update_field)) { 18236ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return 1; 18246ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 18256ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_hexdump_ascii_key( 18266ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius MSG_MSGDUMP, hexdump_prefix, *to_update_field, value_len); 18276ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius resetInternalStateAfterParamsUpdate(); 18286ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return 0; 18296ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 18306ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 18316ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius/** 18326ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * Helper function to set value in a string field with a corresponding length 18336ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * field in |wpa_ssid| structue instance for this network. 18346ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * This function frees any existing data in these fields. 18356ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius */ 18366ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusint StaNetwork::setByteArrayFieldAndResetState( 18376ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const uint8_t *value, const size_t value_len, uint8_t **to_update_field, 18386ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius size_t *to_update_field_len, const char *hexdump_prefix) 18396ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 18406ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (*to_update_field) { 18416ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius os_free(*to_update_field); 18426ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 18436ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius *to_update_field = (uint8_t *)os_malloc(value_len); 18446ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (!(*to_update_field)) { 18456ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return 1; 18466ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 18476ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius os_memcpy(*to_update_field, value, value_len); 18486ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius *to_update_field_len = value_len; 18496ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 18506ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_hexdump_ascii( 18516ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius MSG_MSGDUMP, hexdump_prefix, *to_update_field, 18526ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius *to_update_field_len); 18536ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius resetInternalStateAfterParamsUpdate(); 18546ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return 0; 18556ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 18566ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 18576ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius/** 18586ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * Helper function to set value in a string key field with a corresponding 18596ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * length field in |wpa_ssid| structue instance for this network. 18606ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * This function frees any existing data in these fields. 18616ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius */ 18626ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusint StaNetwork::setByteArrayKeyFieldAndResetState( 18636ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius const uint8_t *value, const size_t value_len, uint8_t **to_update_field, 18646ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius size_t *to_update_field_len, const char *hexdump_prefix) 18656ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{ 18666ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (*to_update_field) { 18676ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius bin_clear_free(*to_update_field, *to_update_field_len); 18686ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 18696ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius *to_update_field = (uint8_t *)os_malloc(value_len); 18706ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius if (!(*to_update_field)) { 18716ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return 1; 18726ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius } 18736ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius os_memcpy(*to_update_field, value, value_len); 18746ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius *to_update_field_len = value_len; 18756ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 18766ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius wpa_hexdump_ascii_key( 18776ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius MSG_MSGDUMP, hexdump_prefix, *to_update_field, 18786ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius *to_update_field_len); 18796ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius resetInternalStateAfterParamsUpdate(); 18806ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius return 0; 18816ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} 18826ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius 18836ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} // namespace implementation 18846ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} // namespace V1_1 18856ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} // namespace wifi 18866ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} // namespace supplicant 18876ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} // namespace hardware 18886ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius} // namespace android 1889