2012-02-24 21 views
7

OpenSSLでCMSを使用して暗号化されたS/MIMEメッセージを解読しようとすると、decryptメソッドは0を意味するme 0を返します。OpenSSL解読は失敗しますが、エラーコードは0です

OpenSSL.org言う..

CMS_decrypt()は失敗の成功のための1または0のいずれかを返します。私はこれを実行すると、エラーは、エラー変数は、エラーが発生したとERR_get_error()からのエラーコードであることを意味する0 ... ERR_get_errorから

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

を(3)

を得ることができますまた、ERR_print_errors_fp()は、何もエラーがないことを意味するものは印刷しません。

上記のコードの出力:

Error Decrypting Data 
error code: 0 
Assertion failed: (false) 

誰が間違ってここに何が起こっているかの提案を持っていますか?ありがとう

+1

復号化に成功しましたか?そうであれば、エラーが意図したとおりに0を返すかどうかを確認するか、コントロールステートメント –

+0

の "ERR_get_error()"値を使用してください。 : -/BIOは空です。 mem BIOの代わりにBIOファイルを作成しても、新しいファイルが作成されますが、何も書き込まれません... – Chris

答えて

0

さまざまなアプローチと欲求不満を試みて何週間も経った後、私はOpenSSLのPKCS#7解読を使用してしまいました。 デューティCMSは基本的にPKCS#7に基づいていますが、CMSを使用した暗号化とPKCS7を使用した暗号化で正常に動作します。

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

0

ERR_peek_last_error()は何を返すのですか?

+0

すべてを試したので0だったと思いますが、(openssl)エラーはありませんでした。 – Chris

関連する問題