Есть ли пакет python для разбора pkcs7?

Я извлекаю функции из файлов Android .APK с помощью androguard, и сейчас мне нужно извлечь серийный номер (*) из файла подписи (обычно CERT.RSA). Я нашел asn1crypto, но я не совсем понимаю, как использовать его с pkcs7. Так есть ли пакет Python, подходящий для этой цели?

(*): Серийный номер

1 ответ

Решение

Комментарий: у меня pkcs7 как объект памяти, а не файл

PyOpenSSL не читает из файла!

OpenSSL.crypto.load_pkcs7_data (тип, буфер)

Загрузите данные pkcs7 из строкового буфера, закодированного с типом type.
Тип типа должен быть либо FILETYPE_PEM, либо FILETYPE_ASN1).

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

Вопрос: пакет python для разбора pkcs7?

Вы можете конвертировать PKCS#7 в PEM с помощью openssl, PEM читается с помощью PyOpenSSL

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

Прочитайте соответствующий SO ответ: pyCSpenSSL's PKCS7

Другие вопросы по тегам