Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(163)

Unified Diff: third_party/tlslite/tlslite/X509.py

Issue 211173006: Perform tlslite 0.3.8 -> 0.4.6 renames ahead of time. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Drop the -B Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/tlslite/tlslite/VerifierDB.py ('k') | third_party/tlslite/tlslite/X509CertChain.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/tlslite/tlslite/X509.py
diff --git a/third_party/tlslite/tlslite/X509.py b/third_party/tlslite/tlslite/X509.py
deleted file mode 100644
index a32d879a3a7aa15686029c2a7d1d901ba13ba85d..0000000000000000000000000000000000000000
--- a/third_party/tlslite/tlslite/X509.py
+++ /dev/null
@@ -1,142 +0,0 @@
-"""Class representing an X.509 certificate."""
-
-from utils.ASN1Parser import ASN1Parser
-from utils.cryptomath import *
-from utils.keyfactory import _createPublicRSAKey
-
-
-class X509:
- """This class represents an X.509 certificate.
-
- @type bytes: L{array.array} of unsigned bytes
- @ivar bytes: The DER-encoded ASN.1 certificate
-
- @type publicKey: L{tlslite.utils.RSAKey.RSAKey}
- @ivar publicKey: The subject public key from the certificate.
-
- @type subject: L{array.array} of unsigned bytes
- @ivar subject: The DER-encoded ASN.1 subject distinguished name.
- """
-
- def __init__(self):
- self.bytes = createByteArraySequence([])
- self.publicKey = None
- self.subject = None
-
- def parse(self, s):
- """Parse a PEM-encoded X.509 certificate.
-
- @type s: str
- @param s: A PEM-encoded X.509 certificate (i.e. a base64-encoded
- certificate wrapped with "-----BEGIN CERTIFICATE-----" and
- "-----END CERTIFICATE-----" tags).
- """
-
- start = s.find("-----BEGIN CERTIFICATE-----")
- end = s.find("-----END CERTIFICATE-----")
- if start == -1:
- raise SyntaxError("Missing PEM prefix")
- if end == -1:
- raise SyntaxError("Missing PEM postfix")
- s = s[start+len("-----BEGIN CERTIFICATE-----") : end]
-
- bytes = base64ToBytes(s)
- self.parseBinary(bytes)
- return self
-
- def parseBinary(self, bytes):
- """Parse a DER-encoded X.509 certificate.
-
- @type bytes: str or L{array.array} of unsigned bytes
- @param bytes: A DER-encoded X.509 certificate.
- """
-
- if isinstance(bytes, type("")):
- bytes = stringToBytes(bytes)
-
- self.bytes = bytes
- p = ASN1Parser(bytes)
-
- #Get the tbsCertificate
- tbsCertificateP = p.getChild(0)
-
- #Is the optional version field present?
- #This determines which index the key is at.
- if tbsCertificateP.value[0]==0xA0:
- subjectPublicKeyInfoIndex = 6
- else:
- subjectPublicKeyInfoIndex = 5
-
- #Get the subject
- self.subject = tbsCertificateP.getChildBytes(\
- subjectPublicKeyInfoIndex - 1)
-
- #Get the subjectPublicKeyInfo
- subjectPublicKeyInfoP = tbsCertificateP.getChild(\
- subjectPublicKeyInfoIndex)
-
- #Get the algorithm
- algorithmP = subjectPublicKeyInfoP.getChild(0)
- rsaOID = algorithmP.value
- if list(rsaOID) != [6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 1, 5, 0]:
- raise SyntaxError("Unrecognized AlgorithmIdentifier")
-
- #Get the subjectPublicKey
- subjectPublicKeyP = subjectPublicKeyInfoP.getChild(1)
-
- #Adjust for BIT STRING encapsulation
- if (subjectPublicKeyP.value[0] !=0):
- raise SyntaxError()
- subjectPublicKeyP = ASN1Parser(subjectPublicKeyP.value[1:])
-
- #Get the modulus and exponent
- modulusP = subjectPublicKeyP.getChild(0)
- publicExponentP = subjectPublicKeyP.getChild(1)
-
- #Decode them into numbers
- n = bytesToNumber(modulusP.value)
- e = bytesToNumber(publicExponentP.value)
-
- #Create a public key instance
- self.publicKey = _createPublicRSAKey(n, e)
- return self
-
- def getFingerprint(self):
- """Get the hex-encoded fingerprint of this certificate.
-
- @rtype: str
- @return: A hex-encoded fingerprint.
- """
- return sha.sha(self.bytes).hexdigest()
-
- def getCommonName(self):
- """Get the Subject's Common Name from the certificate.
-
- The cryptlib_py module must be installed in order to use this
- function.
-
- @rtype: str or None
- @return: The CN component of the certificate's subject DN, if
- present.
- """
- import cryptlib_py
- import array
- c = cryptlib_py.cryptImportCert(self.bytes, cryptlib_py.CRYPT_UNUSED)
- name = cryptlib_py.CRYPT_CERTINFO_COMMONNAME
- try:
- try:
- length = cryptlib_py.cryptGetAttributeString(c, name, None)
- returnVal = array.array('B', [0] * length)
- cryptlib_py.cryptGetAttributeString(c, name, returnVal)
- returnVal = returnVal.tostring()
- except cryptlib_py.CryptException, e:
- if e[0] == cryptlib_py.CRYPT_ERROR_NOTFOUND:
- returnVal = None
- return returnVal
- finally:
- cryptlib_py.cryptDestroyCert(c)
-
- def writeBytes(self):
- return self.bytes
-
-
« no previous file with comments | « third_party/tlslite/tlslite/VerifierDB.py ('k') | third_party/tlslite/tlslite/X509CertChain.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698