def test_counter(self): config.init() config.wipe() # Test writable_locked when storage is locked. config.lock() with self.assertRaises(RuntimeError): config.set_counter(1, 2, 0, False) with self.assertRaises(RuntimeError): config.next_counter(1, 2, False) config.set_counter(1, 2, 100, True) for i in range(100, 200): self.assertEqual(config.next_counter(1, 2, True), i + 1) # Test increment with storage unlocked. self.assertEqual(config.unlock('', None), True) for i in range(200, 300): self.assertEqual(config.next_counter(1, 2, True), i + 1) # Test counter deletion. config.delete(1, 2, True, True) self.assertEqual(config.next_counter(1, 2, True), 0) # Test overflow protection. with self.assertRaises(RuntimeError): config.set_counter(1, 2, 0x1_0000_0000, True) start = 0xFFFF_FFFF - 100 config.set_counter(1, 2, start, True) for i in range(start, 0xFFFF_FFFF): self.assertEqual(config.next_counter(1, 2, True), i + 1)
def lock_device() -> None: if config.has_pin(): config.lock() wire.find_handler = get_pinlocked_handler set_homescreen() workflow.close_others()