2017-08-20 5 views

Antwort

1

Kommentar: Ich habe als Speicherobjekt pkcs7, keine Datei

PyOpenSSL liest nicht aus Datei!

OpenSSL.crypto.load_pkcs7_data (Typ, Puffer)

Last pkcs7 Daten aus dem Zeichenfolgenpuffer mit dem Typ Typ kodiert.
Der Typ muss entweder FILETYPE_PEM oder FILETYPE_ASN1) sein.

from OpenSSL import crypto 
pkcs7 = crypto.load_pkcs7_data(crypto.FILETYPE_ASN1, 
           open('certs/signature.der', 'rb').read()) 
certs = get_certificates(pkcs7) 
for cert in certs: 
    print('Subject:{}, Serial Nnumber:{}'. 
     format(cert.get_subject(), cert.get_serial_number())) 

>>>Subject:<X509Name object '/CN=key1'>, Serial Nnumber:13315126025841024674 
>>>Subject:<X509Name object '/CN=key2'>, Serial Nnumber:14142490995367396705 

Frage: Python-Paket für pkcs7 Parsen?

Sie können PKCS # 7 PEM mit OpenSSL konvertieren, ist PEM lesbar mit PyOpenSSL

openssl pkcs7 -print_certs -in sample.p7b -out sample.cer 

lesen, dass relevante SO Antwort: pyOpenSSL's PKCS7

+0

Vielen Dank für Ihre Antwort! Das weiß ich schon, aber ich habe pkcs7 als Speicherobjekt, nicht als Datei. Es ist nicht so, dass ich es nicht als Datei speichern könnte, ich wollte es nur so machen. Deshalb wollte ich ein Python-Paket so schlecht finden. Wie auch immer, da eine Signatur immer dieselbe Struktur hat, analysiere ich einfach ASN1 direkt mit [asn1 package] (https://pypi.python.org/pypi/asn1/2.1.0) und extrahiere eine Seriennummer. –

+0

@Gleb: Meine Antwort aktualisiert – stovfl

Verwandte Themen