Есть ли пакет 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