Report some information on the private key
This commit is contained in:
parent
4cffe77fa0
commit
b0562e1497
@ -30,6 +30,70 @@ ASN1TIME_FMT = str('%Y%m%d%H%M%SZ'.encode('utf8'))
|
|||||||
OPENSSLTIME_FMT = '%b %e %T %Y GMT'
|
OPENSSLTIME_FMT = '%b %e %T %Y GMT'
|
||||||
|
|
||||||
|
|
||||||
|
class PkDecorator(object):
|
||||||
|
'''
|
||||||
|
Provide some information on the private key object
|
||||||
|
'''
|
||||||
|
pk = None
|
||||||
|
|
||||||
|
def __init__(self, pk):
|
||||||
|
self.pk = pk
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return "Private key"
|
||||||
|
|
||||||
|
|
||||||
|
class PkDecoratorEC(PkDecorator):
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
pk_crypto = self.pk.to_cryptography_key()
|
||||||
|
return "EC Private key curve %s (%d bits)" % (
|
||||||
|
pk_crypto.curve.name, pk_crypto.key_size)
|
||||||
|
|
||||||
|
|
||||||
|
class PkDecoratorRSA(PkDecorator):
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
pk_crypto = self.pk.to_cryptography_key()
|
||||||
|
return "RSA Private key %d bits" % pk_crypto.key_size
|
||||||
|
|
||||||
|
|
||||||
|
class PkDecoratorDSA(PkDecorator):
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
pk_crypto = self.pk.to_cryptography_key()
|
||||||
|
return "DSA Private key %d bits" % pk_crypto.key_size
|
||||||
|
|
||||||
|
|
||||||
|
class PkDecoratorDH(PkDecorator):
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
pk_crypto = self.pk.to_cryptography_key()
|
||||||
|
return "DH Private key %d bits" % pk_crypto.key_size
|
||||||
|
|
||||||
|
|
||||||
|
class PkDecoratorFactory(object):
|
||||||
|
'''
|
||||||
|
Provide some information on the private key object
|
||||||
|
'''
|
||||||
|
|
||||||
|
def create(pk):
|
||||||
|
'''
|
||||||
|
Create the appropriate decorater object
|
||||||
|
'''
|
||||||
|
decorators = {
|
||||||
|
crypto.TYPE_DH: PkDecoratorDH,
|
||||||
|
crypto.TYPE_EC: PkDecoratorEC,
|
||||||
|
crypto.TYPE_DSA: PkDecoratorDSA,
|
||||||
|
crypto.TYPE_RSA: PkDecoratorRSA,
|
||||||
|
}
|
||||||
|
if pk.type() in decorators:
|
||||||
|
return decorators[pk.type()](pk)
|
||||||
|
else:
|
||||||
|
raise UnsupportedPkEncryption("Unsupported private key type %d"
|
||||||
|
% pk.type())
|
||||||
|
|
||||||
|
|
||||||
class UnsupportedPkEncryption(Exception):
|
class UnsupportedPkEncryption(Exception):
|
||||||
'''
|
'''
|
||||||
When we encounter unsupported encryption algorithms
|
When we encounter unsupported encryption algorithms
|
||||||
@ -438,6 +502,8 @@ def main():
|
|||||||
if not args.check:
|
if not args.check:
|
||||||
logging.info('Print RSA private keys')
|
logging.info('Print RSA private keys')
|
||||||
for rsa_object in rsa_objects:
|
for rsa_object in rsa_objects:
|
||||||
|
if args.informational:
|
||||||
|
print(PkDecoratorFactory.create(rsa_object))
|
||||||
print(rsa_object.to_cryptography_key().private_bytes(
|
print(rsa_object.to_cryptography_key().private_bytes(
|
||||||
encoding=serialization.Encoding.PEM,
|
encoding=serialization.Encoding.PEM,
|
||||||
format=serialization.PrivateFormat.TraditionalOpenSSL,
|
format=serialization.PrivateFormat.TraditionalOpenSSL,
|
||||||
@ -448,6 +514,8 @@ def main():
|
|||||||
if not args.check:
|
if not args.check:
|
||||||
logging.info('Print private keys')
|
logging.info('Print private keys')
|
||||||
for pk_object in pk_objects:
|
for pk_object in pk_objects:
|
||||||
|
if args.informational:
|
||||||
|
print(PkDecoratorFactory.create(pk_object))
|
||||||
print(crypto.dump_privatekey(crypto.FILETYPE_PEM,
|
print(crypto.dump_privatekey(crypto.FILETYPE_PEM,
|
||||||
pk_object).decode('ascii'),
|
pk_object).decode('ascii'),
|
||||||
end='')
|
end='')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user