166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne/*
266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne * Copyright (C) 2017 The Android Open Source Project
366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne *
466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne * Licensed under the Apache License, Version 2.0 (the "License");
566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne * you may not use this file except in compliance with the License.
666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne * You may obtain a copy of the License at
766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne *
866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne *      http://www.apache.org/licenses/LICENSE-2.0
966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne *
1066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne * Unless required by applicable law or agreed to in writing, software
1166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne * distributed under the License is distributed on an "AS IS" BASIS,
1266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne * See the License for the specific language governing permissions and
1466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne * limitations under the License.
1566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne */
1666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhnepackage com.android.server.wifi;
1766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
1866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhneimport static org.junit.Assert.*;
19c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Piusimport static org.mockito.Matchers.eq;
2066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhneimport static org.mockito.Mockito.any;
21f50550926a7bddc24adf822876f35812d7d8c7beRoshan Piusimport static org.mockito.Mockito.anyString;
2266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhneimport static org.mockito.Mockito.doAnswer;
23f50550926a7bddc24adf822876f35812d7d8c7beRoshan Piusimport static org.mockito.Mockito.never;
24c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Piusimport static org.mockito.Mockito.verify;
2566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhneimport static org.mockito.Mockito.when;
2666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
2766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhneimport android.app.test.MockAnswerUtil.AnswerWithArguments;
28c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Piusimport android.content.Context;
29727ba04029935d4faee3c7fce8a5a0ba6ed0a4eaRoshan Piusimport android.hardware.wifi.supplicant.V1_0.ISupplicantNetwork;
3066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhneimport android.hardware.wifi.supplicant.V1_0.ISupplicantStaNetwork;
31c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Piusimport android.hardware.wifi.supplicant.V1_0.ISupplicantStaNetworkCallback;
32c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Piusimport android.hardware.wifi.supplicant.V1_0.ISupplicantStaNetworkCallback
33c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        .NetworkRequestEapSimGsmAuthParams;
34c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Piusimport android.hardware.wifi.supplicant.V1_0.ISupplicantStaNetworkCallback
35c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        .NetworkRequestEapSimUmtsAuthParams;
3666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhneimport android.hardware.wifi.supplicant.V1_0.SupplicantStatus;
3766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhneimport android.hardware.wifi.supplicant.V1_0.SupplicantStatusCode;
3866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhneimport android.net.wifi.WifiConfiguration;
3964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Piusimport android.net.wifi.WifiEnterpriseConfig;
4066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhneimport android.os.RemoteException;
4164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Piusimport android.text.TextUtils;
4266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
43c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Piusimport com.android.internal.R;
442104cc5eaf4ed7b9047ca1de460838a8ca6d0fe1Roshan Piusimport com.android.server.wifi.util.NativeUtil;
452104cc5eaf4ed7b9047ca1de460838a8ca6d0fe1Roshan Pius
4666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhneimport org.junit.Before;
4766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhneimport org.junit.Test;
4866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhneimport org.mockito.Mock;
4966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhneimport org.mockito.MockitoAnnotations;
5066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
5166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhneimport java.util.ArrayList;
5266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhneimport java.util.HashMap;
5366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhneimport java.util.Map;
54c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Piusimport java.util.Random;
5566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
5666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne/**
5766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne * Unit tests for SupplicantStaNetworkHal
5866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne */
5966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhnepublic class SupplicantStaNetworkHalTest {
6003fea88ccab149c07391d38f3c406bb04ab0a3a9Roshan Pius    private static final String IFACE_NAME = "wlan0";
61b8b3fb8228a1f90106bad8c59ce006b81ef7921cRoshan Pius    private static final Map<String, String> NETWORK_EXTRAS_VALUES = new HashMap<>();
62b8b3fb8228a1f90106bad8c59ce006b81ef7921cRoshan Pius    static {
63b8b3fb8228a1f90106bad8c59ce006b81ef7921cRoshan Pius        NETWORK_EXTRAS_VALUES.put("key1", "value1");
64b8b3fb8228a1f90106bad8c59ce006b81ef7921cRoshan Pius        NETWORK_EXTRAS_VALUES.put("key2", "value2");
65b8b3fb8228a1f90106bad8c59ce006b81ef7921cRoshan Pius    }
66b8b3fb8228a1f90106bad8c59ce006b81ef7921cRoshan Pius    private static final String NETWORK_EXTRAS_SERIALIZED =
67b8b3fb8228a1f90106bad8c59ce006b81ef7921cRoshan Pius            "%7B%22key1%22%3A%22value1%22%2C%22key2%22%3A%22value2%22%7D";
68a1da73ea4926ce8a5689594ff3685b0fe033d99fNingyuan Wang    private static final String ANONYMOUS_IDENTITY = "aaa@bbb.cc.ddd";
6966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
7066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    private SupplicantStaNetworkHal mSupplicantNetwork;
7166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    private SupplicantStatus mStatusSuccess;
7266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    private SupplicantStatus mStatusFailure;
7364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius    @Mock private ISupplicantStaNetwork mISupplicantStaNetworkMock;
74c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius    @Mock private Context mContext;
75c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius    @Mock private WifiMonitor mWifiMonitor;
7666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    private SupplicantNetworkVariables mSupplicantVariables;
77c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius    private MockResources mResources;
78c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius    private ISupplicantStaNetworkCallback mISupplicantStaNetworkCallback;
7966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
8066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    @Before
8166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    public void setUp() throws Exception {
8266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        MockitoAnnotations.initMocks(this);
8366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        mStatusSuccess = createSupplicantStatus(SupplicantStatusCode.SUCCESS);
8466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        mStatusFailure = createSupplicantStatus(SupplicantStatusCode.FAILURE_UNKNOWN);
8566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        mSupplicantVariables = new SupplicantNetworkVariables();
8666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        setupISupplicantNetworkMock();
8766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
88c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius        mResources = new MockResources();
89c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius        when(mContext.getResources()).thenReturn(mResources);
90c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius        createSupplicantStaNetwork();
9166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    }
9266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
9366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    /**
9466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne     * Tests the saving of WifiConfiguration to wpa_supplicant.
9566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne     */
9666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    @Test
9766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    public void testOpenNetworkWifiConfigurationSaveLoad() throws Exception {
9866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        WifiConfiguration config = WifiConfigurationTestUtil.createOpenHiddenNetwork();
9966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        config.updateIdentifier = "45";
10066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        testWifiConfigurationSaveLoad(config);
10166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    }
10266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
10366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    /**
104f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius     * Tests the saving/loading of WifiConfiguration to wpa_supplicant with psk passphrase.
10566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne     */
10666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    @Test
107f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius    public void testPskPassphraseNetworkWifiConfigurationSaveLoad() throws Exception {
10866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        WifiConfiguration config = WifiConfigurationTestUtil.createPskNetwork();
10966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        config.requirePMF = true;
11066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        testWifiConfigurationSaveLoad(config);
111f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius        verify(mISupplicantStaNetworkMock).setPskPassphrase(anyString());
112f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius        verify(mISupplicantStaNetworkMock)
113f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius                .getPskPassphrase(any(ISupplicantStaNetwork.getPskPassphraseCallback.class));
114f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius        verify(mISupplicantStaNetworkMock, never()).setPsk(any(byte[].class));
115f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius        verify(mISupplicantStaNetworkMock, never())
116f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius                .getPsk(any(ISupplicantStaNetwork.getPskCallback.class));
117f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius    }
118f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius
119f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius    /**
120f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius     * Tests the saving/loading of WifiConfiguration to wpa_supplicant with raw psk.
121f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius     */
122f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius    @Test
123f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius    public void testPskNetworkWifiConfigurationSaveLoad() throws Exception {
124f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius        WifiConfiguration config = WifiConfigurationTestUtil.createPskNetwork();
125f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius        config.preSharedKey = "945ef00c463c2a7c2496376b13263d1531366b46377179a4b17b393687450779";
126f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius        testWifiConfigurationSaveLoad(config);
127f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius        verify(mISupplicantStaNetworkMock).setPsk(any(byte[].class));
128f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius        verify(mISupplicantStaNetworkMock)
129f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius                .getPsk(any(ISupplicantStaNetwork.getPskCallback.class));
130f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius        verify(mISupplicantStaNetworkMock, never()).setPskPassphrase(anyString());
131f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius        verify(mISupplicantStaNetworkMock)
132f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius                .getPskPassphrase(any(ISupplicantStaNetwork.getPskPassphraseCallback.class));
13366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    }
13466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
13566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    /**
13667bbcdc2c81824ff671a5a1d8475a598199e342eRoshan Pius     * Tests the saving of WifiConfiguration to wpa_supplicant removes enclosing quotes of psk
13767bbcdc2c81824ff671a5a1d8475a598199e342eRoshan Pius     * passphrase
13867bbcdc2c81824ff671a5a1d8475a598199e342eRoshan Pius     */
13967bbcdc2c81824ff671a5a1d8475a598199e342eRoshan Pius    @Test
14067bbcdc2c81824ff671a5a1d8475a598199e342eRoshan Pius    public void testPskNetworkWifiConfigurationSaveRemovesPskQuotes() throws Exception {
14167bbcdc2c81824ff671a5a1d8475a598199e342eRoshan Pius        WifiConfiguration config = WifiConfigurationTestUtil.createPskNetwork();
14267bbcdc2c81824ff671a5a1d8475a598199e342eRoshan Pius        config.preSharedKey = "\"quoted_psd\"";
14367bbcdc2c81824ff671a5a1d8475a598199e342eRoshan Pius        assertTrue(mSupplicantNetwork.saveWifiConfiguration(config));
14467bbcdc2c81824ff671a5a1d8475a598199e342eRoshan Pius        assertEquals(mSupplicantVariables.pskPassphrase,
14567bbcdc2c81824ff671a5a1d8475a598199e342eRoshan Pius                NativeUtil.removeEnclosingQuotes(config.preSharedKey));
14667bbcdc2c81824ff671a5a1d8475a598199e342eRoshan Pius    }
14767bbcdc2c81824ff671a5a1d8475a598199e342eRoshan Pius
14867bbcdc2c81824ff671a5a1d8475a598199e342eRoshan Pius    /**
14966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne     * Tests the saving/loading of WifiConfiguration to wpa_supplicant.
15066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne     */
15166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    @Test
15266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    public void testWepNetworkWifiConfigurationSaveLoad() throws Exception {
15366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        WifiConfiguration config = WifiConfigurationTestUtil.createWepHiddenNetwork();
15466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        config.BSSID = "34:45:19:09:45";
15566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        testWifiConfigurationSaveLoad(config);
15666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    }
15766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
15866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    /**
15964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius     * Tests the saving of WifiConfiguration to wpa_supplicant.
16064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius     */
16164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius    @Test
16264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius    public void testEapPeapGtcNetworkWifiConfigurationSaveLoad() throws Exception {
16364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        WifiConfiguration config = WifiConfigurationTestUtil.createEapNetwork();
16464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        config.enterpriseConfig =
16564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                WifiConfigurationTestUtil.createPEAPWifiEnterpriseConfigWithGTCPhase2();
16664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        testWifiConfigurationSaveLoad(config);
16764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius    }
16864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
16964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius    /**
17064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius     * Tests the saving of WifiConfiguration to wpa_supplicant.
17164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius     */
17264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius    @Test
17364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius    public void testEapTlsNoneNetworkWifiConfigurationSaveLoad() throws Exception {
17464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        WifiConfiguration config = WifiConfigurationTestUtil.createEapNetwork();
17564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        config.enterpriseConfig =
17664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                WifiConfigurationTestUtil.createTLSWifiEnterpriseConfigWithNonePhase2();
17764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        testWifiConfigurationSaveLoad(config);
17864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius    }
17964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
18064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius    /**
18164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius     * Tests the saving of WifiConfiguration to wpa_supplicant.
18264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius     */
18364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius    @Test
18464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius    public void testEapTlsNoneClientCertNetworkWifiConfigurationSaveLoad() throws Exception {
18564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        WifiConfiguration config = WifiConfigurationTestUtil.createEapNetwork();
18664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        config.enterpriseConfig =
18764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                WifiConfigurationTestUtil.createTLSWifiEnterpriseConfigWithNonePhase2();
18864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        config.enterpriseConfig.setClientCertificateAlias("test_alias");
18964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        testWifiConfigurationSaveLoad(config);
19064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius    }
19164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
19264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius    /**
193cb9565f0cb8fa92346549bcacdfbf91cdf8e6bd3Roshan Pius     * Tests the saving of WifiConfiguration to wpa_supplicant.
194cb9565f0cb8fa92346549bcacdfbf91cdf8e6bd3Roshan Pius     */
195cb9565f0cb8fa92346549bcacdfbf91cdf8e6bd3Roshan Pius    @Test
196cb9565f0cb8fa92346549bcacdfbf91cdf8e6bd3Roshan Pius    public void testEapTlsAkaNetworkWifiConfigurationSaveLoad() throws Exception {
197cb9565f0cb8fa92346549bcacdfbf91cdf8e6bd3Roshan Pius        WifiConfiguration config = WifiConfigurationTestUtil.createEapNetwork();
198cb9565f0cb8fa92346549bcacdfbf91cdf8e6bd3Roshan Pius        config.enterpriseConfig =
199cb9565f0cb8fa92346549bcacdfbf91cdf8e6bd3Roshan Pius                WifiConfigurationTestUtil.createTLSWifiEnterpriseConfigWithAkaPhase2();
200cb9565f0cb8fa92346549bcacdfbf91cdf8e6bd3Roshan Pius        testWifiConfigurationSaveLoad(config);
201cb9565f0cb8fa92346549bcacdfbf91cdf8e6bd3Roshan Pius    }
202cb9565f0cb8fa92346549bcacdfbf91cdf8e6bd3Roshan Pius
203cb9565f0cb8fa92346549bcacdfbf91cdf8e6bd3Roshan Pius    /**
204727ba04029935d4faee3c7fce8a5a0ba6ed0a4eaRoshan Pius     * Tests the loading of network ID.
205727ba04029935d4faee3c7fce8a5a0ba6ed0a4eaRoshan Pius     */
206727ba04029935d4faee3c7fce8a5a0ba6ed0a4eaRoshan Pius    @Test
207727ba04029935d4faee3c7fce8a5a0ba6ed0a4eaRoshan Pius    public void testNetworkIdLoad() throws Exception {
208727ba04029935d4faee3c7fce8a5a0ba6ed0a4eaRoshan Pius        WifiConfiguration config = WifiConfigurationTestUtil.createWepHiddenNetwork();
209727ba04029935d4faee3c7fce8a5a0ba6ed0a4eaRoshan Pius        assertTrue(mSupplicantNetwork.saveWifiConfiguration(config));
210727ba04029935d4faee3c7fce8a5a0ba6ed0a4eaRoshan Pius
211727ba04029935d4faee3c7fce8a5a0ba6ed0a4eaRoshan Pius        // Modify the supplicant variable directly.
212727ba04029935d4faee3c7fce8a5a0ba6ed0a4eaRoshan Pius        mSupplicantVariables.networkId = 5;
213727ba04029935d4faee3c7fce8a5a0ba6ed0a4eaRoshan Pius        WifiConfiguration loadConfig = new WifiConfiguration();
214727ba04029935d4faee3c7fce8a5a0ba6ed0a4eaRoshan Pius        Map<String, String> networkExtras = new HashMap<>();
215727ba04029935d4faee3c7fce8a5a0ba6ed0a4eaRoshan Pius        assertTrue(mSupplicantNetwork.loadWifiConfiguration(loadConfig, networkExtras));
216727ba04029935d4faee3c7fce8a5a0ba6ed0a4eaRoshan Pius        assertEquals(mSupplicantVariables.networkId, loadConfig.networkId);
217727ba04029935d4faee3c7fce8a5a0ba6ed0a4eaRoshan Pius    }
218727ba04029935d4faee3c7fce8a5a0ba6ed0a4eaRoshan Pius
219727ba04029935d4faee3c7fce8a5a0ba6ed0a4eaRoshan Pius    /**
22066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne     * Tests the failure to load ssid aborts the loading of network variables.
22166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne     */
22266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    @Test
22366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    public void testSsidLoadFailure() throws Exception {
22466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        WifiConfiguration config = WifiConfigurationTestUtil.createWepHiddenNetwork();
22566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        assertTrue(mSupplicantNetwork.saveWifiConfiguration(config));
22666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
22766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
22866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public void answer(ISupplicantStaNetwork.getSsidCallback cb) throws RemoteException {
22966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                cb.onValues(mStatusFailure, mSupplicantVariables.ssid);
23066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
23166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock)
23266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                .getSsid(any(ISupplicantStaNetwork.getSsidCallback.class));
23366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
23466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        WifiConfiguration loadConfig = new WifiConfiguration();
23566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        Map<String, String> networkExtras = new HashMap<>();
23666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        assertFalse(mSupplicantNetwork.loadWifiConfiguration(loadConfig, networkExtras));
23766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    }
23866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
23966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    /**
24066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne     * Tests the failure to save ssid.
24166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne     */
24266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    @Test
24366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    public void testSsidSaveFailure() throws Exception {
24466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        WifiConfiguration config = WifiConfigurationTestUtil.createWepHiddenNetwork();
24566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
24666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
24766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public SupplicantStatus answer(ArrayList<Byte> ssid) throws RemoteException {
24866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                return mStatusFailure;
24966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
25066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock).setSsid(any(ArrayList.class));
25166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
25266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        assertFalse(mSupplicantNetwork.saveWifiConfiguration(config));
25366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    }
25466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
25566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    /**
25666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne     * Tests the failure to save invalid key mgmt (unknown bit set in the
25766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne     * {@link WifiConfiguration#allowedKeyManagement} being saved).
25866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne     */
25966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    @Test
26066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    public void testInvalidKeyMgmtSaveFailure() throws Exception {
26166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        WifiConfiguration config = WifiConfigurationTestUtil.createWepHiddenNetwork();
26266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        config.allowedKeyManagement.set(10);
26366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        try {
26466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            assertFalse(mSupplicantNetwork.saveWifiConfiguration(config));
26566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        } catch (IllegalArgumentException e) {
26666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            return;
26766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }
26866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        assertTrue(false);
26966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    }
27066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
27166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    /**
27266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne     * Tests the failure to load invalid key mgmt (unkown bit set in the supplicant network key_mgmt
27366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne     * variable read).
27466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne     */
27566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    @Test
27666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    public void testInvalidKeyMgmtLoadFailure() throws Exception {
27766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        WifiConfiguration config = WifiConfigurationTestUtil.createWepHiddenNetwork();
27866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        assertTrue(mSupplicantNetwork.saveWifiConfiguration(config));
27966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
28066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        // Modify the supplicant variable directly.
28166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        mSupplicantVariables.keyMgmtMask = 0xFFFFF;
28266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        WifiConfiguration loadConfig = new WifiConfiguration();
28366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        Map<String, String> networkExtras = new HashMap<>();
28466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        try {
28566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            assertFalse(mSupplicantNetwork.loadWifiConfiguration(loadConfig, networkExtras));
28666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        } catch (IllegalArgumentException e) {
28766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            return;
28866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }
28966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        assertTrue(false);
29066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    }
29166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
29266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    /**
29366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne     * Tests the failure to save invalid bssid (less than 6 bytes in the
29466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne     * {@link WifiConfiguration#BSSID} being saved).
29566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne     */
29666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    @Test
29766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    public void testInvalidBssidSaveFailure() throws Exception {
29866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        WifiConfiguration config = WifiConfigurationTestUtil.createWepHiddenNetwork();
29966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        config.getNetworkSelectionStatus().setNetworkSelectionBSSID("45:34:23:12");
30066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        try {
30166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            assertFalse(mSupplicantNetwork.saveWifiConfiguration(config));
30266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        } catch (IllegalArgumentException e) {
30366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            return;
30466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }
30566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        assertTrue(false);
30666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    }
30764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
30866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    /**
30966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne     * Tests the failure to load invalid bssid (less than 6 bytes in the supplicant bssid variable
31066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne     * read).
31166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne     */
31266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    @Test
31366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    public void testInvalidBssidLoadFailure() throws Exception {
31466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        WifiConfiguration config = WifiConfigurationTestUtil.createWepHiddenNetwork();
31566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        assertTrue(mSupplicantNetwork.saveWifiConfiguration(config));
31666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
31766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        // Modify the supplicant variable directly.
31866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        mSupplicantVariables.bssid = new byte[3];
31966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        WifiConfiguration loadConfig = new WifiConfiguration();
32066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        Map<String, String> networkExtras = new HashMap<>();
32166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        try {
32266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            assertFalse(mSupplicantNetwork.loadWifiConfiguration(loadConfig, networkExtras));
32366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        } catch (IllegalArgumentException e) {
32466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            return;
32566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }
32666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        assertTrue(false);
32766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    }
32866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
32964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius    /**
33064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius     * Tests the loading of invalid ssid from wpa_supplicant.
33164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius     */
33264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius    @Test
33364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius    public void testInvalidSsidLoadFailure() throws Exception {
33464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        WifiConfiguration config = WifiConfigurationTestUtil.createWepHiddenNetwork();
33564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        assertTrue(mSupplicantNetwork.saveWifiConfiguration(config));
33664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
33764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        // Modify the supplicant variable directly.
33864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        mSupplicantVariables.ssid = null;
33964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
34064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        WifiConfiguration loadConfig = new WifiConfiguration();
34164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        Map<String, String> networkExtras = new HashMap<>();
34264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        assertFalse(mSupplicantNetwork.loadWifiConfiguration(loadConfig, networkExtras));
34364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius    }
34464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
34564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius    /**
34664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius     * Tests the loading of invalid eap method from wpa_supplicant.
34764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius     * Invalid eap method is assumed to be a non enterprise network. So, the loading should
34864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius     * succeed as a non-enterprise network.
34964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius     */
35064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius    @Test
35164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius    public void testInvalidEapMethodLoadFailure() throws Exception {
35264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        WifiConfiguration config = WifiConfigurationTestUtil.createEapNetwork();
35364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        config.enterpriseConfig =
35464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                WifiConfigurationTestUtil.createPEAPWifiEnterpriseConfigWithGTCPhase2();
35564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        assertTrue(mSupplicantNetwork.saveWifiConfiguration(config));
35664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
35764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        // Modify the supplicant variable directly.
35864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        mSupplicantVariables.eapMethod = -1;
35964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
36064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        WifiConfiguration loadConfig = new WifiConfiguration();
36164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        Map<String, String> networkExtras = new HashMap<>();
36264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        assertTrue(mSupplicantNetwork.loadWifiConfiguration(loadConfig, networkExtras));
36364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius    }
36464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
36564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius    /**
36664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius     * Tests the loading of invalid eap phase2 method from wpa_supplicant.
36764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius     */
36864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius    @Test
36964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius    public void testInvalidEapPhase2MethodLoadFailure() throws Exception {
37064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        WifiConfiguration config = WifiConfigurationTestUtil.createEapNetwork();
37164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        config.enterpriseConfig =
37264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                WifiConfigurationTestUtil.createPEAPWifiEnterpriseConfigWithGTCPhase2();
37364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        assertTrue(mSupplicantNetwork.saveWifiConfiguration(config));
37464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
37564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        // Modify the supplicant variable directly.
37664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        mSupplicantVariables.eapPhase2Method = -1;
37764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
37864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        WifiConfiguration loadConfig = new WifiConfiguration();
37964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        Map<String, String> networkExtras = new HashMap<>();
38064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        assertFalse(mSupplicantNetwork.loadWifiConfiguration(loadConfig, networkExtras));
38164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius    }
38264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
383445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    /**
384445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius     * Tests the parsing of GSM auth response parameters.
385445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius     */
386445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    @Test
387445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    public void testSendNetworkEapSimGsmAuthResponseWith2KcSresPair() throws Exception {
388445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        final byte[] kc = new byte[]{0x45, 0x45, 0x32, 0x34, 0x45, 0x10, 0x34, 0x12};
389445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        final byte[] sres = new byte[]{0x12, 0x10, 0x32, 0x23};
390445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        // Send 2 kc/sres pair for this request.
391dd685b34596b790c76e2cc03fc825c1249c9174fRoshan Pius        String paramsStr = ":" + NativeUtil.hexStringFromByteArray(kc)
392dd685b34596b790c76e2cc03fc825c1249c9174fRoshan Pius                + ":" + NativeUtil.hexStringFromByteArray(sres)
393dd685b34596b790c76e2cc03fc825c1249c9174fRoshan Pius                + ":" + NativeUtil.hexStringFromByteArray(kc)
394dd685b34596b790c76e2cc03fc825c1249c9174fRoshan Pius                + ":" + NativeUtil.hexStringFromByteArray(sres);
395445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius
396445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        doAnswer(new AnswerWithArguments() {
397445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius            public SupplicantStatus answer(
398445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                    ArrayList<ISupplicantStaNetwork.NetworkResponseEapSimGsmAuthParams> params)
399445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                    throws RemoteException {
400445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                assertEquals(2, params.size());
401445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                assertArrayEquals(kc, params.get(0).kc);
402445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                assertArrayEquals(sres, params.get(0).sres);
403445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                assertArrayEquals(kc, params.get(1).kc);
404445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                assertArrayEquals(sres, params.get(1).sres);
405445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                return mStatusSuccess;
406445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius            }
407445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        }).when(mISupplicantStaNetworkMock).sendNetworkEapSimGsmAuthResponse(any(ArrayList.class));
408445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius
409445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        assertTrue(mSupplicantNetwork.sendNetworkEapSimGsmAuthResponse(paramsStr));
410445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    }
411445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius
412445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    /**
413445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius     * Tests the parsing of GSM auth response parameters.
414445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius     */
415445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    @Test
416445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    public void testSendNetworkEapSimGsmAuthResponseWith3KcSresPair() throws Exception {
417445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        final byte[] kc1 = new byte[]{0x45, 0x45, 0x32, 0x34, 0x45, 0x10, 0x34, 0x12};
418445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        final byte[] sres1 = new byte[]{0x12, 0x10, 0x32, 0x23};
419445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        final byte[] kc2 = new byte[]{0x45, 0x34, 0x12, 0x34, 0x45, 0x10, 0x34, 0x12};
420445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        final byte[] sres2 = new byte[]{0x12, 0x23, 0x12, 0x23};
421445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        final byte[] kc3 = new byte[]{0x25, 0x34, 0x12, 0x14, 0x45, 0x10, 0x34, 0x12};
422445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        final byte[] sres3 = new byte[]{0x42, 0x23, 0x22, 0x23};
423445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        // Send 3 kc/sres pair for this request.
424dd685b34596b790c76e2cc03fc825c1249c9174fRoshan Pius        String paramsStr = ":" + NativeUtil.hexStringFromByteArray(kc1)
425dd685b34596b790c76e2cc03fc825c1249c9174fRoshan Pius                + ":" + NativeUtil.hexStringFromByteArray(sres1)
426dd685b34596b790c76e2cc03fc825c1249c9174fRoshan Pius                + ":" + NativeUtil.hexStringFromByteArray(kc2)
427dd685b34596b790c76e2cc03fc825c1249c9174fRoshan Pius                + ":" + NativeUtil.hexStringFromByteArray(sres2)
428dd685b34596b790c76e2cc03fc825c1249c9174fRoshan Pius                + ":" + NativeUtil.hexStringFromByteArray(kc3)
429dd685b34596b790c76e2cc03fc825c1249c9174fRoshan Pius                + ":" + NativeUtil.hexStringFromByteArray(sres3);
430445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius
431445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        doAnswer(new AnswerWithArguments() {
432445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius            public SupplicantStatus answer(
433445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                    ArrayList<ISupplicantStaNetwork.NetworkResponseEapSimGsmAuthParams> params)
434445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                    throws RemoteException {
435445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                assertEquals(3, params.size());
436445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                assertArrayEquals(kc1, params.get(0).kc);
437445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                assertArrayEquals(sres1, params.get(0).sres);
438445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                assertArrayEquals(kc2, params.get(1).kc);
439445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                assertArrayEquals(sres2, params.get(1).sres);
440445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                assertArrayEquals(kc3, params.get(2).kc);
441445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                assertArrayEquals(sres3, params.get(2).sres);
442445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                return mStatusSuccess;
443445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius            }
444445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        }).when(mISupplicantStaNetworkMock).sendNetworkEapSimGsmAuthResponse(any(ArrayList.class));
445445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius
446445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        assertTrue(mSupplicantNetwork.sendNetworkEapSimGsmAuthResponse(paramsStr));
447445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    }
448445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius
449445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    /**
450445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius     * Tests the parsing of invalid GSM auth response parameters (invalid kc & sres lengths).
451445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius     */
452445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    @Test
453445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    public void testSendInvalidKcSresLenNetworkEapSimGsmAuthResponse() throws Exception {
454445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        final byte[] kc1 = new byte[]{0x45, 0x45, 0x32, 0x34, 0x45, 0x10, 0x34};
455445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        final byte[] sres1 = new byte[]{0x12, 0x10, 0x23};
456445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        final byte[] kc2 = new byte[]{0x45, 0x34, 0x12, 0x34, 0x45, 0x10, 0x34, 0x12};
457445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        final byte[] sres2 = new byte[]{0x12, 0x23, 0x12, 0x23};
458445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        // Send 2 kc/sres pair for this request.
459dd685b34596b790c76e2cc03fc825c1249c9174fRoshan Pius        String paramsStr = ":" + NativeUtil.hexStringFromByteArray(kc1)
460dd685b34596b790c76e2cc03fc825c1249c9174fRoshan Pius                + ":" + NativeUtil.hexStringFromByteArray(sres1)
461dd685b34596b790c76e2cc03fc825c1249c9174fRoshan Pius                + ":" + NativeUtil.hexStringFromByteArray(kc2)
462dd685b34596b790c76e2cc03fc825c1249c9174fRoshan Pius                + ":" + NativeUtil.hexStringFromByteArray(sres2);
463445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius
464445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        doAnswer(new AnswerWithArguments() {
465445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius            public SupplicantStatus answer(
466445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                    ArrayList<ISupplicantStaNetwork.NetworkResponseEapSimGsmAuthParams> params)
467445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                    throws RemoteException {
468445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                return mStatusSuccess;
469445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius            }
470445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        }).when(mISupplicantStaNetworkMock).sendNetworkEapSimGsmAuthResponse(any(ArrayList.class));
471445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius
472445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        assertFalse(mSupplicantNetwork.sendNetworkEapSimGsmAuthResponse(paramsStr));
473445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    }
474445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius
475445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    /**
476445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius     * Tests the parsing of invalid GSM auth response parameters (invalid number of kc/sres pairs).
477445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius     */
478445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    @Test
479445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    public void testSendInvalidKcSresPairNumNetworkEapSimGsmAuthResponse() throws Exception {
480445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        final byte[] kc = new byte[]{0x45, 0x34, 0x12, 0x34, 0x45, 0x10, 0x34, 0x12};
481445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        final byte[] sres = new byte[]{0x12, 0x23, 0x12, 0x23};
482445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        // Send 1 kc/sres pair for this request.
483dd685b34596b790c76e2cc03fc825c1249c9174fRoshan Pius        String paramsStr = ":" + NativeUtil.hexStringFromByteArray(kc)
484dd685b34596b790c76e2cc03fc825c1249c9174fRoshan Pius                + ":" + NativeUtil.hexStringFromByteArray(sres);
485445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius
486445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        doAnswer(new AnswerWithArguments() {
487445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius            public SupplicantStatus answer(
488445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                    ArrayList<ISupplicantStaNetwork.NetworkResponseEapSimGsmAuthParams> params)
489445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                    throws RemoteException {
490445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                return mStatusSuccess;
491445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius            }
492445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        }).when(mISupplicantStaNetworkMock).sendNetworkEapSimGsmAuthResponse(any(ArrayList.class));
493445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius
494445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        assertFalse(mSupplicantNetwork.sendNetworkEapSimGsmAuthResponse(paramsStr));
495445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    }
496445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius
497445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    /**
498445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius     * Tests the parsing of UMTS auth response parameters.
499445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius     */
500445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    @Test
501445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    public void testSendNetworkEapSimUmtsAuthResponse() throws Exception {
502445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        final byte[] ik = new byte[]{0x45, 0x45, 0x32, 0x34, 0x45, 0x10, 0x34, 0x12, 0x23, 0x34,
503445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                0x33, 0x23, 0x34, 0x10, 0x40, 0x34};
504445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        final byte[] ck = new byte[]{0x12, 0x10, 0x32, 0x23, 0x45, 0x10, 0x34, 0x12, 0x23, 0x34,
505445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                0x33, 0x23, 0x34, 0x10, 0x40, 0x34};
506445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        final byte[] res = new byte[]{0x12, 0x10, 0x32, 0x23, 0x45, 0x10, 0x34, 0x12, 0x23, 0x34};
507dd685b34596b790c76e2cc03fc825c1249c9174fRoshan Pius        String paramsStr = ":" + NativeUtil.hexStringFromByteArray(ik)
508dd685b34596b790c76e2cc03fc825c1249c9174fRoshan Pius                + ":" + NativeUtil.hexStringFromByteArray(ck)
509dd685b34596b790c76e2cc03fc825c1249c9174fRoshan Pius                + ":" + NativeUtil.hexStringFromByteArray(res);
510445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius
511445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        doAnswer(new AnswerWithArguments() {
512445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius            public SupplicantStatus answer(
513445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                    ISupplicantStaNetwork.NetworkResponseEapSimUmtsAuthParams params)
514445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                    throws RemoteException {
515445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                assertArrayEquals(ik, params.ik);
516445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                assertArrayEquals(ck, params.ck);
517445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                // Convert to arraylist before comparison.
518445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                ArrayList<Byte> resList = new ArrayList<>();
519445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                for (byte b : res) {
520445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                    resList.add(b);
521445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                }
522445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                assertEquals(resList, params.res);
523445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                return mStatusSuccess;
524445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius            }
525445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        }).when(mISupplicantStaNetworkMock).sendNetworkEapSimUmtsAuthResponse(
526445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                any(ISupplicantStaNetwork.NetworkResponseEapSimUmtsAuthParams.class));
527445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius
528445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        assertTrue(mSupplicantNetwork.sendNetworkEapSimUmtsAuthResponse(paramsStr));
529445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    }
530445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius
531445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    /**
532445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius     * Tests the parsing of invalid UMTS auth response parameters (invalid ik, ck lengths).
533445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius     */
534445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    @Test
535445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    public void testSendInvalidNetworkEapSimUmtsAuthResponse() throws Exception {
536445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        final byte[] ik = new byte[]{0x45, 0x45, 0x32, 0x34, 0x45, 0x10, 0x34, 0x12};
537445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        final byte[] ck = new byte[]{0x12, 0x10, 0x32, 0x23, 0x45, 0x10, 0x34, 0x12, 0x23, 0x34,
538445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                0x33, 0x23, 0x34, 0x10, 0x40};
539445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        final byte[] res = new byte[]{0x12, 0x10, 0x32, 0x23, 0x45, 0x10, 0x34, 0x12, 0x23, 0x34};
540dd685b34596b790c76e2cc03fc825c1249c9174fRoshan Pius        String paramsStr = ":" + NativeUtil.hexStringFromByteArray(ik)
541dd685b34596b790c76e2cc03fc825c1249c9174fRoshan Pius                + ":" + NativeUtil.hexStringFromByteArray(ck)
542dd685b34596b790c76e2cc03fc825c1249c9174fRoshan Pius                + ":" + NativeUtil.hexStringFromByteArray(res);
543445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius
544445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        doAnswer(new AnswerWithArguments() {
545445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius            public SupplicantStatus answer(
546445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                    ISupplicantStaNetwork.NetworkResponseEapSimUmtsAuthParams params)
547445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                    throws RemoteException {
548445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                return mStatusSuccess;
549445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius            }
550445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        }).when(mISupplicantStaNetworkMock).sendNetworkEapSimUmtsAuthResponse(
551445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                any(ISupplicantStaNetwork.NetworkResponseEapSimUmtsAuthParams.class));
552445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius
553445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        assertFalse(mSupplicantNetwork.sendNetworkEapSimUmtsAuthResponse(paramsStr));
554445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    }
555445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius
556445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    /**
557445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius     * Tests the parsing of UMTS auts response parameters.
558445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius     */
559445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    @Test
560445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    public void testSendNetworkEapSimUmtsAutsResponse() throws Exception {
561445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        final byte[] auts = new byte[]{0x45, 0x45, 0x32, 0x34, 0x45, 0x10, 0x34, 0x12, 0x23, 0x34,
562445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                0x33, 0x23, 0x34, 0x10};
5632104cc5eaf4ed7b9047ca1de460838a8ca6d0fe1Roshan Pius        String paramsStr = ":" + NativeUtil.hexStringFromByteArray(auts);
564445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius
565445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        doAnswer(new AnswerWithArguments() {
566445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius            public SupplicantStatus answer(byte[] params)
567445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                    throws RemoteException {
568445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                assertArrayEquals(auts, params);
569445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                return mStatusSuccess;
570445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius            }
571445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        }).when(mISupplicantStaNetworkMock).sendNetworkEapSimUmtsAutsResponse(any(byte[].class));
572445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius
573445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        assertTrue(mSupplicantNetwork.sendNetworkEapSimUmtsAutsResponse(paramsStr));
574445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    }
575445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius
576445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    /**
577445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius     * Tests the parsing of invalid UMTS auts response parameters (invalid auts length).
578445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius     */
579445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    @Test
580445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    public void testSendInvalidNetworkEapSimUmtsAutsResponse() throws Exception {
581445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        final byte[] auts = new byte[]{0x45, 0x45, 0x32, 0x34, 0x45, 0x10, 0x34, 0x12, 0x23};
5822104cc5eaf4ed7b9047ca1de460838a8ca6d0fe1Roshan Pius        String paramsStr = ":" + NativeUtil.hexStringFromByteArray(auts);
583445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius
584445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        doAnswer(new AnswerWithArguments() {
585445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius            public SupplicantStatus answer(byte[] params)
586445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                    throws RemoteException {
587445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                assertArrayEquals(auts, params);
588445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                return mStatusSuccess;
589445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius            }
590445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        }).when(mISupplicantStaNetworkMock).sendNetworkEapSimUmtsAutsResponse(any(byte[].class));
591445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius
592445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        assertFalse(mSupplicantNetwork.sendNetworkEapSimUmtsAutsResponse(paramsStr));
593445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    }
594445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius
595445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    /**
596445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius     * Tests the parsing of identity string.
597445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius     */
598445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    @Test
599445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    public void testSendNetworkEapIdentityResponse() throws Exception {
600445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        final String identityStr = "test@test.com";
601445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius
602445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        doAnswer(new AnswerWithArguments() {
603445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius            public SupplicantStatus answer(ArrayList<Byte> identity)
604445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                    throws RemoteException {
6052104cc5eaf4ed7b9047ca1de460838a8ca6d0fe1Roshan Pius                assertEquals(identityStr, NativeUtil.stringFromByteArrayList(identity));
606445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius                return mStatusSuccess;
607445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius            }
608445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        }).when(mISupplicantStaNetworkMock).sendNetworkEapIdentityResponse(any(ArrayList.class));
609445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius
610445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius        assertTrue(mSupplicantNetwork.sendNetworkEapIdentityResponse(identityStr));
611445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius    }
612445b5f46264af0a2e9c043c9badb2b4f38044f11Roshan Pius
613c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius    /**
614c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius     * Tests the addition of FT flags when the device supports it.
615c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius     */
616c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius    @Test
617c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius    public void testAddFtPskFlags() throws Exception {
618c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius        mResources.setBoolean(R.bool.config_wifi_fast_bss_transition_enabled, true);
619c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius        createSupplicantStaNetwork();
620c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius
621c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius        WifiConfiguration config = WifiConfigurationTestUtil.createPskNetwork();
622c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius        assertTrue(mSupplicantNetwork.saveWifiConfiguration(config));
623c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius
624c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius        // Check the supplicant variables to ensure that we have added the FT flags.
625c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius        assertTrue((mSupplicantVariables.keyMgmtMask & ISupplicantStaNetwork.KeyMgmtMask.FT_PSK)
626c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius                == ISupplicantStaNetwork.KeyMgmtMask.FT_PSK);
627c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius
628c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius        WifiConfiguration loadConfig = new WifiConfiguration();
629c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius        Map<String, String> networkExtras = new HashMap<>();
630c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius        assertTrue(mSupplicantNetwork.loadWifiConfiguration(loadConfig, networkExtras));
631c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius        // The FT flags should be stripped out when reading it back.
632c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius        WifiConfigurationTestUtil.assertConfigurationEqualForSupplicant(config, loadConfig);
633c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius    }
634c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius
635c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius    /**
636c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius     * Tests the addition of FT flags when the device supports it.
637c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius     */
638c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius    @Test
639c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius    public void testAddFtEapFlags() throws Exception {
640c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius        mResources.setBoolean(R.bool.config_wifi_fast_bss_transition_enabled, true);
641c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius        createSupplicantStaNetwork();
642c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius
643c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius        WifiConfiguration config = WifiConfigurationTestUtil.createEapNetwork();
644c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius        assertTrue(mSupplicantNetwork.saveWifiConfiguration(config));
645c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius
646c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius        // Check the supplicant variables to ensure that we have added the FT flags.
647c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius        assertTrue((mSupplicantVariables.keyMgmtMask & ISupplicantStaNetwork.KeyMgmtMask.FT_EAP)
648c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius                == ISupplicantStaNetwork.KeyMgmtMask.FT_EAP);
649c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius
650c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius        WifiConfiguration loadConfig = new WifiConfiguration();
651c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius        Map<String, String> networkExtras = new HashMap<>();
652c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius        assertTrue(mSupplicantNetwork.loadWifiConfiguration(loadConfig, networkExtras));
653c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius        // The FT flags should be stripped out when reading it back.
654c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius        WifiConfigurationTestUtil.assertConfigurationEqualForSupplicant(config, loadConfig);
655c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius    }
656c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius
657c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius    /**
658c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius     * Tests the retrieval of WPS NFC token.
659c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius     */
660c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius    @Test
661c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius    public void testGetWpsNfcConfigurationToken() throws Exception {
662c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        final ArrayList<Byte> token = new ArrayList<>();
663c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        token.add(Byte.valueOf((byte) 0x45));
664c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        token.add(Byte.valueOf((byte) 0x34));
665c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius
666c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        doAnswer(new AnswerWithArguments() {
667c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius            public void answer(ISupplicantStaNetwork.getWpsNfcConfigurationTokenCallback cb)
668c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius                    throws RemoteException {
669c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius                cb.onValues(mStatusSuccess, token);
670c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius            }
671c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        }).when(mISupplicantStaNetworkMock)
672c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius                .getWpsNfcConfigurationToken(
673c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius                        any(ISupplicantStaNetwork.getWpsNfcConfigurationTokenCallback.class));
674c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius
675c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        assertEquals("4534", mSupplicantNetwork.getWpsNfcConfigurationToken());
676c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius    }
677c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius
678c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius    /**
679c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius     * Tests that callback registration failure triggers a failure in saving network config.
680c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius     */
681c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius    @Test
682c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius    public void testSaveFailureDueToCallbackReg() throws Exception {
683c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        when(mISupplicantStaNetworkMock.registerCallback(any(ISupplicantStaNetworkCallback.class)))
684c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius                .thenReturn(mStatusFailure);
685c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        WifiConfiguration config = WifiConfigurationTestUtil.createPskNetwork();
686c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        assertFalse(mSupplicantNetwork.saveWifiConfiguration(config));
687c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius    }
688c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius
689c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius    /**
690c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius     * Tests the network gsm auth callback.
691c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius     */
692c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius    @Test
693c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius    public void testNetworkEapGsmAuthCallback() throws Exception {
694c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        WifiConfiguration config = WifiConfigurationTestUtil.createPskNetwork();
695c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        assertTrue(mSupplicantNetwork.saveWifiConfiguration(config));
696c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        assertNotNull(mISupplicantStaNetworkCallback);
697c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius
698c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        // Now trigger eap gsm callback and ensure that the event is broadcast via WifiMonitor.
699c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        NetworkRequestEapSimGsmAuthParams params = new NetworkRequestEapSimGsmAuthParams();
700c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        Random random = new Random();
701c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        byte[] rand1 = new byte[16];
702c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        byte[] rand2 = new byte[16];
703c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        byte[] rand3 = new byte[16];
704c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        random.nextBytes(rand1);
705c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        random.nextBytes(rand2);
706c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        random.nextBytes(rand3);
707c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        params.rands.add(rand1);
708c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        params.rands.add(rand2);
709c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        params.rands.add(rand3);
710c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius
711c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        String[] expectedRands = {
712c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius                NativeUtil.hexStringFromByteArray(rand1), NativeUtil.hexStringFromByteArray(rand2),
713c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius                NativeUtil.hexStringFromByteArray(rand3)
714c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        };
715c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius
716c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        mISupplicantStaNetworkCallback.onNetworkEapSimGsmAuthRequest(params);
717c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        verify(mWifiMonitor).broadcastNetworkGsmAuthRequestEvent(
718c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius                eq(IFACE_NAME), eq(config.networkId), eq(config.SSID), eq(expectedRands));
719c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius    }
720c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius
721c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius    /**
722c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius     * Tests the network umts auth callback.
723c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius     */
724c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius    @Test
725c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius    public void testNetworkEapUmtsAuthCallback() throws Exception {
726c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        WifiConfiguration config = WifiConfigurationTestUtil.createPskNetwork();
727c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        assertTrue(mSupplicantNetwork.saveWifiConfiguration(config));
728c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        assertNotNull(mISupplicantStaNetworkCallback);
729c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius
730c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        // Now trigger eap gsm callback and ensure that the event is broadcast via WifiMonitor.
731c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        NetworkRequestEapSimUmtsAuthParams params = new NetworkRequestEapSimUmtsAuthParams();
732c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        Random random = new Random();
733c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        random.nextBytes(params.autn);
734c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        random.nextBytes(params.rand);
735c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius
736c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        String[] expectedRands = {
737dd685b34596b790c76e2cc03fc825c1249c9174fRoshan Pius                NativeUtil.hexStringFromByteArray(params.rand),
738dd685b34596b790c76e2cc03fc825c1249c9174fRoshan Pius                NativeUtil.hexStringFromByteArray(params.autn)
739c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        };
740c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius
741c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        mISupplicantStaNetworkCallback.onNetworkEapSimUmtsAuthRequest(params);
742c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        verify(mWifiMonitor).broadcastNetworkUmtsAuthRequestEvent(
743c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius                eq(IFACE_NAME), eq(config.networkId), eq(config.SSID), eq(expectedRands));
744c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius    }
745c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius
746c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius    /**
747c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius     * Tests the network identity callback.
748c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius     */
749c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius    @Test
750c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius    public void testNetworkIdentityCallback() throws Exception {
751c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        WifiConfiguration config = WifiConfigurationTestUtil.createPskNetwork();
752c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        assertTrue(mSupplicantNetwork.saveWifiConfiguration(config));
753c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        assertNotNull(mISupplicantStaNetworkCallback);
754c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius
755c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        // Now trigger identity request callback and ensure that the event is broadcast via
756c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        // WifiMonitor.
757c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        mISupplicantStaNetworkCallback.onNetworkEapIdentityRequest();
758c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        verify(mWifiMonitor).broadcastNetworkIdentityRequestEvent(
759c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius                eq(IFACE_NAME), eq(config.networkId), eq(config.SSID));
760c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius    }
761c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius
76266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    private void testWifiConfigurationSaveLoad(WifiConfiguration config) {
76366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        assertTrue(mSupplicantNetwork.saveWifiConfiguration(config));
76466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        WifiConfiguration loadConfig = new WifiConfiguration();
76566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        Map<String, String> networkExtras = new HashMap<>();
76666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        assertTrue(mSupplicantNetwork.loadWifiConfiguration(loadConfig, networkExtras));
76766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        WifiConfigurationTestUtil.assertConfigurationEqualForSupplicant(config, loadConfig);
76866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        assertEquals(config.configKey(),
76966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                networkExtras.get(SupplicantStaNetworkHal.ID_STRING_KEY_CONFIG_KEY));
77066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        assertEquals(
77166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                config.creatorUid,
77266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                Integer.parseInt(networkExtras.get(
77366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                        SupplicantStaNetworkHal.ID_STRING_KEY_CREATOR_UID)));
77466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        // There is no getter for this one, so check the supplicant variable.
77564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        if (!TextUtils.isEmpty(config.updateIdentifier)) {
77666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            assertEquals(Integer.parseInt(config.updateIdentifier),
77766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                    mSupplicantVariables.updateIdentifier);
77866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }
77964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        // There is no getter for this one, so check the supplicant variable.
78064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        String oppKeyCaching =
78164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                config.enterpriseConfig.getFieldValue(WifiEnterpriseConfig.OPP_KEY_CACHING);
78264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        if (!TextUtils.isEmpty(oppKeyCaching)) {
78364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            assertEquals(
78464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                    Integer.parseInt(oppKeyCaching) == 1 ? true : false,
78564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                    mSupplicantVariables.eapProactiveKeyCaching);
78664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }
78766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    }
78866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
78966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    /**
790b8b3fb8228a1f90106bad8c59ce006b81ef7921cRoshan Pius     * Verifies that createNetworkExtra() & parseNetworkExtra correctly writes a serialized and
791b8b3fb8228a1f90106bad8c59ce006b81ef7921cRoshan Pius     * URL-encoded JSON object.
792b8b3fb8228a1f90106bad8c59ce006b81ef7921cRoshan Pius     */
793b8b3fb8228a1f90106bad8c59ce006b81ef7921cRoshan Pius    @Test
794b8b3fb8228a1f90106bad8c59ce006b81ef7921cRoshan Pius    public void testNetworkExtra() {
795b8b3fb8228a1f90106bad8c59ce006b81ef7921cRoshan Pius        assertEquals(NETWORK_EXTRAS_SERIALIZED,
796b8b3fb8228a1f90106bad8c59ce006b81ef7921cRoshan Pius                SupplicantStaNetworkHal.createNetworkExtra(NETWORK_EXTRAS_VALUES));
797b8b3fb8228a1f90106bad8c59ce006b81ef7921cRoshan Pius        assertEquals(NETWORK_EXTRAS_VALUES,
798b8b3fb8228a1f90106bad8c59ce006b81ef7921cRoshan Pius                SupplicantStaNetworkHal.parseNetworkExtra(NETWORK_EXTRAS_SERIALIZED));
799b8b3fb8228a1f90106bad8c59ce006b81ef7921cRoshan Pius    }
800b8b3fb8228a1f90106bad8c59ce006b81ef7921cRoshan Pius
801b8b3fb8228a1f90106bad8c59ce006b81ef7921cRoshan Pius    /**
802a1da73ea4926ce8a5689594ff3685b0fe033d99fNingyuan Wang     * Verifies that fetachEapAnonymousIdentity() can get the anonymous identity from supplicant.
803a1da73ea4926ce8a5689594ff3685b0fe033d99fNingyuan Wang     */
804a1da73ea4926ce8a5689594ff3685b0fe033d99fNingyuan Wang    @Test
805a1da73ea4926ce8a5689594ff3685b0fe033d99fNingyuan Wang    public void testFetchEapAnonymousIdentity() {
806a1da73ea4926ce8a5689594ff3685b0fe033d99fNingyuan Wang        WifiConfiguration config = WifiConfigurationTestUtil.createEapNetwork();
807a1da73ea4926ce8a5689594ff3685b0fe033d99fNingyuan Wang        config.enterpriseConfig.setAnonymousIdentity(ANONYMOUS_IDENTITY);
808a1da73ea4926ce8a5689594ff3685b0fe033d99fNingyuan Wang        assertTrue(mSupplicantNetwork.saveWifiConfiguration(config));
809a1da73ea4926ce8a5689594ff3685b0fe033d99fNingyuan Wang        assertEquals(ANONYMOUS_IDENTITY, mSupplicantNetwork.fetchEapAnonymousIdentity());
810a1da73ea4926ce8a5689594ff3685b0fe033d99fNingyuan Wang    }
811a1da73ea4926ce8a5689594ff3685b0fe033d99fNingyuan Wang
812a1da73ea4926ce8a5689594ff3685b0fe033d99fNingyuan Wang    /**
81366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne     * Sets up the HIDL interface mock with all the setters/getter values.
81466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne     * Note: This only sets up the mock to return success on all methods.
81566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne     */
81666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    private void setupISupplicantNetworkMock() throws Exception {
81766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        /** SSID */
81866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
81966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public SupplicantStatus answer(ArrayList<Byte> ssid) throws RemoteException {
82066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                mSupplicantVariables.ssid = ssid;
82166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                return mStatusSuccess;
82266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
82366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock).setSsid(any(ArrayList.class));
82466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
82566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public void answer(ISupplicantStaNetwork.getSsidCallback cb) throws RemoteException {
82666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                cb.onValues(mStatusSuccess, mSupplicantVariables.ssid);
82766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
82866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock)
82966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                .getSsid(any(ISupplicantStaNetwork.getSsidCallback.class));
83066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
831727ba04029935d4faee3c7fce8a5a0ba6ed0a4eaRoshan Pius        /** Network Id */
832727ba04029935d4faee3c7fce8a5a0ba6ed0a4eaRoshan Pius        doAnswer(new AnswerWithArguments() {
833727ba04029935d4faee3c7fce8a5a0ba6ed0a4eaRoshan Pius            public void answer(ISupplicantNetwork.getIdCallback cb) throws RemoteException {
834727ba04029935d4faee3c7fce8a5a0ba6ed0a4eaRoshan Pius                cb.onValues(mStatusSuccess, mSupplicantVariables.networkId);
835727ba04029935d4faee3c7fce8a5a0ba6ed0a4eaRoshan Pius            }
836727ba04029935d4faee3c7fce8a5a0ba6ed0a4eaRoshan Pius        }).when(mISupplicantStaNetworkMock).getId(any(ISupplicantNetwork.getIdCallback.class));
837727ba04029935d4faee3c7fce8a5a0ba6ed0a4eaRoshan Pius
83866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        /** BSSID */
83966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
84066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public SupplicantStatus answer(byte[] bssid) throws RemoteException {
84166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                mSupplicantVariables.bssid = bssid;
84266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                return mStatusSuccess;
84366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
84466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock).setBssid(any(byte[].class));
84566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
84666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public void answer(ISupplicantStaNetwork.getBssidCallback cb) throws RemoteException {
84766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                cb.onValues(mStatusSuccess, mSupplicantVariables.bssid);
84866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
84966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock)
85066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                .getBssid(any(ISupplicantStaNetwork.getBssidCallback.class));
85166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
85266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        /** Scan SSID (Is Hidden Network?) */
85366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
85466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public SupplicantStatus answer(boolean enable) throws RemoteException {
85566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                mSupplicantVariables.scanSsid = enable;
85666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                return mStatusSuccess;
85766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
85866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock).setScanSsid(any(boolean.class));
85966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
86066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public void answer(ISupplicantStaNetwork.getScanSsidCallback cb)
86166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                    throws RemoteException {
86266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                cb.onValues(mStatusSuccess, mSupplicantVariables.scanSsid);
86366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
86466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock)
86566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                .getScanSsid(any(ISupplicantStaNetwork.getScanSsidCallback.class));
86666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
86766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        /** Require PMF*/
86866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
86966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public SupplicantStatus answer(boolean enable) throws RemoteException {
87066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                mSupplicantVariables.requirePmf = enable;
87166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                return mStatusSuccess;
87266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
87366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock).setRequirePmf(any(boolean.class));
87466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
87566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public void answer(ISupplicantStaNetwork.getRequirePmfCallback cb)
87666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                    throws RemoteException {
87766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                cb.onValues(mStatusSuccess, mSupplicantVariables.requirePmf);
87866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
87966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock)
88066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                .getRequirePmf(any(ISupplicantStaNetwork.getRequirePmfCallback.class));
88166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
882f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius        /** PSK passphrase */
88366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
88466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public SupplicantStatus answer(String pskPassphrase) throws RemoteException {
88566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                mSupplicantVariables.pskPassphrase = pskPassphrase;
88666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                return mStatusSuccess;
88766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
88866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock).setPskPassphrase(any(String.class));
88966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
89066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public void answer(ISupplicantStaNetwork.getPskPassphraseCallback cb)
89166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                    throws RemoteException {
89266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                cb.onValues(mStatusSuccess, mSupplicantVariables.pskPassphrase);
89366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
89466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock)
89566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                .getPskPassphrase(any(ISupplicantStaNetwork.getPskPassphraseCallback.class));
89666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
897f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius        /** PSK */
898f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius        doAnswer(new AnswerWithArguments() {
899f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius            public SupplicantStatus answer(byte[] psk) throws RemoteException {
900f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius                mSupplicantVariables.psk = psk;
901f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius                return mStatusSuccess;
902f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius            }
903f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius        }).when(mISupplicantStaNetworkMock).setPsk(any(byte[].class));
904f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius        doAnswer(new AnswerWithArguments() {
905f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius            public void answer(ISupplicantStaNetwork.getPskCallback cb)
906f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius                    throws RemoteException {
907f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius                cb.onValues(mStatusSuccess, mSupplicantVariables.psk);
908f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius            }
909f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius        }).when(mISupplicantStaNetworkMock)
910f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius                .getPsk(any(ISupplicantStaNetwork.getPskCallback.class));
911f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius
91266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        /** WEP keys **/
91366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
91466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public SupplicantStatus answer(int keyIdx, ArrayList<Byte> key) throws RemoteException {
91566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                mSupplicantVariables.wepKey[keyIdx] = key;
91666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                return mStatusSuccess;
91766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
91866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock).setWepKey(any(int.class), any(ArrayList.class));
91966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
92066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public void answer(int keyIdx, ISupplicantStaNetwork.getWepKeyCallback cb)
92166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                    throws RemoteException {
92266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                cb.onValues(mStatusSuccess, mSupplicantVariables.wepKey[keyIdx]);
92366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
92466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock)
92566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                .getWepKey(any(int.class), any(ISupplicantStaNetwork.getWepKeyCallback.class));
92666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
92766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
92866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public SupplicantStatus answer(int keyIdx) throws RemoteException {
92966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                mSupplicantVariables.wepTxKeyIdx = keyIdx;
93066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                return mStatusSuccess;
93166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
93266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock).setWepTxKeyIdx(any(int.class));
93366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
93466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public void answer(ISupplicantStaNetwork.getWepTxKeyIdxCallback cb)
93566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                    throws RemoteException {
93666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                cb.onValues(mStatusSuccess, mSupplicantVariables.wepTxKeyIdx);
93766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
93866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock)
93966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                .getWepTxKeyIdx(any(ISupplicantStaNetwork.getWepTxKeyIdxCallback.class));
94066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
94166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        /** allowedKeyManagement */
94266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
94366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public SupplicantStatus answer(int mask) throws RemoteException {
94466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                mSupplicantVariables.keyMgmtMask = mask;
94566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                return mStatusSuccess;
94666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
94766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock).setKeyMgmt(any(int.class));
94866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
94966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public void answer(ISupplicantStaNetwork.getKeyMgmtCallback cb) throws RemoteException {
95066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                cb.onValues(mStatusSuccess, mSupplicantVariables.keyMgmtMask);
95166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
95266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock)
95366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                .getKeyMgmt(any(ISupplicantStaNetwork.getKeyMgmtCallback.class));
95466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
95566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        /** allowedProtocols */
95666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
95766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public SupplicantStatus answer(int mask) throws RemoteException {
95866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                mSupplicantVariables.protoMask = mask;
95966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                return mStatusSuccess;
96066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
96166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock).setProto(any(int.class));
96266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
96366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public void answer(ISupplicantStaNetwork.getProtoCallback cb) throws RemoteException {
96466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                cb.onValues(mStatusSuccess, mSupplicantVariables.protoMask);
96566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
96666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock)
96766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                .getProto(any(ISupplicantStaNetwork.getProtoCallback.class));
96866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
96966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        /** allowedAuthAlgorithms */
97066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
97166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public SupplicantStatus answer(int mask) throws RemoteException {
97266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                mSupplicantVariables.authAlgMask = mask;
97366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                return mStatusSuccess;
97466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
97566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock).setAuthAlg(any(int.class));
97666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
97766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public void answer(ISupplicantStaNetwork.getAuthAlgCallback cb) throws RemoteException {
97866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                cb.onValues(mStatusSuccess, mSupplicantVariables.authAlgMask);
97966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
98066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock)
98166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                .getAuthAlg(any(ISupplicantStaNetwork.getAuthAlgCallback.class));
98266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
98366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        /** allowedGroupCiphers */
98466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
98566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public SupplicantStatus answer(int mask) throws RemoteException {
98666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                mSupplicantVariables.groupCipherMask = mask;
98766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                return mStatusSuccess;
98866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
98966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock).setGroupCipher(any(int.class));
99066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
99166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public void answer(ISupplicantStaNetwork.getGroupCipherCallback cb)
99266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                    throws RemoteException {
99366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                cb.onValues(mStatusSuccess, mSupplicantVariables.groupCipherMask);
99466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
99566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock)
99666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                .getGroupCipher(any(ISupplicantStaNetwork.getGroupCipherCallback.class));
99766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
99866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        /** allowedPairwiseCiphers */
99966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
100066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public SupplicantStatus answer(int mask) throws RemoteException {
100166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                mSupplicantVariables.pairwiseCipherMask = mask;
100266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                return mStatusSuccess;
100366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
100466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock).setPairwiseCipher(any(int.class));
100566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
100666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public void answer(ISupplicantStaNetwork.getPairwiseCipherCallback cb)
100766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                    throws RemoteException {
100866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                cb.onValues(mStatusSuccess, mSupplicantVariables.pairwiseCipherMask);
100966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
101066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock)
101166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                .getPairwiseCipher(any(ISupplicantStaNetwork.getPairwiseCipherCallback.class));
101266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
101366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        /** metadata: idstr */
101466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
101566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public SupplicantStatus answer(String idStr) throws RemoteException {
101666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                mSupplicantVariables.idStr = idStr;
101766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                return mStatusSuccess;
101866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
101966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock).setIdStr(any(String.class));
102066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
102166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public void answer(ISupplicantStaNetwork.getIdStrCallback cb) throws RemoteException {
102266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                cb.onValues(mStatusSuccess, mSupplicantVariables.idStr);
102366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
102466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock)
102566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                .getIdStr(any(ISupplicantStaNetwork.getIdStrCallback.class));
102666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
102766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        /** UpdateIdentifier */
102866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        doAnswer(new AnswerWithArguments() {
102966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            public SupplicantStatus answer(int identifier) throws RemoteException {
103066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                mSupplicantVariables.updateIdentifier = identifier;
103166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                return mStatusSuccess;
103266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            }
103366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        }).when(mISupplicantStaNetworkMock).setUpdateIdentifier(any(int.class));
103464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
103564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        /** EAP method */
103664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
103764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public SupplicantStatus answer(int method) throws RemoteException {
103864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                mSupplicantVariables.eapMethod = method;
103964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                return mStatusSuccess;
104064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
104164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock).setEapMethod(any(int.class));
104264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
104364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public void answer(ISupplicantStaNetwork.getEapMethodCallback cb)
104464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                    throws RemoteException {
104564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                // When not set, return failure.
104664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                if (mSupplicantVariables.eapMethod == -1) {
104764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                    cb.onValues(mStatusFailure, mSupplicantVariables.eapMethod);
104864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                } else {
104964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                    cb.onValues(mStatusSuccess, mSupplicantVariables.eapMethod);
105064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                }
105164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
105264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock)
105364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                .getEapMethod(any(ISupplicantStaNetwork.getEapMethodCallback.class));
105464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
105564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        /** EAP Phase 2 method */
105664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
105764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public SupplicantStatus answer(int method) throws RemoteException {
105864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                mSupplicantVariables.eapPhase2Method = method;
105964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                return mStatusSuccess;
106064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
106164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock).setEapPhase2Method(any(int.class));
106264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
106364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public void answer(ISupplicantStaNetwork.getEapPhase2MethodCallback cb)
106464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                    throws RemoteException {
106564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                // When not set, return failure.
106664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                if (mSupplicantVariables.eapPhase2Method == -1) {
106764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                    cb.onValues(mStatusFailure, mSupplicantVariables.eapPhase2Method);
106864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                } else {
106964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                    cb.onValues(mStatusSuccess, mSupplicantVariables.eapPhase2Method);
107064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                }
107164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
107264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock)
107364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                .getEapPhase2Method(any(ISupplicantStaNetwork.getEapPhase2MethodCallback.class));
107464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
107564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        /** EAP Identity */
107664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
107764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public SupplicantStatus answer(ArrayList<Byte> identity) throws RemoteException {
107864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                mSupplicantVariables.eapIdentity = identity;
107964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                return mStatusSuccess;
108064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
108164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock).setEapIdentity(any(ArrayList.class));
108264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
108364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public void answer(ISupplicantStaNetwork.getEapIdentityCallback cb)
108464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                    throws RemoteException {
108564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                cb.onValues(mStatusSuccess, mSupplicantVariables.eapIdentity);
108664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
108764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock)
108864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                .getEapIdentity(any(ISupplicantStaNetwork.getEapIdentityCallback.class));
108964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
109064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        /** EAP Anonymous Identity */
109164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
109264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public SupplicantStatus answer(ArrayList<Byte> identity) throws RemoteException {
109364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                mSupplicantVariables.eapAnonymousIdentity = identity;
109464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                return mStatusSuccess;
109564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
109664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock).setEapAnonymousIdentity(any(ArrayList.class));
109764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
109864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public void answer(ISupplicantStaNetwork.getEapAnonymousIdentityCallback cb)
109964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                    throws RemoteException {
110064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                cb.onValues(mStatusSuccess, mSupplicantVariables.eapAnonymousIdentity);
110164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
110264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock)
110364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                .getEapAnonymousIdentity(
110464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                        any(ISupplicantStaNetwork.getEapAnonymousIdentityCallback.class));
110564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
110664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        /** EAP Password */
110764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
110864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public SupplicantStatus answer(ArrayList<Byte> password) throws RemoteException {
110964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                mSupplicantVariables.eapPassword = password;
111064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                return mStatusSuccess;
111164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
111264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock).setEapPassword(any(ArrayList.class));
111364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
111464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public void answer(ISupplicantStaNetwork.getEapPasswordCallback cb)
111564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                    throws RemoteException {
111664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                cb.onValues(mStatusSuccess, mSupplicantVariables.eapPassword);
111764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
111864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock)
111964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                .getEapPassword(any(ISupplicantStaNetwork.getEapPasswordCallback.class));
112064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
112164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        /** EAP Client Cert */
112264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
112364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public SupplicantStatus answer(String cert) throws RemoteException {
112464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                mSupplicantVariables.eapClientCert = cert;
112564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                return mStatusSuccess;
112664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
112764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock).setEapClientCert(any(String.class));
112864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
112964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public void answer(ISupplicantStaNetwork.getEapClientCertCallback cb)
113064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                    throws RemoteException {
113164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                cb.onValues(mStatusSuccess, mSupplicantVariables.eapClientCert);
113264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
113364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock)
113464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                .getEapClientCert(any(ISupplicantStaNetwork.getEapClientCertCallback.class));
113564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
113664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        /** EAP CA Cert */
113764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
113864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public SupplicantStatus answer(String cert) throws RemoteException {
113964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                mSupplicantVariables.eapCACert = cert;
114064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                return mStatusSuccess;
114164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
114264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock).setEapCACert(any(String.class));
114364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
114464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public void answer(ISupplicantStaNetwork.getEapCACertCallback cb)
114564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                    throws RemoteException {
114664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                cb.onValues(mStatusSuccess, mSupplicantVariables.eapCACert);
114764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
114864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock)
114964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                .getEapCACert(any(ISupplicantStaNetwork.getEapCACertCallback.class));
115064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
115164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        /** EAP Subject Match */
115264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
115364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public SupplicantStatus answer(String match) throws RemoteException {
115464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                mSupplicantVariables.eapSubjectMatch = match;
115564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                return mStatusSuccess;
115664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
115764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock).setEapSubjectMatch(any(String.class));
115864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
115964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public void answer(ISupplicantStaNetwork.getEapSubjectMatchCallback cb)
116064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                    throws RemoteException {
116164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                cb.onValues(mStatusSuccess, mSupplicantVariables.eapSubjectMatch);
116264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
116364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock)
116464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                .getEapSubjectMatch(any(ISupplicantStaNetwork.getEapSubjectMatchCallback.class));
116564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
116664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        /** EAP Engine */
116764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
116864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public SupplicantStatus answer(boolean enable) throws RemoteException {
116964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                mSupplicantVariables.eapEngine = enable;
117064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                return mStatusSuccess;
117164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
117264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock).setEapEngine(any(boolean.class));
117364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
117464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public void answer(ISupplicantStaNetwork.getEapEngineCallback cb)
117564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                    throws RemoteException {
117664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                cb.onValues(mStatusSuccess, mSupplicantVariables.eapEngine);
117764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
117864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock)
117964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                .getEapEngine(any(ISupplicantStaNetwork.getEapEngineCallback.class));
118064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
118164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        /** EAP Engine ID */
118264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
118364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public SupplicantStatus answer(String id) throws RemoteException {
118464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                mSupplicantVariables.eapEngineID = id;
118564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                return mStatusSuccess;
118664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
118764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock).setEapEngineID(any(String.class));
118864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
118964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public void answer(ISupplicantStaNetwork.getEapEngineIDCallback cb)
119064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                    throws RemoteException {
119164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                cb.onValues(mStatusSuccess, mSupplicantVariables.eapEngineID);
119264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
119364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock)
119464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                .getEapEngineID(any(ISupplicantStaNetwork.getEapEngineIDCallback.class));
119564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
119664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        /** EAP Private Key */
119764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
119864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public SupplicantStatus answer(String key) throws RemoteException {
11991f5dee32716a2709ca2e1e491cbc2f09ca35a2faRoshan Pius                mSupplicantVariables.eapPrivateKeyId = key;
120064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                return mStatusSuccess;
120164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
12021f5dee32716a2709ca2e1e491cbc2f09ca35a2faRoshan Pius        }).when(mISupplicantStaNetworkMock).setEapPrivateKeyId(any(String.class));
120364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
12041f5dee32716a2709ca2e1e491cbc2f09ca35a2faRoshan Pius            public void answer(ISupplicantStaNetwork.getEapPrivateKeyIdCallback cb)
120564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                    throws RemoteException {
12061f5dee32716a2709ca2e1e491cbc2f09ca35a2faRoshan Pius                cb.onValues(mStatusSuccess, mSupplicantVariables.eapPrivateKeyId);
120764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
120864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock)
12091f5dee32716a2709ca2e1e491cbc2f09ca35a2faRoshan Pius                .getEapPrivateKeyId(any(ISupplicantStaNetwork.getEapPrivateKeyIdCallback.class));
121064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
121164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        /** EAP Alt Subject Match */
121264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
121364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public SupplicantStatus answer(String match) throws RemoteException {
121464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                mSupplicantVariables.eapAltSubjectMatch = match;
121564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                return mStatusSuccess;
121664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
121764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock).setEapAltSubjectMatch(any(String.class));
121864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
121964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public void answer(ISupplicantStaNetwork.getEapAltSubjectMatchCallback cb)
122064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                    throws RemoteException {
122164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                cb.onValues(mStatusSuccess, mSupplicantVariables.eapAltSubjectMatch);
122264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
122364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock)
122464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                .getEapAltSubjectMatch(
122564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                        any(ISupplicantStaNetwork.getEapAltSubjectMatchCallback.class));
122664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
122764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        /** EAP Domain Suffix Match */
122864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
122964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public SupplicantStatus answer(String match) throws RemoteException {
123064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                mSupplicantVariables.eapDomainSuffixMatch = match;
123164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                return mStatusSuccess;
123264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
123364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock).setEapDomainSuffixMatch(any(String.class));
123464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
123564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public void answer(ISupplicantStaNetwork.getEapDomainSuffixMatchCallback cb)
123664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                    throws RemoteException {
123764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                cb.onValues(mStatusSuccess, mSupplicantVariables.eapDomainSuffixMatch);
123864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
123964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock)
124064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                .getEapDomainSuffixMatch(
124164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                        any(ISupplicantStaNetwork.getEapDomainSuffixMatchCallback.class));
124264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
124364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        /** EAP CA Path*/
124464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
124564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public SupplicantStatus answer(String path) throws RemoteException {
124664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                mSupplicantVariables.eapCAPath = path;
124764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                return mStatusSuccess;
124864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
124964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock).setEapCAPath(any(String.class));
125064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
125164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public void answer(ISupplicantStaNetwork.getEapCAPathCallback cb)
125264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                    throws RemoteException {
125364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                cb.onValues(mStatusSuccess, mSupplicantVariables.eapCAPath);
125464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
125564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock)
125664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                .getEapCAPath(any(ISupplicantStaNetwork.getEapCAPathCallback.class));
125764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius
125864950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        /** EAP Proactive Key Caching */
125964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        doAnswer(new AnswerWithArguments() {
126064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            public SupplicantStatus answer(boolean enable) throws RemoteException {
126164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                mSupplicantVariables.eapProactiveKeyCaching = enable;
126264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                return mStatusSuccess;
126364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius            }
126464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        }).when(mISupplicantStaNetworkMock).setProactiveKeyCaching(any(boolean.class));
1265c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius
1266c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        /** Callback registeration */
1267c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        doAnswer(new AnswerWithArguments() {
1268c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius            public SupplicantStatus answer(ISupplicantStaNetworkCallback cb)
1269c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius                    throws RemoteException {
1270c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius                mISupplicantStaNetworkCallback = cb;
1271c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius                return mStatusSuccess;
1272c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius            }
1273c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius        }).when(mISupplicantStaNetworkMock)
1274c3d81dbf035c205ca1baf16b84a41b67eda9ae4aRoshan Pius                .registerCallback(any(ISupplicantStaNetworkCallback.class));
127566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    }
127666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
127766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    private SupplicantStatus createSupplicantStatus(int code) {
127866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        SupplicantStatus status = new SupplicantStatus();
127966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        status.code = code;
128066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        return status;
128166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    }
128266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
1283c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius    /**
1284c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius     * Need this for tests which wants to manipulate context before creating the instance.
1285c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius     */
1286c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius    private void createSupplicantStaNetwork() {
1287c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius        mSupplicantNetwork =
128803fea88ccab149c07391d38f3c406bb04ab0a3a9Roshan Pius                new SupplicantStaNetworkHal(
128903fea88ccab149c07391d38f3c406bb04ab0a3a9Roshan Pius                        mISupplicantStaNetworkMock, IFACE_NAME, mContext, mWifiMonitor);
1290c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius    }
1291c7a4b6706fa09042bb36a64036d86d88eb6e4126Roshan Pius
129266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    // Private class to to store/inspect values set via the HIDL mock.
129366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    private class SupplicantNetworkVariables {
129466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        public ArrayList<Byte> ssid;
1295727ba04029935d4faee3c7fce8a5a0ba6ed0a4eaRoshan Pius        public int networkId;
129666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        public byte[/* 6 */] bssid;
129766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        public int keyMgmtMask;
129866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        public int protoMask;
129966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        public int authAlgMask;
130066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        public int groupCipherMask;
130166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        public int pairwiseCipherMask;
130266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        public boolean scanSsid;
130366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        public boolean requirePmf;
130466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        public String idStr;
130566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        public int updateIdentifier;
130666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        public String pskPassphrase;
1307f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius        public byte[] psk;
130866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        public ArrayList<Byte>[] wepKey = new ArrayList[4];
130966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        public int wepTxKeyIdx;
131064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        public int eapMethod = -1;
131164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        public int eapPhase2Method = -1;
131264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        public ArrayList<Byte> eapIdentity;
131364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        public ArrayList<Byte> eapAnonymousIdentity;
131464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        public ArrayList<Byte> eapPassword;
131564950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        public String eapCACert;
131664950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        public String eapCAPath;
131764950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        public String eapClientCert;
13181f5dee32716a2709ca2e1e491cbc2f09ca35a2faRoshan Pius        public String eapPrivateKeyId;
131964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        public String eapSubjectMatch;
132064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        public String eapAltSubjectMatch;
132164950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        public boolean eapEngine;
132264950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        public String eapEngineID;
132364950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        public String eapDomainSuffixMatch;
132464950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        public boolean eapProactiveKeyCaching;
132566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    }
132666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne}
1327