未能读取s / mime格式大尺寸的PKCS7签名文件

问题描述

| 我想用s / mime格式验证签名文件,并且pkcs7文件大小为500MB。 openssl smime -verify -in test.pk7-通知DER 读取S / MIME消息时出错 715956256:错误:07069041:内存缓冲区例程:BUF_MEM_grow_clean:malloc失败:buffer.c:152: 715956256:错误:0D06B041:asn1编码例程:ASN1_D2I_READ_BIO:malloc失败:a_d2i_fp.c:229: 内存使用有限(例如200MB)可能吗?     

解决方法

        不幸的是,OpenSSL会将整个文件加载到内存中。 如果可能的话,切换PKCS#7分离签名将大大减少内存需求。这意味着将数据和签名作为2个单独的文件。     ,        我在使用1.4GB加密文件时遇到了这个问题,在32位主机上,它在mallocs上失败,在64位上通过了。     ,        正如Mathias提到的,如果签名分离,则可以在OpenSSL中对数据进行流处理。 现在,如果您的签名未分离,您仍然应该可以自己分离它。 PKCS#7格式有据可查。 asn1c可以分块工作,因此您应该可以使用它。 当然,正确的解决方案是首先获得独立的签名。     ,        我使用了NSS库,该库支持基于块的处理,并且运行良好。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...