8

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);
}

...エラー変数は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復号化を使用することになりました。Due CMSは基本的にPKCS#7に基づいており、CMSを使用した暗号化とPKCS7を使用した復号化で正常に機能します。

私が使用した方法はですpkcs7_decrypt()

于 2012-05-17T17:32:17.703 に答える