【发布时间】:2012-03-15 00:49:00
【问题描述】:
当我尝试在 OpenSSL 中使用 CMS 解密加密的 S/MIME 消息时,解密方法返回我 0,代表不成功。
OpenSSL.org 说..
CMS_decrypt() 返回 1 表示成功或 0 表示失败。错误可以从ERR_get_error(3)获取
当我运行这个...
out = BIO_new(BIO_s_mem());
if (!out)
assert(false);
int error = CMS_decrypt(cms, rkey, rcert, out, NULL, 0);
if (!error) {
fprintf(stderr, "Error Decrypting Data\n");
printf("error code: %d\n", ERR_get_error());
ERR_print_errors_fp(stderr);
assert(false);
}
...错误变量为 0,表示发生错误,ERR_get_error() 的错误代码也为 0。此外,ERR_print_errors_fp() 不打印任何内容,表示没有错误。
上述代码的输出:
Error Decrypting Data
error code: 0
Assertion failed: (false)
有没有人建议这里出了什么问题?谢谢
【问题讨论】:
-
解密成功了吗?如果是这样,可能值得检查错误是否按预期返回 0(返回值可能已意外交换)或仅在控制语句中使用“ERR_get_error()”值
-
@MD-Tech:不。 :-/ BIO 是空的。即使我创建一个文件 BIO 而不是 mem BIO 它会创建新文件但不会在其中写入任何内容...
标签: iphone content-management-system openssl encryption smime