Расшифровка OpenSSL завершается неудачно, но код ошибки равен 0 - PullRequest
8 голосов
/ 24 февраля 2012

Когда я пытаюсь расшифровать зашифрованное S / MIME-сообщение, используя CMS в OpenSSL, метод decrypt возвращает мне 0, что означает «не удалось».

OpenSSL.org сообщает ..

CMS_decrypt () возвращает 1 в случае успеха или 0 в случае ошибки.Ошибка может быть получена из ERR_get_error (3)

Когда я запускаю это ...

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);
}

... переменная ошибки равна 0, что означает, что произошла ошибка, икод ошибки от ERR_get_error() также равен 0. Кроме того, ERR_print_errors_fp() ничего не печатает, что означает, что ошибки не было.

Вывод вышеуказанного кода:

Error Decrypting Data
error code: 0
Assertion failed: (false)

Кто-нибудьесть предложение, что здесь происходит не так?Спасибо

1 Ответ

1 голос
/ 17 мая 2012

После многих недель попыток различных подходов и разочарований я в конечном итоге использовал расшифровку PKCS # 7 OpenSSL. Поскольку CMS в основном основан на PKCS # 7, он прекрасно работает с шифрованием с использованием CMS и дешифрованием с использованием PKCS7.

Я использовал метод pkcs7_decrypt().

...