Kiedy próbuję odszyfrować zaszyfrowaną wiadomość S/MIME za pomocą CMS w OpenSSL, metoda odszyfrowywania zwraca mi 0, co oznacza, że się nie udało.Odszyfrowanie OpenSSL kończy się niepowodzeniem, ale kod błędu to 0
OpenSSL.org mówi ..
CMS_decrypt() zwraca albo 1 lub 0 dla sukcesu na niepowodzenie. Błąd może być otrzymany z ERR_get_error (3)
gdy ten ...
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);
}
... zmienną błędu 0, co oznacza, wystąpił błąd i kod błędu jest ERR_get_error()
również 0. Dodatkowo ERR_print_errors_fp()
nie drukuje niczego co oznacza, że nie wystąpił błąd.
Wyjście ze wspomnianego kodu:
Error Decrypting Data
error code: 0
Assertion failed: (false)
Czy ktoś ma sugestię, co się dzieje niewłaściwy tutaj? Dzięki
czy odszyfrowuje się pomyślnie? Jeśli tak, warto sprawdzić, czy błąd zwraca 0 zgodnie z zamierzeniem (wartości zwracane mogły zostać przypadkowo zamienione) lub po prostu użyć wartości "ERR_get_error()" w instrukcji sterowania –
@ MD-Tech: Nie. : -/BIO jest pusty. Nawet jeśli utworzę plik BIO zamiast memu BIO, to utworzy nowy plik, ale niczego w nim nie zapisze ... – Chris