[tor-commits] [stem/master] Dropping the old KeyCertificate class

atagar at torproject.org atagar at torproject.org
Sat Oct 13 18:35:45 UTC 2012


commit e52f0ec96b01db7da8002479b9a864a6f18f6db8
Author: Damian Johnson <atagar at torproject.org>
Date:   Sat Sep 29 11:17:09 2012 -0700

    Dropping the old KeyCertificate class
    
    We have a new shiny and tested KeyCertificate class so dropping the old one.
---
 stem/descriptor/__init__.py      |   92 --------------------------------------
 stem/descriptor/networkstatus.py |    4 +-
 2 files changed, 2 insertions(+), 94 deletions(-)

diff --git a/stem/descriptor/__init__.py b/stem/descriptor/__init__.py
index 9fa1f9e..362500a 100644
--- a/stem/descriptor/__init__.py
+++ b/stem/descriptor/__init__.py
@@ -441,95 +441,3 @@ def _strptime(string, validate = True, optional = False):
 def line_matches_keyword(keyword, line):
   return re.search("^(opt )?" + re.escape(keyword) + "($| )", line)
 
-class KeyCertificate(Descriptor):
-  """
-  Directory key certificate.
-  
-  :var str key_certificate_version: **\*** version of the key certificate (Should be "3")
-  :var str ip: IP address on which the directory authority is listening
-  :var int port: port on which the directory authority is listening
-  :var str fingerprint: **\*** hex encoded fingerprint of the authority's identity key
-  :var str identity_key: **\*** long term authority identity key
-  :var datetime published: **\*** time (in GMT) when this document & the key were last generated
-  :var str expires: **\*** time (in GMT) after which this key becomes invalid
-  :var str signing_key: **\*** directory server's public signing key
-  :var str crosscert: signature made using certificate's signing key
-  :var str certification: **\*** signature of this key certificate signed with the identity key
-  
-  **\*** attribute is either required when we're parsed with validation or has a default value, others are left as None if undefined
-  """
-  
-  def __init__(self, raw_content, validate = True):
-    """
-    Parse a key certificate entry and provide a KeyCertificate object.
-    
-    :param str raw_content: raw key certificate information
-    :param bool validate: True if the document is to be validated, False otherwise
-    
-    :raises: ValueError if the raw data is invalid
-    """
-    
-    super(KeyCertificate, self).__init__(raw_content)
-    self.key_certificate_version, self.ip, self.port = None, None, None
-    self.fingerprint, self.identity_key, self.published = None, None, None
-    self.expires, self.signing_key, self.crosscert = None, None, None
-    self.certification = None
-    content = raw_content.splitlines()
-    seen_keywords = set()
-    
-    self.key_certificate_version = _read_keyword_line_str("dir-key-certificate-version", content)
-    if validate and self.key_certificate_version != "3":
-      raise ValueError("Unrecognized dir-key-certificate-version")
-    
-    def read_keyword_line(keyword):
-      if validate and keyword in seen_keywords:
-        raise ValueError("Invalid key certificate: '%s' appears twice" % keyword)
-      seen_keywords.add(keyword)
-      return _read_keyword_line_str(keyword, content, validate)
-    
-    while content:
-      if line_matches_keyword("dir-address", content[0]):
-        line = read_keyword_line("dir-address")
-        try:
-          self.ip, self.port = line.rsplit(":", 1)
-          self.port = int(self.port)
-        except Exception:
-          if validate: raise ValueError("Invalid dir-address line: %s" % line)
-      elif line_matches_keyword("fingerprint", content[0]):
-        self.fingerprint = read_keyword_line("fingerprint")
-      elif line_matches_keyword("dir-identity-key", content[0]):
-        read_keyword_line("dir-identity-key")
-        self.identity_key = _get_pseudo_pgp_block(content)
-      elif line_matches_keyword("dir-key-published", content[0]):
-        self.published = _strptime(read_keyword_line("dir-key-published"))
-      elif line_matches_keyword("dir-key-expires", content[0]):
-        self.expires = _strptime(read_keyword_line("dir-key-expires"))
-      elif line_matches_keyword("dir-signing-key", content[0]):
-        read_keyword_line("dir-signing-key")
-        self.signing_key = _get_pseudo_pgp_block(content)
-      elif line_matches_keyword("dir-key-crosscert", content[0]):
-        read_keyword_line("dir-key-crosscert")
-        self.crosscert = _get_pseudo_pgp_block(content)
-      elif line_matches_keyword("dir-key-certification", content[0]):
-        read_keyword_line("dir-key-certification")
-        self.certification = _get_pseudo_pgp_block(content)
-        break
-      elif validate:
-        raise ValueError("Key certificate contains unrecognized lines: %s" % content[0])
-      else:
-        # ignore unrecognized lines if we aren't validating
-        self.unrecognized_lines.append(content.pop(0))
-    
-    self.unrecognized_lines = content
-    if self.unrecognized_lines and validate:
-      raise ValueError("Unrecognized trailing data in key certificate")
-  
-  def get_unrecognized_lines(self):
-    """
-    Returns any unrecognized lines.
-    
-    :returns: a list of unrecognized lines
-    """
-    
-    return self.unrecognized_lines
-
diff --git a/stem/descriptor/networkstatus.py b/stem/descriptor/networkstatus.py
index ad74442..989bd95 100644
--- a/stem/descriptor/networkstatus.py
+++ b/stem/descriptor/networkstatus.py
@@ -679,7 +679,7 @@ class DirectoryAuthority(stem.descriptor.Descriptor):
   
   **Vote Attributes:**
   :var str legacy_dir_key: fingerprint of and obsolete identity key
-  :var :class:`stem.descriptor.KeyCertificate` key_certificate: **\*** authority's key certificate
+  :var :class:`stem.descriptor.networkstatus.KeyCertificate` key_certificate: **\*** authority's key certificate
   
   **\*** mandatory attribute
   """
@@ -767,7 +767,7 @@ class DirectoryAuthority(stem.descriptor.Descriptor):
     self.contact = _read_keyword_line("contact", content, validate)
     if vote:
       self.legacy_dir_key = _read_keyword_line("legacy-dir-key", content, validate, True)
-      self.key_certificate = stem.descriptor.KeyCertificate(content.read(), validate)
+      self.key_certificate = KeyCertificate(content.read(), validate)
     else:
       self.vote_digest = _read_keyword_line("vote-digest", content, True, validate)
     self.unrecognized_lines = content.read()





More information about the tor-commits mailing list