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

Chr*_*ris 8 iphone encryption openssl smime content-management-system

当我尝试在OpenSSL中使用CMS解密加密的S/MIME消息时,decrypt方法返回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);
}
Run Code Online (Sandbox Code Playgroud)

...错误变量为0表示发生错误,错误代码ERR_get_error()也为0.此外ERR_print_errors_fp(),不会打印任何表示没有错误的内容.

上述代码的输出:

Error Decrypting Data
error code: 0
Assertion failed: (false)
Run Code Online (Sandbox Code Playgroud)

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

Chr*_*ris 1

经过几周的尝试不同的方法和挫折后,我最终使用了 OpenSSL 的 PKCS#7 解密。Due CMS 基本上基于 PKCS#7,它可以很好地使用 CMS 进行加密并使用 PKCS7 进行解密。

我用过的方法是pkcs7_decrypt()