kopia lustrzana https://github.com/solokeys/solo1
				
				
				
			add bootloader tests
							rodzic
							
								
									0d5e1ee872
								
							
						
					
					
						commit
						f704851419
					
				|  | @ -1700,6 +1700,7 @@ class Tester: | ||||||
|         sc = SoloClient() |         sc = SoloClient() | ||||||
|         sc.find_device(self.dev) |         sc.find_device(self.dev) | ||||||
|         sc.use_u2f() |         sc.use_u2f() | ||||||
|  |         memmap = (0x08005000, 0x08005000 + 198 * 1024 - 8) | ||||||
| 
 | 
 | ||||||
|         total = 1024 * 16 |         total = 1024 * 16 | ||||||
|         print("Gathering %d random bytes..." % total) |         print("Gathering %d random bytes..." % total) | ||||||
|  | @ -1722,6 +1723,36 @@ class Tester: | ||||||
|         assert len(sc.solo_version()) == 3 |         assert len(sc.solo_version()) == 3 | ||||||
|         print("Pass") |         print("Pass") | ||||||
| 
 | 
 | ||||||
|  |         print("Test bootloader is not active") | ||||||
|  |         try: | ||||||
|  |             sc.write_flash(memmap[0], b"1234") | ||||||
|  |         except ApduError: | ||||||
|  |             pass | ||||||
|  |         print("Pass") | ||||||
|  | 
 | ||||||
|  |     def test_bootloader(self,): | ||||||
|  |         sc = SoloClient() | ||||||
|  |         sc.find_device(self.dev) | ||||||
|  | 
 | ||||||
|  |         memmap = (0x08005000, 0x08005000 + 198 * 1024 - 8) | ||||||
|  |         data = b"A" * 64 | ||||||
|  | 
 | ||||||
|  |         print("Test version command") | ||||||
|  |         assert len(sc.bootloader_version()) == 3 | ||||||
|  |         print("Pass") | ||||||
|  | 
 | ||||||
|  |         print("Test write command") | ||||||
|  |         sc.write_flash(memmap[0], data) | ||||||
|  |         print("Pass") | ||||||
|  | 
 | ||||||
|  |         for addr in (memmap[0] - 8, memmap[0] - 4, memmap[1], memmap[1] - 8): | ||||||
|  |             print("Test out of bounds write command at 0x%04x" % addr) | ||||||
|  |             try: | ||||||
|  |                 sc.write_flash(addr, data) | ||||||
|  |             except CtapError as e: | ||||||
|  |                 assert e.code == CtapError.ERR.NOT_ALLOWED | ||||||
|  |             print("Pass") | ||||||
|  | 
 | ||||||
|     def test_responses(self,): |     def test_responses(self,): | ||||||
|         PIN = "1234" |         PIN = "1234" | ||||||
|         RPID = self.host |         RPID = self.host | ||||||
|  | @ -1857,6 +1888,13 @@ if __name__ == "__main__": | ||||||
|     if "hid" in sys.argv: |     if "hid" in sys.argv: | ||||||
|         t.test_hid() |         t.test_hid() | ||||||
| 
 | 
 | ||||||
|  |     if "bootloader" in sys.argv: | ||||||
|  |         if t.is_sim: | ||||||
|  |             raise RuntimeError("Cannot test bootloader in simulation yet.") | ||||||
|  |         print("Put device in bootloader mode and then hit enter") | ||||||
|  |         input() | ||||||
|  |         t.test_bootloader() | ||||||
|  | 
 | ||||||
|     # t.test_responses() |     # t.test_responses() | ||||||
|     # test_find_brute_force() |     # test_find_brute_force() | ||||||
|     # t.test_fido2_brute_force() |     # t.test_fido2_brute_force() | ||||||
|  |  | ||||||
		Ładowanie…
	
		Reference in New Issue
	
	 Conor Patrick
						Conor Patrick