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, generalmente ERR_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

¿Fue útil?

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().

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top