问题描述
|
我想用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库,该库支持基于块的处理,并且运行良好。