我想验证带有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?
答案 0 :(得分:1)
不幸的是,OpenSSL会将整个文件加载到内存中。
如果可能,切换PKCS#7分离签名会显着降低内存要求。这意味着将数据和签名作为2个单独的文件。
答案 1 :(得分:0)
我有一个1.4GB加密文件的问题,在32位主机上它在mallocs上失败了,64bit它已经通过了。
答案 2 :(得分:0)
正如Mathias所提到的,如果签名已分离,您可以在OpenSSL中流处理数据。
现在如果您的签名没有分离,您仍然可以自己分离。 PKCS#7格式已有详细记录。 asn1c可以在块中工作,所以你应该可以使用它。
当然,正确的解决方案是首先获得一个独立的签名。
答案 3 :(得分:0)
我使用过支持基于块的处理的NSS库,它运行得很好。