Exemplo n.º 1
0
    def test_detect_errors(self, *_: Any) -> None:
        gateway = Gateway(operation=RX, local_test=False, dd_sockets=False)
        packet = b'packet'

        # Test BLAKE2b based checksum
        gateway.settings.session_serial_error_correction = 0
        self.assertEqual(
            gateway.detect_errors(gateway.add_error_correction(packet)),
            packet)

        # Test unrecoverable error raises FR
        self.assert_se("Warning! Received packet had an invalid checksum.",
                       gateway.detect_errors, 300 * b'a')

        # Test Reed-Solomon erasure code
        gateway.settings.session_serial_error_correction = 5
        gateway.rs = RSCodec(gateway.settings.session_serial_error_correction)
        self.assertEqual(
            gateway.detect_errors(gateway.add_error_correction(packet)),
            packet)

        # Test unrecoverable error raises FR
        self.assert_se(
            "Error: Reed-Solomon failed to correct errors in the received packet.",
            gateway.detect_errors, 300 * b'a')
Exemplo n.º 2
0
    def test_add_error_correction(self, *_) -> None:
        gateway = Gateway(operation=RX, local_test=False, dd_sockets=False, qubes=False)
        packet = b"packet"

        # Test BLAKE2b based checksum
        gateway.settings.session_serial_error_correction = 0
        self.assertEqual(gateway.add_error_correction(packet),
                         packet + blake2b(packet, digest_size=PACKET_CHECKSUM_LENGTH))

        # Test Reed-Solomon erasure code
        gateway.settings.session_serial_error_correction = 5
        gateway.rs = RSCodec(gateway.settings.session_serial_error_correction)
        self.assertEqual(gateway.add_error_correction(packet),
                         gateway.rs.encode(packet))
Exemplo n.º 3
0
    def test_detect_errors(self, *_: Any) -> None:
        gateway = Gateway(operation=RX,
                          local_test=False,
                          dd_sockets=False,
                          qubes=False)
        packet = b'packet'

        # Test BLAKE2b based checksum
        gateway.settings.session_serial_error_correction = 0
        self.assertEqual(
            gateway.detect_errors(gateway.add_error_correction(packet)),
            packet)

        # Test unrecoverable error raises SoftError
        self.assert_se("Warning! Received packet had an invalid checksum.",
                       gateway.detect_errors, 300 * b'a')

        # Test Reed-Solomon erasure code
        gateway.settings.session_serial_error_correction = 5
        gateway.rs = RSCodec(gateway.settings.session_serial_error_correction)
        self.assertEqual(
            gateway.detect_errors(gateway.add_error_correction(packet)),
            packet)

        # Test unrecoverable error raises SoftError
        self.assert_se(
            "Error: Reed-Solomon failed to correct errors in the received packet.",
            gateway.detect_errors, 300 * b'a')

        # Qubes

        # Test with B58 encoding
        gateway.settings.qubes = True
        packet_with_error_correction = base64.b85encode(
            gateway.add_error_correction(packet))
        self.assertEqual(gateway.detect_errors(packet_with_error_correction),
                         packet)

        # Test invalid B85 encoding raises SoftError
        packet_with_error_correction = base64.b85encode(
            gateway.add_error_correction(packet))
        packet_with_error_correction += b'\x00'
        self.assert_se("Error: Received packet had invalid Base85 encoding.",
                       gateway.detect_errors, packet_with_error_correction)
        gateway.settings.qubes = False