Unverified Commit 14678b00 authored by Damian Johnson's avatar Damian Johnson Committed by Philipp Winter
Browse files

Get unicode rather than byte descriptors

Test results changed as follows...

  before: FAILED (skips=115, failures=29, errors=34, successes=806)
  after:  FAILED (skips=115, failures=29, errors=3, successes=837)
parent 62e5f009
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -356,7 +356,7 @@ class BridgeRing(object):

    def dumpAssignments(self, f, description=""):
        logging.info("Dumping bridge assignments for %s..." % self.name)
        for b in self.bridges.itervalues():
        for b in self.bridges.values():
            desc = [ description ]
            for tp,val,_,subring in self.subrings:
                if subring.getBridgeByID(b.identity):
+6 −5
Original line number Diff line number Diff line
@@ -240,7 +240,7 @@ class BridgeAddressBase(object):
        :param str value: The binary-encoded SHA-1 hash digest of the public
            half of this Bridge's identity key.
        """
        self.fingerprint = toHex(value)
        self.fingerprint = toHex(value).decode('utf-8')

    @identity.deleter
    def identity(self):
@@ -743,7 +743,7 @@ class BridgeBackwardsCompatibility(BridgeBase):
            if not fingerprint:
                if not len(idDigest) == 20:
                    raise TypeError("Bridge with invalid ID")
                self.fingerprint = toHex(idDigest)
                self.fingerprint = toHex(idDigest).decode('utf-8')
        elif fingerprint:
            if not isValidFingerprint(fingerprint):
                raise TypeError("Bridge with invalid fingerprint (%r)"
@@ -1665,7 +1665,7 @@ class Bridge(BridgeBackwardsCompatibility):
        logging.info("Verifying extrainfo signature for %s..." % self)

        # Get the bytes of the descriptor signature without the headers:
        document, signature = descriptor.get_bytes().split(TOR_BEGIN_SIGNATURE)
        document, signature = str(descriptor).split(TOR_BEGIN_SIGNATURE)
        signature = signature.replace(TOR_END_SIGNATURE, '')
        signature = signature.replace('\n', '')
        signature = signature.strip()
@@ -1709,10 +1709,11 @@ class Bridge(BridgeBackwardsCompatibility):

            # This is the hexadecimal SHA-1 hash digest of the descriptor document
            # as it was signed:
            signedDigest = codecs.encode(unpadded, 'hex_codec')
            actualDigest = hashlib.sha1(document).hexdigest()
            signedDigest = codecs.encode(unpadded, 'hex_codec').decode('utf-8')
            actualDigest = hashlib.sha1(document.encode('utf-8')).hexdigest()

        except Exception as error:
            raise
            logging.debug("Error verifying extrainfo signature: %s" % error)
            raise InvalidExtraInfoSignature(
                "Extrainfo signature for %s couldn't be decoded: %s" %
+1 −1
Original line number Diff line number Diff line
@@ -149,7 +149,7 @@ class FixedBridgeSplitterTests(unittest.TestCase):
        f.seek(0)

        data = f.read()
        first = self.splitter.rings[0].bridges.values()[0].fingerprint
        first = list(self.splitter.rings[0].bridges.values())[0].fingerprint

        # The first bridge's fingerprint should be within the data somewhere
        self.assertIn(first, data)
+1 −1
Original line number Diff line number Diff line
@@ -970,7 +970,7 @@ class BridgeTests(unittest.TestCase):
        self.assertEqual(
            identifier,
            ''.join(['$$',
                     hashlib.sha1(bridge.fingerprint).hexdigest().upper(),
                     hashlib.sha1(bridge.fingerprint.encode('utf-8')).hexdigest().upper(),
                     '~', bridge.nickname]))

    def test_Bridge_str_without_fingerprint(self):