iphone - El descifrado de OpenSSL falla pero el código de error es 0
content-management-system encryption (2)
Por curiosidad, ¿qué devuelve ERR_peek_last_error ()?
Cuando trato de descifrar un mensaje S / MIME encriptado usando CMS en OpenSSL, el método de descifrado me devuelve 0 que significa que no tuvo éxito.
OpenSSL.org dice ...
CMS_decrypt () devuelve 1 para el éxito o 0 para el fracaso. El error se puede obtener de ERR_get_error (3)
Cuando corro 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 ocurrió un error y el código de error de ERR_get_error()
también es 0. Además, ERR_print_errors_fp()
no imprime nada, lo que significa que no hubo ningún error.
El resultado del código mencionado anteriormente:
Error Decrypting Data
error code: 0
Assertion failed: (false)
¿Alguien tiene una sugerencia de lo que está mal aquí? Gracias
Después de muchas semanas de probar diferentes enfoques y frustraciones, terminé usando el descifrado PKCS # 7 de OpenSSL. Debido a que CMS se basa básicamente en PKCS # 7, funciona bien con cifrado usando CMS y descifrado usando PKCS7.
El método que he usado es pkcs7_decrypt()
.