gpt4 book ai didi

c - 具有 BIO、char * 和二进制数据的 SMIME

转载 作者:行者123 更新时间:2023-11-30 16:57:12 26 4
gpt4 key购买 nike

问题

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 * memoryBIOBIO_puts(memoryBIO, data); .

但是这种方法不起作用,因为二进制数据包含“\0”(NULL),这与 char 不兼容。类型。

第二种方法

将纯文本和附件分配给BIO 每个然后“连接”它们。但找不到方法来做到这一点。

结论

我想知道是否有办法实现这样的壮举。我还想避免使用中间文件并在内存中构建所有内容。

最佳答案

遵循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());

再次感谢 jww 的回答以及 SO 中有关 OpenSSL 的所有其他答案,您对我帮助很大。

关于c - 具有 BIO、char * 和二进制数据的 SMIME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39651411/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com