mirror of
				https://git.kernel.org/pub/scm/network/wireless/iwd.git
				synced 2025-10-31 13:17:25 +01:00 
			
		
		
		
	 6d76b3e21d
			
		
	
	
		6d76b3e21d
		
	
	
	
	
		
			
			Break up the SAE tests into two parts: testSAE and testSAE-AntiClogging testSAE is simplified to only use two radios and a single phy managed by hostapd. hostapd configurations are changed via the new 'set_value' method added to hostapd utils. This allows forcing hostapd to use a particular sae group set, or force hostapd to use SAE H2E/Hunting and Pecking Loop for key derivation. A separate test for IKE Group 20 is no longer required and is folded into connection_test.py testSAE-AntiClogging is added with an environment for 5 radios instead of 7, again with hostapd running on a single phy. 'sae_pwe' is used to force hostapd to use SAE H2E or Hunting and Pecking for key derivation. Both Anti-Clogging protocol variants are thus tested. main.conf is added to both directories to force scan randomization off. This seems to be required for hostapd to work properly on hwsim.
		
			
				
	
	
		
			84 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/bin/python3
 | |
| 
 | |
| import unittest
 | |
| import sys
 | |
| 
 | |
| sys.path.append('../util')
 | |
| import iwd
 | |
| from iwd import IWD
 | |
| from iwd import PSKAgent
 | |
| from iwd import NetworkType
 | |
| from hostapd import HostapdCLI
 | |
| 
 | |
| class Test(unittest.TestCase):
 | |
| 
 | |
|     def validate_connection(self, wd):
 | |
|         networks = []
 | |
| 
 | |
|         psk_agent = PSKAgent(["secret123"] * 4)
 | |
|         wd.register_psk_agent(psk_agent)
 | |
| 
 | |
|         devices = wd.list_devices(4)
 | |
|         self.assertIsNotNone(devices)
 | |
| 
 | |
|         for d in devices:
 | |
|             d.disconnect()
 | |
|             d.scan()
 | |
|             wd.wait_for_object_condition(d, 'obj.scanning')
 | |
| 
 | |
|         for d in devices:
 | |
|             wd.wait_for_object_condition(d, 'not obj.scanning')
 | |
| 
 | |
|         for i in range(len(devices)):
 | |
|             network = devices[i].get_ordered_network('ssidSAE-Clogging')
 | |
|             self.assertEqual(network.type, NetworkType.psk)
 | |
|             networks.append(network)
 | |
| 
 | |
|             condition = 'not obj.connected'
 | |
|             wd.wait_for_object_condition(network.network_object, condition)
 | |
| 
 | |
|         for n in networks:
 | |
|             n.network_object.connect(wait=False)
 | |
| 
 | |
|         for d in devices:
 | |
|             condition = 'obj.state == DeviceState.connected'
 | |
|             wd.wait_for_object_condition(d, condition)
 | |
| 
 | |
|         for d in devices:
 | |
|             d.disconnect()
 | |
| 
 | |
|         for n in networks:
 | |
|             condition = 'not obj.connected'
 | |
|             wd.wait_for_object_condition(n.network_object, condition)
 | |
| 
 | |
|         wd.unregister_psk_agent(psk_agent)
 | |
| 
 | |
|     def test_SAE_H2E_Group20(self):
 | |
|         self.hostapd.set_value('sae_pwe', '1');
 | |
|         self.hostapd.set_value('sae_groups', '20');
 | |
|         self.hostapd.reload()
 | |
|         self.hostapd.wait_for_event("AP-ENABLED")
 | |
|         wd = IWD(True)
 | |
|         self.validate_connection(wd)
 | |
|         wd.clear_storage()
 | |
| 
 | |
|     def test_SAE(self):
 | |
|         self.hostapd.set_value('sae_pwe', '0');
 | |
|         self.hostapd.set_value('sae_groups', '19');
 | |
|         self.hostapd.reload()
 | |
|         self.hostapd.wait_for_event("AP-ENABLED")
 | |
|         wd = IWD(True)
 | |
|         self.validate_connection(wd)
 | |
|         wd.clear_storage()
 | |
| 
 | |
|     @classmethod
 | |
|     def setUpClass(cls):
 | |
|         cls.hostapd = HostapdCLI(config='ssidSAE-Clogging.conf')
 | |
| 
 | |
|     @classmethod
 | |
|     def tearDownClass(cls):
 | |
|         IWD.clear_storage()
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     unittest.main(exit=True)
 |