使用s / mime格式(大尺寸)读取PKCS7签名文件失败

时间:2011-06-25 00:58:15

标签: linux openssl pkcs#7 smime

我想验证带有s / mime格式的签名文件,pkcs7文件大小为500MB。

openssl smime -verify -in test.pk7 -inform DER

读取S / MIME邮件时出错 715956256:错误:07069041:内存缓冲区例程:BUF_MEM_grow_clean:malloc failure:buffer.c:152: 715956256:错误:0D06B041:asn1编码例程:ASN1_D2I_READ_BIO:malloc失败:a_d2i_fp.c:229:

是否有可能使用有限的内存,例如200MB?

4 个答案:

答案 0 :(得分:1)

不幸的是,OpenSSL会将整个文件加载到内存中。

如果可能,切换PKCS#7分离签名会显着降低内存要求。这意味着将数据和签名作为2个单独的文件。

答案 1 :(得分:0)

我有一个1.4GB加密文件的问题,在32位主机上它在mallocs上失败了,64bit它已经通过了。

答案 2 :(得分:0)

正如Mathias所提到的,如果签名已分离,您可以在OpenSSL中流处理数据。

现在如果您的签名没有分离,您仍然可以自己分离。 PKCS#7格式已有详细记录。 asn1c可以在块中工作,所以你应该可以使用它。

当然,正确的解决方案是首先获得一个独立的签名。

答案 3 :(得分:0)

我使用过支持基于块的处理的NSS库,它运行得很好。