Esempio n. 1
0
    def test_decryption_error_raises_fr(self):
        # Setup
        packet      = Packet(self.onion_pub_key, ORIGIN_USER_HEADER, MESSAGE, self.contact, self.settings)
        packet_list = assembly_packet_creator(MESSAGE, self.msg, tamper_ciphertext=True)

        for p in packet_list:
            packet.add_packet(p)

        # Test
        self.assert_fr("Error: Decryption of message failed.", packet.assemble_message_packet)
Esempio n. 2
0
    def test_short_file(self):
        # Setup
        packets = split_to_assembly_packets(self.short_f_data, FILE)

        # Test
        self.assertFalse(os.path.isfile(f'{DIR_RECV_FILES}Alice/testfile.txt'))
        self.assertFalse(
            os.path.isfile(f'{DIR_RECV_FILES}Alice/testfile.txt.1'))

        packet = Packet(self.onion_pub_key, ORIGIN_CONTACT_HEADER, FILE,
                        self.contact, self.settings)
        packet.long_active = True

        for p in packets:
            packet.add_packet(p)
        self.assertIsNone(
            packet.assemble_and_store_file(self.ts, self.onion_pub_key,
                                           self.window_list))
        self.assertTrue(os.path.isfile(f'{DIR_RECV_FILES}Alice/testfile.txt'))

        for p in packets:
            packet.add_packet(p)
        self.assertIsNone(
            packet.assemble_and_store_file(self.ts, self.onion_pub_key,
                                           self.window_list))
        self.assertTrue(
            os.path.isfile(f'{DIR_RECV_FILES}Alice/testfile.txt.1'))
Esempio n. 3
0
    def test_short_command(self):
        # Setup
        packet  = Packet(LOCAL_ID, ORIGIN_CONTACT_HEADER, COMMAND, self.contact, self.settings)
        packets = assembly_packet_creator(COMMAND, b'test_command')

        for p in packets:
            packet.add_packet(p)

        # Test
        self.assertEqual(packet.assemble_command_packet(), b'test_command')
        self.assertEqual(packet.log_masking_ctr, 0)
Esempio n. 4
0
    def test_long_command_hash_mismatch_raises_fr(self):
        # Setup
        packet      = Packet(LOCAL_ID, ORIGIN_CONTACT_HEADER, COMMAND, self.contact, self.settings)
        packet_list = assembly_packet_creator(COMMAND, os.urandom(500), tamper_cmd_hash=True)

        for p in packet_list:
            packet.add_packet(p)

        # Test
        self.assert_fr("Error: Received an invalid command.", packet.assemble_command_packet)
        self.assertEqual(packet.log_masking_ctr, 0)
Esempio n. 5
0
    def test_long_command_compression_error_raises_fr(self):
        # Setup
        packet      = Packet(LOCAL_ID, ORIGIN_CONTACT_HEADER, COMMAND, self.contact, self.settings)
        packet_list = assembly_packet_creator(COMMAND, os.urandom(500), tamper_compression=True)

        for p in packet_list:
            packet.add_packet(p)

        # Test
        self.assert_fr("Error: Decompression of command failed.", packet.assemble_command_packet)
        self.assertEqual(packet.log_masking_ctr, 0)
Esempio n. 6
0
    def test_long_message(self):
        # Setup
        packet      = Packet(self.onion_pub_key, ORIGIN_USER_HEADER, MESSAGE, self.contact, self.settings)
        packet_list = assembly_packet_creator(MESSAGE, self.msg)

        for p in packet_list:
            packet.add_packet(p, packet_ct=b'test_ct')

        # Test
        message = packet.assemble_message_packet()
        self.assertEqual(message,  self.whisper_header + PRIVATE_MESSAGE_HEADER + self.msg.encode())
        self.assertEqual(packet.log_ct_list, 3 * [b'test_ct'])
Esempio n. 7
0
    def test_noise_packet_interrupts_file(self):
        # Setup
        packet      = Packet(self.onion_pub_key, ORIGIN_CONTACT_HEADER, FILE, self.contact, self.settings)
        packet_list = assembly_packet_creator(FILE)[:20]
        packet_list.append(byte_padding(P_N_HEADER))  # Add noise packet

        for p in packet_list:
            packet.add_packet(p)

        # Test
        self.assertEqual(len(packet.assembly_pt_list), 0)  # Noise packet empties packet list
        self.assertFalse(packet.long_active)
        self.assertFalse(packet.is_complete)
        self.assertEqual(packet.log_masking_ctr, len(packet_list))
Esempio n. 8
0
    def test_compression_error_raises_soft_error(self) -> None:
        # Setup
        packet = Packet(self.onion_pub_key, ORIGIN_USER_HEADER, MESSAGE,
                        self.contact, self.settings)
        packet_list = assembly_packet_creator(MESSAGE,
                                              self.short_msg,
                                              tamper_compression=True)

        for p in packet_list:
            packet.add_packet(p)

        # Test
        self.assert_se("Error: Decompression of message failed.",
                       packet.assemble_message_packet)
Esempio n. 9
0
    def test_disabled_file_reception_raises_fr_with_end_packet(self):
        # Setup
        packet             = Packet(self.onion_pub_key, ORIGIN_CONTACT_HEADER, FILE, self.contact, self.settings)
        packet.long_active = True
        packet_list        = assembly_packet_creator(FILE)

        for p in packet_list[:-1]:
            self.assertIsNone(packet.add_packet(p))

        packet.contact.file_reception = False

        # Test
        for p in packet_list[-1:]:
            self.assert_fr("Alert! File reception disabled mid-transfer.", packet.add_packet, p)
        self.assertEqual(packet.log_masking_ctr, len(packet_list))
Esempio n. 10
0
    def test_invalid_assembly_packet_header_raises_fr(self):
        # Setup
        packet   = Packet(self.onion_pub_key, ORIGIN_CONTACT_HEADER, MESSAGE, self.contact, self.settings)
        a_packet = assembly_packet_creator(MESSAGE, payload=self.short_msg, s_header_override=b'i')[0]

        # Test
        self.assert_fr("Error: Received packet had an invalid assembly packet header.", packet.add_packet, a_packet)
        self.assertEqual(packet.log_masking_ctr, 1)
Esempio n. 11
0
    def test_invalid_long_file_header_raises_fr(self):
        # Setup
        packet      = Packet(self.onion_pub_key, ORIGIN_CONTACT_HEADER, FILE, self.contact, self.settings)
        packet_list = assembly_packet_creator(FILE, file_name=UNDECODABLE_UNICODE)

        # Test
        self.assert_fr("Error: Received file packet had an invalid header.", packet.add_packet, packet_list[0])
        self.assertEqual(packet.log_masking_ctr, 1)
Esempio n. 12
0
    def test_missing_start_packet_raises_fr(self):
        # Setup
        packet = Packet(self.onion_pub_key, ORIGIN_USER_HEADER, MESSAGE, self.contact, self.settings)

        # Test
        for header in [M_A_HEADER, M_E_HEADER]:
            self.assert_fr("Missing start packet.", packet.add_packet, header + bytes(PADDING_LENGTH))
        self.assertEqual(packet.log_masking_ctr, 2)
Esempio n. 13
0
    def test_long_file_from_user_raises_fr(self):
        # Setup
        packet      = Packet(self.onion_pub_key, ORIGIN_USER_HEADER, FILE, self.contact, self.settings)
        packet_list = assembly_packet_creator(FILE)

        # Test
        self.assert_fr("Ignored file from the user.", packet.add_packet, packet_list[0])
        self.assertEqual(packet.log_masking_ctr, 1)
Esempio n. 14
0
    def setUp(self):
        self.contact_list  = ContactList(nicks=['Alice', 'Bob'])
        self.settings      = Settings()
        self.onion_pub_key = nick_to_pub_key('Alice')
        packet             = Packet(self.onion_pub_key, ORIGIN_CONTACT_HEADER, MESSAGE,
                                    self.contact_list.get_contact_by_address_or_nick('Alice'), self.settings)

        self.packet_list         = PacketList(self.settings, self.contact_list)
        self.packet_list.packets = [packet]
Esempio n. 15
0
    def test_short_file_from_user_raises_fr(self):
        # Setup
        packet  = Packet(self.onion_pub_key, ORIGIN_USER_HEADER, FILE, self.contact, self.settings)
        packets = split_to_assembly_packets(self.short_f_data, FILE)

        # Test
        for p in packets:
            self.assert_fr("Ignored file from the user.", packet.add_packet, p)
        self.assertEqual(packet.log_masking_ctr, 1)
Esempio n. 16
0
    def test_unauthorized_file_from_contact_raises_fr(self):
        # Setup
        self.contact.file_reception = False

        packet  = Packet(self.onion_pub_key, ORIGIN_CONTACT_HEADER, FILE, self.contact, self.settings)
        packets = split_to_assembly_packets(self.short_f_data, FILE)

        # Test
        for p in packets:
            self.assert_fr("Alert! File transmission from Alice but reception is disabled.", packet.add_packet, p)
        self.assertEqual(packet.log_masking_ctr, 1)
Esempio n. 17
0
    def test_unauthorized_long_file_raises_fr(self):
        # Setup
        self.contact.file_reception = False

        packet      = Packet(self.onion_pub_key, ORIGIN_CONTACT_HEADER, FILE, self.contact, self.settings)
        packet_list = assembly_packet_creator(FILE)

        # Test
        self.assert_fr("Alert! File transmission from Alice but reception is disabled.",
                       packet.add_packet, packet_list[0])
        self.assertEqual(packet.log_masking_ctr, 1)
Esempio n. 18
0
    def test_long_file(self):
        # Setup
        packet             = Packet(self.onion_pub_key, ORIGIN_CONTACT_HEADER, FILE, self.contact, self.settings)
        packet.long_active = True
        packet_list        = assembly_packet_creator(FILE)

        for p in packet_list:
            packet.add_packet(p)

        # Test
        self.assertIsNone(packet.assemble_and_store_file(self.ts, self.onion_pub_key, self.window_list))
        self.assertEqual(os.path.getsize(f'{DIR_RECV_FILES}Alice/test_file.txt'), 10000)