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#ifndef WPA_SUPPLICANT_HIDL_STA_NETWORK_H
116ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius#define WPA_SUPPLICANT_HIDL_STA_NETWORK_H
126ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius
136ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius#include <array>
146ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius#include <vector>
156ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius
166ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius#include <android-base/macros.h>
176ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius
1889da2fbba2216ed312512c8a2ea5e675d5157077pkanwar#include <android/hardware/wifi/supplicant/1.1/ISupplicantStaNetwork.h>
196ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius#include <android/hardware/wifi/supplicant/1.0/ISupplicantStaNetworkCallback.h>
206ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius
216ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusextern "C" {
226ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius#include "utils/common.h"
236ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius#include "utils/includes.h"
246ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius#include "config.h"
256ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius#include "wpa_supplicant_i.h"
266ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius#include "notify.h"
276ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius#include "eapol_supp/eapol_supp_sm.h"
286ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius#include "eap_peer/eap.h"
296ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius#include "rsn_supp/wpa.h"
306ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius}
316ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius
326ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusnamespace android {
336ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusnamespace hardware {
346ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusnamespace wifi {
356ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusnamespace supplicant {
366ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusnamespace V1_1 {
376ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusnamespace implementation {
386ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piususing namespace android::hardware::wifi::supplicant::V1_0;
396ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius
406ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius/**
416ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * Implementation of StaNetwork hidl object. Each unique hidl
426ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * object is used for control operations on a specific network
436ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius * controlled by wpa_supplicant.
446ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius */
4589da2fbba2216ed312512c8a2ea5e675d5157077pkanwarclass StaNetwork : public V1_1::ISupplicantStaNetwork
466ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius{
476ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piuspublic:
486ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	StaNetwork(
496ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    struct wpa_global* wpa_global, const char ifname[], int network_id);
506ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	~StaNetwork() override = default;
516ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	// Refer to |StaIface::invalidate()|.
526ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	void invalidate();
536ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	bool isValid();
546ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius
556ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	// Hidl methods exposed.
566ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getId(getId_cb _hidl_cb) override;
576ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getInterfaceName(getInterfaceName_cb _hidl_cb) override;
586ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getType(getType_cb _hidl_cb) override;
596ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> registerCallback(
606ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const sp<ISupplicantStaNetworkCallback>& callback,
616ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    registerCallback_cb _hidl_cb) override;
626ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setSsid(
636ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const hidl_vec<uint8_t>& ssid, setSsid_cb _hidl_cb) override;
646ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setBssid(
656ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const hidl_array<uint8_t, 6>& bssid, setBssid_cb _hidl_cb) override;
666ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setScanSsid(bool enable, setScanSsid_cb _hidl_cb) override;
676ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setKeyMgmt(
686ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    uint32_t key_mgmt_mask, setKeyMgmt_cb _hidl_cb) override;
696ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setProto(
706ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    uint32_t proto_mask, setProto_cb _hidl_cb) override;
716ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setAuthAlg(
726ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    uint32_t auth_alg_mask, setAuthAlg_cb _hidl_cb) override;
736ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setGroupCipher(
746ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    uint32_t group_cipher_mask, setGroupCipher_cb _hidl_cb) override;
756ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setPairwiseCipher(
766ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    uint32_t pairwise_cipher_mask,
776ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    setPairwiseCipher_cb _hidl_cb) override;
786ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setPskPassphrase(
796ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const hidl_string& psk, setPskPassphrase_cb _hidl_cb) override;
806ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setPsk(
816ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const hidl_array<uint8_t, 32>& psk, setPsk_cb _hidl_cb) override;
826ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setWepKey(
836ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    uint32_t key_idx, const hidl_vec<uint8_t>& wep_key,
846ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    setWepKey_cb _hidl_cb) override;
856ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setWepTxKeyIdx(
866ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    uint32_t key_idx, setWepTxKeyIdx_cb _hidl_cb) override;
876ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setRequirePmf(
886ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    bool enable, setRequirePmf_cb _hidl_cb) override;
896ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setEapMethod(
906ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    ISupplicantStaNetwork::EapMethod method,
916ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    setEapMethod_cb _hidl_cb) override;
926ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setEapPhase2Method(
936ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    ISupplicantStaNetwork::EapPhase2Method method,
946ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    setEapPhase2Method_cb _hidl_cb) override;
956ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setEapIdentity(
966ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const hidl_vec<uint8_t>& identity,
976ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    setEapIdentity_cb _hidl_cb) override;
986ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setEapAnonymousIdentity(
996ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const hidl_vec<uint8_t>& identity,
1006ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    setEapAnonymousIdentity_cb _hidl_cb) override;
1016ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setEapPassword(
1026ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const hidl_vec<uint8_t>& password,
1036ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    setEapPassword_cb _hidl_cb) override;
1046ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setEapCACert(
1056ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const hidl_string& path, setEapCACert_cb _hidl_cb) override;
1066ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setEapCAPath(
1076ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const hidl_string& path, setEapCAPath_cb _hidl_cb) override;
1086ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setEapClientCert(
1096ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const hidl_string& path, setEapClientCert_cb _hidl_cb) override;
1106ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setEapPrivateKeyId(
1116ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const hidl_string& id, setEapPrivateKeyId_cb _hidl_cb) override;
11289da2fbba2216ed312512c8a2ea5e675d5157077pkanwar        Return<void> setEapEncryptedImsiIdentity(
11389da2fbba2216ed312512c8a2ea5e675d5157077pkanwar            const EapSimEncryptedIdentity& identity,
11489da2fbba2216ed312512c8a2ea5e675d5157077pkanwar            setEapEncryptedImsiIdentity_cb _hidl_cb) override;
1156ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setEapSubjectMatch(
1166ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const hidl_string& match, setEapSubjectMatch_cb _hidl_cb) override;
1176ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setEapAltSubjectMatch(
1186ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const hidl_string& match,
1196ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    setEapAltSubjectMatch_cb _hidl_cb) override;
1206ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setEapEngine(
1216ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    bool enable, setEapEngine_cb _hidl_cb) override;
1226ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setEapEngineID(
1236ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const hidl_string& id, setEapEngineID_cb _hidl_cb) override;
1246ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setEapDomainSuffixMatch(
1256ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const hidl_string& match,
1266ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    setEapDomainSuffixMatch_cb _hidl_cb) override;
1276ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setProactiveKeyCaching(
1286ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    bool enable, setProactiveKeyCaching_cb _hidl_cb) override;
1296ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setIdStr(
1306ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const hidl_string& id_str, setIdStr_cb _hidl_cb) override;
1316ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> setUpdateIdentifier(
1326ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    uint32_t id, setUpdateIdentifier_cb _hidl_cb) override;
1336ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getSsid(getSsid_cb _hidl_cb) override;
1346ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getBssid(getBssid_cb _hidl_cb) override;
1356ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getScanSsid(getScanSsid_cb _hidl_cb) override;
1366ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getKeyMgmt(getKeyMgmt_cb _hidl_cb) override;
1376ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getProto(getProto_cb _hidl_cb) override;
1386ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getAuthAlg(getAuthAlg_cb _hidl_cb) override;
1396ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getGroupCipher(getGroupCipher_cb _hidl_cb) override;
1406ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getPairwiseCipher(getPairwiseCipher_cb _hidl_cb) override;
1416ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getPskPassphrase(getPskPassphrase_cb _hidl_cb) override;
1426ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getPsk(getPsk_cb _hidl_cb) override;
1436ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getWepKey(
1446ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    uint32_t key_idx, getWepKey_cb _hidl_cb) override;
1456ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getWepTxKeyIdx(getWepTxKeyIdx_cb _hidl_cb) override;
1466ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getRequirePmf(getRequirePmf_cb _hidl_cb) override;
1476ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getEapMethod(getEapMethod_cb _hidl_cb) override;
1486ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getEapPhase2Method(
1496ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    getEapPhase2Method_cb _hidl_cb) override;
1506ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getEapIdentity(getEapIdentity_cb _hidl_cb) override;
1516ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getEapAnonymousIdentity(
1526ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    getEapAnonymousIdentity_cb _hidl_cb) override;
1536ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getEapPassword(getEapPassword_cb _hidl_cb) override;
1546ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getEapCACert(getEapCACert_cb _hidl_cb) override;
1556ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getEapCAPath(getEapCAPath_cb _hidl_cb) override;
1566ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getEapClientCert(getEapClientCert_cb _hidl_cb) override;
1576ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getEapPrivateKeyId(
1586ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    getEapPrivateKeyId_cb _hidl_cb) override;
1596ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getEapSubjectMatch(
1606ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    getEapSubjectMatch_cb _hidl_cb) override;
1616ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getEapAltSubjectMatch(
1626ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    getEapAltSubjectMatch_cb _hidl_cb) override;
1636ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getEapEngine(getEapEngine_cb _hidl_cb) override;
1646ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getEapEngineID(getEapEngineID_cb _hidl_cb) override;
1656ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getEapDomainSuffixMatch(
1666ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    getEapDomainSuffixMatch_cb _hidl_cb) override;
1676ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getIdStr(getIdStr_cb _hidl_cb) override;
1686ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> getWpsNfcConfigurationToken(
1696ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    getWpsNfcConfigurationToken_cb _hidl_cb) override;
1706ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> enable(bool no_connect, enable_cb _hidl_cb) override;
1716ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> disable(disable_cb _hidl_cb) override;
1726ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> select(select_cb _hidl_cb) override;
1736ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> sendNetworkEapSimGsmAuthResponse(
1746ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const hidl_vec<
1756ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius		ISupplicantStaNetwork::NetworkResponseEapSimGsmAuthParams>&
1766ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius		vec_params,
1776ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    sendNetworkEapSimGsmAuthResponse_cb _hidl_cb) override;
1786ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> sendNetworkEapSimGsmAuthFailure(
1796ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    sendNetworkEapSimGsmAuthFailure_cb _hidl_cb) override;
1806ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> sendNetworkEapSimUmtsAuthResponse(
1816ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const ISupplicantStaNetwork::NetworkResponseEapSimUmtsAuthParams&
1826ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius		params,
1836ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    sendNetworkEapSimUmtsAuthResponse_cb _hidl_cb) override;
1846ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> sendNetworkEapSimUmtsAutsResponse(
1856ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const hidl_array<uint8_t, 14>& auts,
1866ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    sendNetworkEapSimUmtsAutsResponse_cb _hidl_cb) override;
1876ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> sendNetworkEapSimUmtsAuthFailure(
1886ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    sendNetworkEapSimUmtsAuthFailure_cb _hidl_cb) override;
1896ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	Return<void> sendNetworkEapIdentityResponse(
1906ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const hidl_vec<uint8_t>& identity,
1916ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    sendNetworkEapIdentityResponse_cb _hidl_cb) override;
19289da2fbba2216ed312512c8a2ea5e675d5157077pkanwar	Return<void> sendNetworkEapIdentityResponse_1_1(
19389da2fbba2216ed312512c8a2ea5e675d5157077pkanwar	    const EapSimIdentity& identity,
19489da2fbba2216ed312512c8a2ea5e675d5157077pkanwar	    const EapSimEncryptedIdentity& imsiIdentity,
19589da2fbba2216ed312512c8a2ea5e675d5157077pkanwar	    sendNetworkEapIdentityResponse_1_1_cb _hidl_cb) override;
1966ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius
1976ca7b54de22e93958b79bae0a4428107e08cb778Roshan Piusprivate:
1986ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	// Corresponding worker functions for the HIDL methods.
1996ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, uint32_t> getIdInternal();
2006ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, std::string> getInterfaceNameInternal();
2016ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, IfaceType> getTypeInternal();
2026ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus registerCallbackInternal(
2036ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const sp<ISupplicantStaNetworkCallback>& callback);
2046ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setSsidInternal(const std::vector<uint8_t>& ssid);
2056ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setBssidInternal(const std::array<uint8_t, 6>& bssid);
2066ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setScanSsidInternal(bool enable);
2076ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setKeyMgmtInternal(uint32_t key_mgmt_mask);
2086ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setProtoInternal(uint32_t proto_mask);
2096ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setAuthAlgInternal(uint32_t auth_alg_mask);
2106ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setGroupCipherInternal(uint32_t group_cipher_mask);
2116ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setPairwiseCipherInternal(
2126ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    uint32_t pairwise_cipher_mask);
2136ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setPskPassphraseInternal(const std::string& psk);
2146ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setPskInternal(const std::array<uint8_t, 32>& psk);
2156ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setWepKeyInternal(
2166ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    uint32_t key_idx, const std::vector<uint8_t>& wep_key);
2176ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setWepTxKeyIdxInternal(uint32_t key_idx);
2186ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setRequirePmfInternal(bool enable);
2196ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setEapMethodInternal(
2206ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    ISupplicantStaNetwork::EapMethod method);
2216ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setEapPhase2MethodInternal(
2226ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    ISupplicantStaNetwork::EapPhase2Method method);
2236ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setEapIdentityInternal(
2246ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const std::vector<uint8_t>& identity);
22589da2fbba2216ed312512c8a2ea5e675d5157077pkanwar        SupplicantStatus setEapEncryptedImsiIdentityInternal(
22689da2fbba2216ed312512c8a2ea5e675d5157077pkanwar	    const std::vector<uint8_t>& identity);
2276ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setEapAnonymousIdentityInternal(
2286ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const std::vector<uint8_t>& identity);
2296ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setEapPasswordInternal(
2306ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const std::vector<uint8_t>& password);
2316ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setEapCACertInternal(const std::string& path);
2326ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setEapCAPathInternal(const std::string& path);
2336ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setEapClientCertInternal(const std::string& path);
2346ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setEapPrivateKeyIdInternal(const std::string& id);
2356ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setEapSubjectMatchInternal(const std::string& match);
2366ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setEapAltSubjectMatchInternal(
2376ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const std::string& match);
2386ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setEapEngineInternal(bool enable);
2396ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setEapEngineIDInternal(const std::string& id);
2406ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setEapDomainSuffixMatchInternal(
2416ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const std::string& match);
2426ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setProactiveKeyCachingInternal(bool enable);
2436ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setIdStrInternal(const std::string& id_str);
2446ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus setUpdateIdentifierInternal(uint32_t id);
2456ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, std::vector<uint8_t>> getSsidInternal();
2466ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, std::array<uint8_t, 6>> getBssidInternal();
2476ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, bool> getScanSsidInternal();
2486ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, uint32_t> getKeyMgmtInternal();
2496ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, uint32_t> getProtoInternal();
2506ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, uint32_t> getAuthAlgInternal();
2516ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, uint32_t> getGroupCipherInternal();
2526ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, uint32_t> getPairwiseCipherInternal();
2536ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, std::string> getPskPassphraseInternal();
2546ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, std::array<uint8_t, 32>> getPskInternal();
2556ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, std::vector<uint8_t>> getWepKeyInternal(
2566ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    uint32_t key_idx);
2576ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, uint32_t> getWepTxKeyIdxInternal();
2586ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, bool> getRequirePmfInternal();
2596ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, ISupplicantStaNetwork::EapMethod>
2606ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	getEapMethodInternal();
2616ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, ISupplicantStaNetwork::EapPhase2Method>
2626ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	getEapPhase2MethodInternal();
2636ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, std::vector<uint8_t>>
2646ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	getEapIdentityInternal();
2656ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, std::vector<uint8_t>>
2666ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	getEapAnonymousIdentityInternal();
2676ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, std::vector<uint8_t>>
2686ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	getEapPasswordInternal();
2696ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, std::string> getEapCACertInternal();
2706ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, std::string> getEapCAPathInternal();
2716ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, std::string> getEapClientCertInternal();
2726ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, std::string> getEapPrivateKeyIdInternal();
2736ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, std::string> getEapSubjectMatchInternal();
2746ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, std::string>
2756ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	getEapAltSubjectMatchInternal();
2766ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, bool> getEapEngineInternal();
2776ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, std::string> getEapEngineIDInternal();
2786ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, std::string>
2796ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	getEapDomainSuffixMatchInternal();
2806ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, std::string> getIdStrInternal();
2816ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	std::pair<SupplicantStatus, std::vector<uint8_t>>
2826ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	getWpsNfcConfigurationTokenInternal();
2836ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus enableInternal(bool no_connect);
2846ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus disableInternal();
2856ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus selectInternal();
2866ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus sendNetworkEapSimGsmAuthResponseInternal(
2876ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const std::vector<
2886ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius		ISupplicantStaNetwork::NetworkResponseEapSimGsmAuthParams>&
2896ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius		vec_params);
2906ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus sendNetworkEapSimGsmAuthFailureInternal();
2916ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus sendNetworkEapSimUmtsAuthResponseInternal(
2926ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const ISupplicantStaNetwork::NetworkResponseEapSimUmtsAuthParams&
2936ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius		params);
2946ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus sendNetworkEapSimUmtsAutsResponseInternal(
2956ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const std::array<uint8_t, 14>& auts);
2966ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus sendNetworkEapSimUmtsAuthFailureInternal();
2976ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	SupplicantStatus sendNetworkEapIdentityResponseInternal(
2986ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const std::vector<uint8_t>& identity);
29989da2fbba2216ed312512c8a2ea5e675d5157077pkanwar	SupplicantStatus sendNetworkEapIdentityResponseInternal_1_1(
30089da2fbba2216ed312512c8a2ea5e675d5157077pkanwar	    const std::vector<uint8_t>& identity,
30189da2fbba2216ed312512c8a2ea5e675d5157077pkanwar	    const std::vector<uint8_t>& imsi_identity);
3026ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius
3036ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	struct wpa_ssid* retrieveNetworkPtr();
3046ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	struct wpa_supplicant* retrieveIfacePtr();
3056ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	int isPskPassphraseValid(const std::string& psk);
3066ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	void resetInternalStateAfterParamsUpdate();
3076ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	int setStringFieldAndResetState(
3086ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const char* value, uint8_t** to_update_field,
3096ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const char* hexdump_prefix);
3106ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	int setStringFieldAndResetState(
3116ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const char* value, char** to_update_field,
3126ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const char* hexdump_prefix);
3136ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	int setStringKeyFieldAndResetState(
3146ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const char* value, char** to_update_field,
3156ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const char* hexdump_prefix);
3166ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	int setByteArrayFieldAndResetState(
3176ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const uint8_t* value, const size_t value_len,
3186ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    uint8_t** to_update_field, size_t* to_update_field_len,
3196ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const char* hexdump_prefix);
3206ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	int setByteArrayKeyFieldAndResetState(
3216ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const uint8_t* value, const size_t value_len,
3226ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    uint8_t** to_update_field, size_t* to_update_field_len,
3236ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	    const char* hexdump_prefix);
3246ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius
3256ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	// Reference to the global wpa_struct. This is assumed to be valid
3266ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	// for the lifetime of the process.
3276ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	struct wpa_global* wpa_global_;
3286ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	// Name of the iface this network belongs to.
3296ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	const std::string ifname_;
3306ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	// Id of the network this hidl object controls.
3316ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	const int network_id_;
3326ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	bool is_valid_;
3336ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius
3346ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius	DISALLOW_COPY_AND_ASSIGN(StaNetwork);
3356ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius};
3366ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius
3376ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius}  // namespace implementation
3386ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius}  // namespace V1_1
3396ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius}  // namespace wifi
3406ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius}  // namespace supplicant
3416ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius}  // namespace hardware
3426ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius}  // namespace android
3436ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius
3446ca7b54de22e93958b79bae0a4428107e08cb778Roshan Pius#endif  // WPA_SUPPLICANT_HIDL_STA_NETWORK_H
345