[tor-commits] [tor/master] Teach the get_mozilla_ciphers.py script to parse recent firefoxen

nickm at torproject.org nickm at torproject.org
Wed Apr 9 00:43:31 UTC 2014


commit d00dc9f7d1b98dd80bbc890db1ddf497aae3bb9e
Author: Nick Mathewson <nickm at torproject.org>
Date:   Tue Apr 8 03:19:38 2014 -0400

    Teach the get_mozilla_ciphers.py script to parse recent firefoxen
---
 src/common/get_mozilla_ciphers.py |   30 ++++++++++++++++++++++++------
 1 file changed, 24 insertions(+), 6 deletions(-)

diff --git a/src/common/get_mozilla_ciphers.py b/src/common/get_mozilla_ciphers.py
index c7e9a84..0636eb3 100644
--- a/src/common/get_mozilla_ciphers.py
+++ b/src/common/get_mozilla_ciphers.py
@@ -41,12 +41,12 @@ fileA = open(ff('security/manager/ssl/src/nsNSSComponent.cpp'),'r')
 inCipherSection = False
 cipherLines = []
 for line in fileA:
-    if line.startswith('static CipherPref CipherPrefs'):
+    if line.startswith('static const CipherPref sCipherPrefs[]'):
         # Get the starting boundary of the Cipher Preferences
         inCipherSection = True
     elif inCipherSection:
         line = line.strip()
-        if line.startswith('{NULL, 0}'):
+        if line.startswith('{ nullptr, 0}'):
             # At the ending boundary of the Cipher Prefs
             break
         else:
@@ -56,12 +56,30 @@ fileA.close()
 # Parse the lines and put them into a dict
 ciphers = {}
 cipher_pref = {}
+key_pending = None
 for line in cipherLines:
-    m = re.search(r'^{\s*\"([^\"]+)\",\s*(\S*)\s*}', line)
+    m = re.search(r'^{\s*\"([^\"]+)\",\s*(\S+)\s*(?:,\s*(true|false))?\s*}', line)
     if m:
-        key,value = m.groups()
-        ciphers[key] = value
-        cipher_pref[value] = key
+        assert not key_pending
+        key,value,enabled = m.groups()
+        if enabled == 'true':
+            ciphers[key] = value
+            cipher_pref[value] = key
+        continue
+    m = re.search(r'^{\s*\"([^\"]+)\",', line)
+    if m:
+        assert not key_pending
+        key_pending = m.group(1)
+        continue
+    m = re.search(r'^\s*(\S+)(?:,\s*(true|false))?\s*}', line)
+    if m:
+        assert key_pending
+        key = key_pending
+        value,enabled = m.groups()
+        key_pending = None
+        if enabled == 'true':
+            ciphers[key] = value
+            cipher_pref[value] = key
 
 ####
 # Now find the correct order for the ciphers





More information about the tor-commits mailing list