[tor-commits] [bridgedb/master] Sometimes we want spacey fingerprints

isis at torproject.org isis at torproject.org
Sun Jan 12 06:06:32 UTC 2014


commit ef0dd5ae4b3b551cc6710e2f21691d975b85a924
Author: Matthew Finkel <Matthew.Finkel at gmail.com>
Date:   Sat Nov 9 16:57:33 2013 +0000

    Sometimes we want spacey fingerprints
    
    Take a string with 40 characters and add a space after every 4 chars.
    
    (cherry picked from commit 63c7e9ca9c7bf8d397437d5c87dff8f73a759317)
    Signed-off-by: Isis Lovecruft <isis at torproject.org>
---
 scripts/gen_bridge_descriptors |   29 +++++++++--------------------
 1 file changed, 9 insertions(+), 20 deletions(-)

diff --git a/scripts/gen_bridge_descriptors b/scripts/gen_bridge_descriptors
index 68d58c1..4d7c930 100644
--- a/scripts/gen_bridge_descriptors
+++ b/scripts/gen_bridge_descriptors
@@ -223,37 +223,26 @@ def makeProtocolsLine(version=None):
     return line
 
 def convertToSpaceyFingerprint(fingerprint):
-    """Convert a colon-delimited fingerprint to be space-delimited.
+    """Convert to a space-delimited 40 character fingerprint
 
-    Given a fingerprint with sets of two hexidecimal characters separated by
-    colons, for example a certificate or key fingerprint output from OpenSSL:
+    Given a 40 character string, usually the the SHA-1 hash of the
+    DER encoding of an ASN.1 RSA public key, such as:
       |
-      | 51:58:9E:8B:BF:5C:F6:5A:68:CB:6D:F4:C7:6F:98:C6:B2:02:69:45
+      | 72C2F0AE1C14F40ED37ED5F5434B64711A658E46
       |
 
     convert it to the following format:
       |
-      | 5158 9E8B BF5C F65A 68CB 6DF4 C76F 98C6 B202 6945
+      | 72C2 F0AE 1C14 F40E D37E D5F5 434B 6471 1A65 8E46
       |
 
-    :param string fingerprint: A 2-character colon-delimited hex fingerprint.
+    :param string fingerprint: A 40 character hex fingerprint.
     :rtype: string
     :returns: A 4-character space-delimited fingerprint.
     """
-    # The boolean of the non-equality is necessary because -1 is somehow
-    # truthy in Python…
-    check = lambda f: bool(f.find(':') != -1)
-
-    while True:
-        if check(fingerprint):
-            fingerprint = ''.join(fingerprint.split(':', 1))
-            if check(fingerprint):
-                fingerprint = ' '.join(fingerprint.split(':', 1))
-                continue
-            break
-        break
-
-    return fingerprint
+
+    assert len(fingerprint) == 40
+    return " ".join([fingerprint[i:i+4] for i in xrange(0, 40, 4)])
 
 def makeFingerprintLine(fingerprint, version=None):
     """Generate an appropriate [bridge-]server-descriptor 'fingerprint' line.





More information about the tor-commits mailing list