8

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

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

4

1 回答 1

1

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

我使用的方法是pkcs7_decrypt().

于 2012-05-17T17:32:17.703 回答