def _loadPublicKey(fname):
with open(fname, 'r') as f:
cert_bytes = f.read()
cert_bytes = ssl.PEM_cert_to_DER_cert(cert_bytes)
cert = Crypto.Util.asn1.DerSequence()
cert.decode(cert_bytes)
tbsCertificate = Crypto.Util.asn1.DerSequence()
tbsCertificate.decode(cert[0])
## shaky, but seems to work on v1 and v3 certs.
try:
subjectPublicKeyInfo = tbsCertificate[6]
serial = "%x"%tbsCertificate[1]
except IndexError:
serial = "%x"%tbsCertificate[0]
subjectPublicKeyInfo = tbsCertificate[5]
key = Crypto.PublicKey.RSA.importKey(subjectPublicKeyInfo)
return type('Certificate', (object,), {'serial':serial.encode(), 'key':key})
评论列表
文章目录