1

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

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

读取 S/MIME 消息时出错 715956256:error:07069041:memory buffer routines:BUF_MEM_grow_clean:malloc failure:buffer.c:152:715956256:error:0D06B041:asn1 encoding routines:ASN1_D2I_READ_BIO:malloc failure:a_d2i_fp.c:229:

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

4

4 回答 4

1

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

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

于 2011-06-25T07:42:51.957 回答
0

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

于 2011-07-08T04:41:19.670 回答
0

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

现在,如果您的签名没有分离,您应该仍然可以自己分离它。PKCS#7 格式有据可查。asn1c 可以分块工作,因此您应该能够使用它。

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

于 2011-09-11T02:45:24.883 回答
0

我使用了支持基于块的处理的 NSS 库,它运行良好。

于 2014-04-03T07:53:15.410 回答