CertStore: cope with certs that have no common name

This commit is contained in:
Aldo Cortesi 2014-03-05 17:29:14 +13:00
parent 86730a9a4c
commit 52b14aa1d1

View File

@ -169,21 +169,22 @@ class CertStore:
f.close() f.close()
return key, ca return key, ca
def add_cert_file(self, commonname, path): def add_cert_file(self, spec, path):
raw = file(path, "rb").read() raw = file(path, "rb").read()
cert = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, raw) cert = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, raw)
try: try:
privkey = OpenSSL.crypto.load_privatekey(OpenSSL.crypto.FILETYPE_PEM, raw) privkey = OpenSSL.crypto.load_privatekey(OpenSSL.crypto.FILETYPE_PEM, raw)
except Exception: except Exception:
privkey = None privkey = None
self.add_cert(SSLCert(cert), privkey, commonname) self.add_cert(SSLCert(cert), privkey, spec)
def add_cert(self, cert, privkey, *names): def add_cert(self, cert, privkey, *names):
""" """
Adds a cert to the certstore. We register the CN in the cert plus Adds a cert to the certstore. We register the CN in the cert plus
any SANs, and also the list of names provided as an argument. any SANs, and also the list of names provided as an argument.
""" """
self.certs.add(cert.cn, (cert, privkey)) if cert.cn:
self.certs.add(cert.cn, (cert, privkey))
for i in cert.altnames: for i in cert.altnames:
self.certs.add(i, (cert, privkey)) self.certs.add(i, (cert, privkey))
for i in names: for i in names: