2

我正在尝试使用 openSSL 库进行 Base64 解码,然后使用 CMS 来验证签名。

下面的代码总是将缓冲区打印为 NULL。

char signed_data[] = "MIIO";
int signed_data_length = sizeof(signed_data);

BIO *b64, *bmem;

char *buffer = (char *)malloc(signed_data_length);
memset(buffer, 0, signed_data_length);

b64 = BIO_new(BIO_f_base64());
bmem = BIO_new_mem_buf(signed_data, signed_data_length);
bmem = BIO_push(b64, bmem);

BIO_read(bmem, buffer, signed_data_length);
printf("%s", buffer);
4

1 回答 1

3

在 BIO_new() 调用之后添加 BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL) 以告诉 OpenSSL 所有输入都出现在没有换行符的单行中。

于 2013-10-02T15:22:41.173 回答