问题
1-我想创建一个MIME消息。像这样:
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="---12345"
This is a multipart message in MIME format.
---12345
Content-Type: text/plain
This is the plain text
---12345
Content-Type: application/pdf
>> PDF binary code here <<
---12345
2-然后我需要以BIO * data
的形式将其传递给OpenSSL函数。
PKCS7 *PKCS7_sign(..., ..., ..., BIO *data, ...);
第一种方法
从文件系统加载纯文本和附件数据并将其分配给char * data
,操纵数据以添加相应的MIME标头,最后使用BIO * memoryBIO
将其分配给BIO_puts(memoryBIO, data);
。< / p>
但是这种方法不起作用,因为二进制数据包含&#34; \ 0&#34;(NULL),它与char
类型不一致。
第二种方法
将纯文本和附件分配给BIO
每个,然后&#34;连接&#34;他们。但无法找到办法。
结论
我想知道是否有办法完成这样的壮举。 我还想避免使用中间文件并在内存中构建所有内容。
答案 0 :(得分:0)
遵循jww的建议后,我最终使用的是BIO_write();
。
BIO * inBIO = NULL;
std::vector<unsigned char> data = GetData();
inBIO = BIO_new(BIO_s_mem());
BIO_write(inBIO, data.data(), data.size());
再次感谢j答案以及关于OpenSSL的所有其他答案,你们帮助了我很多。