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