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'
|
||||
|
||||
|
||||
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):
|
||||
'''
|
||||
When we encounter unsupported encryption algorithms
|
||||
@ -438,6 +502,8 @@ def main():
|
||||
if not args.check:
|
||||
logging.info('Print RSA private keys')
|
||||
for rsa_object in rsa_objects:
|
||||
if args.informational:
|
||||
print(PkDecoratorFactory.create(rsa_object))
|
||||
print(rsa_object.to_cryptography_key().private_bytes(
|
||||
encoding=serialization.Encoding.PEM,
|
||||
format=serialization.PrivateFormat.TraditionalOpenSSL,
|
||||
@ -448,6 +514,8 @@ def main():
|
||||
if not args.check:
|
||||
logging.info('Print private keys')
|
||||
for pk_object in pk_objects:
|
||||
if args.informational:
|
||||
print(PkDecoratorFactory.create(pk_object))
|
||||
print(crypto.dump_privatekey(crypto.FILETYPE_PEM,
|
||||
pk_object).decode('ascii'),
|
||||
end='')
|
||||
|
Loading…
x
Reference in New Issue
Block a user