示例#1
0
    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)
示例#2
0
    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)
示例#3
0
    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()
示例#4
0
    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)
示例#5
0
    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)
示例#6
0
    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))
示例#7
0
    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))