def test_load_of_modified_database_raises_critical_error(self): self.keylist.store_keys() # Test reading works normally self.assertIsInstance(KeyList(self.master_key, self.settings), KeyList) # Test loading of the tampered database raises CriticalError tamper_file(self.file_name, tamper_size=1) with self.assertRaises(SystemExit): KeyList(self.master_key, self.settings)
def test_load_of_modified_database_raises_critical_error(self) -> None: self.group_list.store_groups() # Test reading works normally self.assertIsInstance(GroupList(self.master_key, self.settings, self.contact_list), GroupList) # Test loading of the tampered database raises CriticalError tamper_file(self.file_name, tamper_size=1) with self.assertRaises(SystemExit): GroupList(self.master_key, self.settings, self.contact_list)
def test_loading_invalid_database_data_raises_critical_error(self) -> None: data_old = os.urandom(MASTERKEY_DB_SIZE) checksummed = data_old + blake2b(data_old) with open(self.database_name, 'wb') as f: f.write(checksummed) tamper_file(self.database_name, tamper_size=1) with self.assertRaises(SystemExit): self.database.load_database()
def test_load_of_modified_database_raises_critical_error(self) -> None: # Store settings to database self.settings.store_settings() # Test reading from database works normally self.assertIsInstance(Settings(self.master_key, operation=TX, local_test=False), Settings) # Test loading of the tampered database raises CriticalError tamper_file(self.file_name, tamper_size=1) with self.assertRaises(SystemExit): Settings(self.master_key, operation=TX, local_test=False)
def test_load_of_modified_database_raises_critical_error(self, _): # Write data to file OnionService(self.master_key) # Test reading works normally self.assertIsInstance(OnionService(self.master_key), OnionService) # Test loading of the tampered database raises CriticalError tamper_file(self.file_name, tamper_size=1) with self.assertRaises(SystemExit): OnionService(self.master_key)
def test_verify_file(self) -> None: # Setup pt_bytes = os.urandom(MASTERKEY_DB_SIZE) ct_bytes = encrypt_and_sign(pt_bytes, self.master_key.master_key) with open(self.database_name, 'wb') as f: f.write(ct_bytes) # Test valid file content returns True. self.assertTrue(self.database.verify_file(self.database_name)) # Test invalid file content returns False. tamper_file(self.database_name, tamper_size=1) self.assertFalse(self.database.verify_file(self.database_name))
def test_verify_file(self) -> None: # Setup data = os.urandom(MASTERKEY_DB_SIZE) checksummed_data = data + blake2b(data) with open(self.database_name, 'wb') as f: f.write(checksummed_data) # Test valid file content returns True. self.assertTrue(self.database.verify_file(self.database_name)) # Test invalid file content returns False. tamper_file(self.database_name, tamper_size=1) self.assertFalse(self.database.verify_file(self.database_name))