当我尝试在OpenSSL中使用CMS解密加密的S / MIME邮件时,decrypt方法返回0代表didn未成功。
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 :(得分:1)
经过数周尝试不同的方法和挫折后,我最终使用了OpenSSL的PKCS#7解密。 由于CMS基本上是基于PKCS#7,它使用CMS加密和使用PKCS7解密时可以正常工作。
我使用的方法是pkcs7_decrypt()
。