La decrittografia openssl fallisce ma il codice di errore è 0
-
12-11-2019 - |
Domanda
Quando provo a decifrare un messaggio S / MIME crittografato utilizzando CMS in openssl, il metodo Decrypt mi restituisce 0 che sta per non aver avuto successo.
openssl.org dice ..
.cms_decrypt () restituisce 1 per il successo o 0 per il fallimento.L'errore può essere ottenuto da err_get_error (3)
Quando eseguo questo ...
.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); }
... La variabile di errore è 0 che indica che si è verificato un errore e il codice di errore da
ERR_get_error()
è anche 0. Inoltre,ERR_print_errors_fp()
non stampare nulla che significa che non ci fosse alcun errore.L'uscita dal codice sopra menzionato:
.Error Decrypting Data error code: 0 Assertion failed: (false)
Qualcuno ha un suggerimento cosa sta andando storto qui?Grazie
Soluzione
Dopo molte settimane di provarsi diversi approcci e frustrazione che ho finito usando PKCS # 7 Decrypt di openssl. Due CMS è fondamentalmente basato su PKCS # 7 funziona bene con la crittografia utilizzando CMS e decrittografia utilizzando PKCS7.
Il metodo che ho usato è pkcs7_decrypt()
.