有没有用于解析pkcs7的python包?

时间:2017-08-20 13:08:04

标签: android python pkcs#7 androguard

我正在使用androguard从Android .APK文件中提取功能,现在我需要从其签名文件(通常是CERT.RSA)中提取序列号(*)。我找到了asn1crypto,但我不太明白,如何将它与pkcs7一起使用。那么有适合此目的的python包吗?

(*): Serial number

1 个答案:

答案 0 :(得分:2)

  

评论:我有pkcs7作为内存对象,而不是文件

PyOpenSSL无法从文件中读取

  

OpenSSL.crypto.load_pkcs7_data(type,buffer)

     

从使用类型类型编码的字符串缓冲区加载pkcs7数据      类型类型必须是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
  

问题:用于解析pkcs7的python包?

您可以使用openssl将PKCS#7转换为PEM,使用PrincipalContext.ValidateCredentials Method可读取PEM

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

阅读相关的SO答案:PyOpenSSL