El descifrado de OpenSSL falla pero el código de error es 0
-
12-11-2019 - |
Pregunta
Cuando intento descifrar un mensaje S / MIME cifrado utilizando CMS en OpenSSL, el método de descifrado me devuelve 0 que significa no tener éxito.
openssl.org dice ...
cms_decrypt () devuelve 1 para el éxito o 0 por falla.El error se puede obtener de ERR_GET_ERROR (3)
cuando ejecuto esto ...
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 variable de error es 0, lo que significa que se produjo un error y el código de error del
ERR_get_error()
es también 0. Además, generalmenteERR_print_errors_fp()
no imprime nada, lo que significa que no hubo ningún error.La salida del código mencionado anteriormente:
Error Decrypting Data error code: 0 Assertion failed: (false)
¿Alguien tiene una sugerencia de lo que está pasando?Gracias
Solución
Después de muchas semanas de probar diferentes enfoques y frustración, terminé usando PKCS # 7 descifra de OpenSSL. Debido a CMS se basa básicamente en PKCS # 7, funciona bien con el cifrado utilizando CMS y descifrado utilizando PKCS7.
El método que he usado es pkcs7_decrypt()
.