7

OpenSSL에서 CMS를 사용하여 암호화 된 S/MIME 메시지의 암호를 해독하려고하면 암호 해독 방법이 성공하지 못했습니다. OpenSSL.org 말한다OpenSSL 암호 해독은 실패하지만 오류 코드는 0입니다.

..

CMS_decrypt()는 실패를 성공을위한 1 또는 0 중 하나를 반환합니다. 오류 (3)

I 이것을 실행 는 ...

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

... ERR_get_error()에서 오류 코드가 에러 변수가 에러가 발생한 것을 의미 0이고 ERR_get_error 얻을 수있다 또한 ERR_print_errors_fp()은 오류가 없다는 것을 인쇄하지 않습니다.

상기 코드의 출력 :

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

사람이 잘못 여기에 무슨 일이 일어나고 있는지 제안이 있습니까? 감사합니다

+1

성공적으로 해독합니까? 그렇다면 오류가 의도 한대로 0을 반환하는지 (반환 값이 우연히 교환되었을 수 있음) 확인하거나 컨트롤 문 –

+0

에서 "ERR_get_error()"값을 사용하는 것이 좋습니다. @ MD-Tech : Nope. : -/바이오가 비어 있습니다. mem BIO 대신 파일 BIO를 만들더라도 새 파일을 만들지 만 그 안에 아무것도 쓰지는 않습니다 ... – Chris

답변

0

다른 접근법과 좌절감을 시도한 지 수 주일이 지난 후에 OpenSSL의 PKCS # 7 해독을 사용하여 끝냈습니다. 만기 된 CMS는 기본적으로 PKCS # 7을 기반으로합니다. CMS를 사용하는 암호화 및 PKCS7을 사용하는 암호 해독과 잘 작동합니다.

내가 사용한 방법은 pkcs7_decrypt()입니다.

0

호기심에서 벗어나서 ERR_peek_last_error()는 무엇을 반환합니까?

+0

모든 것을 시도했지만 아무런 (openssl) 오류도 없었기 때문에 0이라고 생각합니다. . – Chris

관련 문제