OpenSSL解密失败但错误代码为0

时间:2012-02-24 15:06:49

标签: iphone content-management-system openssl encryption smime

当我尝试在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)

有没有人建议这里出了什么问题?感谢

1 个答案:

答案 0 :(得分:1)

经过数周尝试不同的方法和挫折后,我最终使用了OpenSSL的PKCS#7解密。 由于CMS基本上是基于PKCS#7,它使用CMS加密和使用PKCS7解密时可以正常工作。

我使用的方法是pkcs7_decrypt()

相关问题