Python加密将PEM字节转换为PKCS7

时间:2019-05-25 01:07:23

标签: python python-3.x cryptography pem pkcs#7

我已经成功获取了一个x509.Certificate对象,该对象使用cert.public_bytes(encoding=serialization.Encoding.PEM)转储为字节。

我现在发现我需要将这些数据转换为PKCS7格式。看着docs使我想到了这一点:

def pem_to_pkcs7(data):
    data = data.decode().replace('-----BEGIN CERTIFICATE-----','-----BEGIN PKCS7-----').replace('-----END CERTIFICATE-----','-----END PKCS7-----').encode()
    padder = padding.PKCS7(256).padder()
    padded_data = padder.update(data)
    padded_data += padder.finalize()
    print('Padded data:\n\n%s\n' % padded_data)
    return padded_data

但是,用...写入文件后

    with open("scratch/phone_cert.pkcs7", "wb") as f:
    f.write(pem_to_pkcs7(cert.public_bytes(encoding=serialization.Encoding.PEM)))

我在使用OpenSSL时遇到此错误:

$ openssl pkcs7 -noout -text -print_certs -in phone_cert.pkcs7
unable to load PKCS7 object
139974202495424:error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag:../crypto/asn1/tasn_dec.c:1129:
139974202495424:error:0D06C03A:asn1 encoding routines:asn1_d2i_ex_primitive:nested asn1 error:../crypto/asn1/tasn_dec.c:693:
139974202495424:error:0D08303A:asn1 encoding routines:asn1_template_noexp_d2i:nested asn1 error:../crypto/asn1/tasn_dec.c:626:Field=type, Type=PKCS7
139974202495424:error:0906700D:PEM routines:PEM_ASN1_read_bio:ASN1 lib:../crypto/pem/pem_oth.c:33:

非常感谢任何指导!

0 个答案:

没有答案