Расшифровка OpenSSL завершается неудачно, но код ошибки равен 0

Когда я пытаюсь расшифровать зашифрованное сообщение S/MIME, используя CMS в OpenSSL, метод расшифровки возвращает мне 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)

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

2 ответа

Решение

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

Метод, который я использовал pkcs7_decrypt(),

Из любопытства, что возвращает ERR_peek_last_error()?

Другие вопросы по тегам