def read_certificate(certificate):
    '''
    Returns a dict containing details of a certificate. Input can be a PEM
    string or file path.

    certificate:
        The certificate to be read. Can be a path to a certificate file, or
        a string containing the PEM formatted text of the certificate.

    CLI Example:

    .. code-block:: bash

        salt '*' x509.read_certificate /etc/pki/mycert.crt
    '''
    cert = _get_certificate_obj(certificate)

    ret = {
        # X509 Version 3 has a value of 2 in the field.
        # Version 2 has a value of 1.
        # https://tools.ietf.org/html/rfc5280#section-4.1.2.1
        'Version': cert.get_version() + 1,
        # Get size returns in bytes. The world thinks of key sizes in bits.
        'Key Size': cert.get_pubkey().size() * 8,
        'Serial Number': _dec2hex(cert.get_serial_number()),
        'SHA-256 Finger Print': _pretty_hex(cert.get_fingerprint(md='sha256')),
        'MD5 Finger Print': _pretty_hex(cert.get_fingerprint(md='md5')),
        'SHA1 Finger Print': _pretty_hex(cert.get_fingerprint(md='sha1')),
        'Subject': _parse_subject(cert.get_subject()),
        'Subject Hash': _dec2hex(cert.get_subject().as_hash()),
        'Issuer': _parse_subject(cert.get_issuer()),
        'Issuer Hash': _dec2hex(cert.get_issuer().as_hash()),
        'Not Before':
        cert.get_not_before().get_datetime().strftime('%Y-%m-%d %H:%M:%S'),
        'Not After':
        cert.get_not_after().get_datetime().strftime('%Y-%m-%d %H:%M:%S'),
        'Public Key': get_public_key(cert)
    }

    exts = OrderedDict()
    for ext_index in range(0, cert.get_ext_count()):
        ext = cert.get_ext_at(ext_index)
        name = ext.get_name()
        val = ext.get_value()
        if ext.get_critical():
            val = 'critical ' + val
        exts[name] = val

    if exts:
        ret['X509v3 Extensions'] = exts

    return ret
def read_certificate ( certificate ) : cert = _get_certificate_obj ( certificate ) ret = { 'Version' : cert . get_version ( ) + 1 , 'Key Size' : cert . get_pubkey ( ) . size ( ) * 8 , 'Serial Number' : _dec2hex ( cert . get_serial_number ( ) ) , 'SHA-256 Finger Print' : _pretty_hex ( cert . get_fingerprint ( md = 'sha256' ) ) , 'MD5 Finger Print' : _pretty_hex ( cert . get_fingerprint ( md = 'md5' ) ) , 'SHA1 Finger Print' : _pretty_hex ( cert . get_fingerprint ( md = 'sha1' ) ) , 'Subject' : _parse_subject ( cert . get_subject ( ) ) , 'Subject Hash' : _dec2hex ( cert . get_subject ( ) . as_hash ( ) ) , 'Issuer' : _parse_subject ( cert . get_issuer ( ) ) , 'Issuer Hash' : _dec2hex ( cert . get_issuer ( ) . as_hash ( ) ) , 'Not Before' : cert . get_not_before ( ) . get_datetime ( ) . strftime ( '%Y-%m-%d %H:%M:%S' ) , 'Not After' : cert . get_not_after ( ) . get_datetime ( ) . strftime ( '%Y-%m-%d %H:%M:%S' ) , 'Public Key' : get_public_key ( cert ) } exts = OrderedDict ( ) for ext_index in range ( 0 , cert . get_ext_count ( ) ) : ext = cert . get_ext_at ( ext_index ) name = ext . get_name ( ) val = ext . get_value ( ) if ext . get_critical ( ) : val = 'critical ' + val exts [ name ] = val if exts : ret [ 'X509v3 Extensions' ] = exts return ret
Returns a dict containing details of a certificate. Input can be a PEM
    string or file path.

    certificate:
        The certificate to be read. Can be a path to a certificate file, or
        a string containing the PEM formatted text of the certificate.

    CLI Example:

    .. code-block:: bash

        salt '*' x509.read_certificate /etc/pki/mycert.crt