Как извлечь подпись из сертификата x509

Я пытаюсь извлечь подпись из загруженного сертификата x509. У меня есть все остальное (эмитент, тема, PEM, SignatureAlgorithm и т. д.). Я искал это, но не нашел. Любая помощь будет принята с благодарностью!

from OpenSSL import crypto

certobj = crypto.load_certificate(crypto.FILETYPE_ASN1, cert)

issuer = certobj.get_issuer()
subject = certobj.get_subject()

certDetails = {
    "SerialNumber": certobj.get_serial_number(),
    "Signature": None,  # <-- This is what I am trying to get!
    "SignatureAlgorithm": certobj.get_signature_algorithm(),
    "CertificatePEM": crypto.dump_certificate(crypto.FILETYPE_PEM, certobj),
    "SubjectPublicKeyPEM": crypto.dump_publickey(crypto.FILETYPE_PEM, certobj.get_pubkey()),
    "Version": certobj.get_version()
}

person cmeadows    schedule 24.05.2017    source источник
comment
Вы ищете открытый ключ? это то, что на самом деле позволяет вам отправлять доверенные сообщения в ЦС: certobj.get_pubkey()   -  person Aaron    schedule 24.05.2017
comment
@ Аарон Аарон Нет. У меня есть открытый ключ, хранящийся в certDetails.SubjectPublicKeyPEM. Я ищу само значение подписи.   -  person cmeadows    schedule 24.05.2017


Ответы (2)


Я знаю, что прошло некоторое время с тех пор, как вопрос был задан, но для всех, кому это нужно, есть два варианта:

signing_algo = cert_obj.signature_hash_algorithm.name

or

signing_algo = cert_obj.signature_algorithm_oid._name

cert_obj является экземпляром cryptography.x509.Certificate

person Jdevintime    schedule 20.03.2020

Небольшой обходной путь, но я преобразовал сертификат в объект сертификата криптографии для доступа к подписи:

cryptCert = cert.to_cryptography()

распечатать hexlify (cryptCert.signature)

person Yaakov Blank    schedule 06.02.2018