當我嘗試使用OpenSSL中的CMS解密加密的S/MIME郵件時,解密方法返回0,表示未成功。OpenSSL解密失敗,但錯誤代碼爲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)
有沒有人有一個建議是怎麼回事錯在這裏?謝謝
解密成功嗎?如果是這樣,則可能需要檢查錯誤是否按預期返回0(返回值可能已被意外交換),或者僅在控制語句 – 2012-02-24 15:31:04
@ MD-Tech:Nope中使用「ERR_get_error()」值。 : -/BIO是空的。即使我創建文件BIO而不是mem BIO,它會創建新文件但不會寫入任何內容... – Chris 2012-02-24 22:29:06