| Index: third_party/tlslite/patches/parse_chain.patch
|
| diff --git a/third_party/tlslite/patches/parse_chain.patch b/third_party/tlslite/patches/parse_chain.patch
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1c5533df33134aee198d09ff565cecb1dd360b15
|
| --- /dev/null
|
| +++ b/third_party/tlslite/patches/parse_chain.patch
|
| @@ -0,0 +1,89 @@
|
| +diff -aurb tlslite-0.3.8/tlslite/X509.py chromium/tlslite/X509.py
|
| +--- tlslite-0.3.8/tlslite/X509.py Fri Mar 19 18:43:19 2004
|
| ++++ chromium/tlslite/X509.py Wed Feb 29 11:53:54 2012
|
| +@@ -91,6 +91,7 @@
|
| +
|
| + #Create a public key instance
|
| + self.publicKey = _createPublicRSAKey(n, e)
|
| ++ return self
|
| +
|
| + def getFingerprint(self):
|
| + """Get the hex-encoded fingerprint of this certificate.
|
| +diff -aurb tlslite-0.3.8/tlslite/X509CertChain.py chromium/tlslite/X509CertChain.py
|
| +--- tlslite-0.3.8/tlslite/X509CertChain.py Fri Mar 19 18:49:58 2004
|
| ++++ chromium/tlslite/X509CertChain.py Wed Feb 29 11:53:42 2012
|
| +@@ -1,6 +1,7 @@
|
| + """Class representing an X.509 certificate chain."""
|
| +
|
| + from utils import cryptomath
|
| ++from X509 import X509
|
| +
|
| + class X509CertChain:
|
| + """This class represents a chain of X.509 certificates.
|
| +@@ -23,6 +24,66 @@
|
| + self.x509List = x509List
|
| + else:
|
| + self.x509List = []
|
| ++
|
| ++ def parseChain(self, s):
|
| ++ """Parse a PEM-encoded X.509 certificate file chain file.
|
| ++
|
| ++ @type s: str
|
| ++ @param s: A PEM-encoded (eg: Base64) X.509 certificate file, with every
|
| ++ certificate wrapped within "-----BEGIN CERTIFICATE-----" and
|
| ++ "-----END CERTIFICATE-----" tags). Extraneous data outside such tags,
|
| ++ such as human readable representations, will be ignored.
|
| ++ """
|
| ++
|
| ++ class PEMIterator(object):
|
| ++ """Simple iterator over PEM-encoded certificates within a string.
|
| ++
|
| ++ @type data: string
|
| ++ @ivar data: A string containing PEM-encoded (Base64) certificates,
|
| ++ with every certificate wrapped within "-----BEGIN CERTIFICATE-----"
|
| ++ and "-----END CERTIFICATE-----" tags). Extraneous data outside such
|
| ++ tags, such as human readable representations, will be ignored.
|
| ++
|
| ++ @type index: integer
|
| ++ @ivar index: The current offset within data to begin iterating from.
|
| ++ """
|
| ++
|
| ++ _CERTIFICATE_HEADER = "----BEGIN CERTIFICATE-----"
|
| ++ """The PEM encoding block header for X.509 certificates."""
|
| ++
|
| ++ _CERTIFICATE_FOOTER = "----END CERTIFICATE-----"
|
| ++ """The PEM encoding block footer for X.509 certificates."""
|
| ++
|
| ++ def __init__(self, s):
|
| ++ self.data = s
|
| ++ self.index = 0
|
| ++
|
| ++ def __iter__(self):
|
| ++ return self
|
| ++
|
| ++ def next(self):
|
| ++ """Iterates and returns the next L{tlslite.X509.X509}
|
| ++ certificate in data.
|
| ++
|
| ++ @rtype tlslite.X509.X509
|
| ++ """
|
| ++
|
| ++ self.index = self.data.find(self._CERTIFICATE_HEADER,
|
| ++ self.index)
|
| ++ if self.index == -1:
|
| ++ raise StopIteration
|
| ++ end = self.data.find(self._CERTIFICATE_FOOTER, self.index)
|
| ++ if end == -1:
|
| ++ raise StopIteration
|
| ++
|
| ++ certStr = self.data[self.index+len(self._CERTIFICATE_HEADER) :
|
| ++ end]
|
| ++ self.index = end + len(self._CERTIFICATE_FOOTER)
|
| ++ bytes = cryptomath.base64ToBytes(certStr)
|
| ++ return X509().parseBinary(bytes)
|
| ++
|
| ++ self.x509List = list(PEMIterator(s))
|
| ++ return self
|
| +
|
| + def getNumCerts(self):
|
| + """Get the number of certificates in this chain.
|
|
|