[tor-commits] [stem/master] Standardizing on digest() providing unicode

atagar at torproject.org atagar at torproject.org
Thu Apr 25 04:05:06 UTC 2013


commit a1149f5489065cf7445f83137f3747a4866351e1
Author: Damian Johnson <atagar at torproject.org>
Date:   Wed Apr 24 21:01:06 2013 -0700

    Standardizing on digest() providing unicode
    
    Our digest() method provided bytes with python 2 and unicode with python 3. I'm
    trying to avoid these sort of version-dependent differences since they're a
    headache when we're support both serieses. The comparison for digest validation
    was also still failing in python 3 due to types. Caught thanks to aj00200.
---
 stem/descriptor/server_descriptor.py |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/stem/descriptor/server_descriptor.py b/stem/descriptor/server_descriptor.py
index dc21813..d2efc0b 100644
--- a/stem/descriptor/server_descriptor.py
+++ b/stem/descriptor/server_descriptor.py
@@ -283,7 +283,7 @@ class ServerDescriptor(stem.descriptor.Descriptor):
     Provides the hex encoded sha1 of our content. This value is part of the
     network status entry for this relay.
 
-    :returns: **str** with the upper-case hex digest value for this server descriptor
+    :returns: **unicode** with the upper-case hex digest value for this server descriptor
     """
 
     raise NotImplementedError("Unsupported Operation: this should be implemented by the ServerDescriptor subclass")
@@ -668,7 +668,7 @@ class RelayDescriptor(ServerDescriptor):
       if start >= 0 and sig_start > 0 and end > start:
         for_digest = raw_descriptor[start:end]
         digest_hash = hashlib.sha1(stem.util.str_tools._to_bytes(for_digest))
-        self._digest = digest_hash.hexdigest().upper()
+        self._digest = stem.util.str_tools._to_unicode(digest_hash.hexdigest().upper())
       else:
         raise ValueError("unable to calculate digest for descriptor")
 
@@ -756,7 +756,9 @@ class RelayDescriptor(ServerDescriptor):
     except ValueError:
       raise ValueError("Verification failed, seperator not found")
 
-    digest = codecs.encode(decrypted_bytes[seperator_index + 1:], 'hex_codec').upper()
+    digest_hex = codecs.encode(decrypted_bytes[seperator_index + 1:], 'hex_codec')
+    digest = stem.util.str_tools._to_unicode(digest_hex.upper())
+
     local_digest = self.digest()
 
     if digest != local_digest:
@@ -852,7 +854,7 @@ class BridgeDescriptor(ServerDescriptor):
         if validate and not stem.util.tor_tools.is_hex_digits(value, 40):
           raise ValueError("Router digest line had an invalid sha1 digest: %s" % line)
 
-        self._digest = value
+        self._digest = stem.util.str_tools._to_unicode(value)
         del entries["router-digest"]
 
     ServerDescriptor._parse(self, entries, validate)



More information about the tor-commits mailing list