error: no matching function for call to 'EVP_EncryptInit_ex'

Я пытался скомпилировать litecoind для криптовалюты litecoin, но произошла ошибка.

Исходники брал из новейшей версии litecoin.

Как я понимаю это связано с версией openssl.

Перед этим была ошибка

error: field 'ctx' has incomplete type EVP_CIPHER_CTX.

Так как я на новом openssl, то заменил на EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new(); и ошибка пропала но появилась новая.

Вот часть кода:

bool CCrypter::Decrypt(const std::vector<unsigned char>& vchCiphertext, CKeyingMaterial& vchPlaintext)
{
    if (!fKeySet)
        return false;

    // plaintext will always be equal to or lesser than length of ciphertext
    int nLen = vchCiphertext.size();
    int nPLen = nLen, nFLen = 0;

    vchPlaintext = CKeyingMaterial(nPLen);

    EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new();

    bool fOk = true;

    EVP_CIPHER_CTX_init(ctx);
    if (fOk) fOk = EVP_DecryptInit_ex(&ctx, EVP_aes_256_cbc(), NULL, chKey, chIV);
    if (fOk) fOk = EVP_DecryptUpdate(&ctx, &vchPlaintext[0], &nPLen, &vchCiphertext[0], nLen);
    if (fOk) fOk = EVP_DecryptFinal_ex(&ctx, (&vchPlaintext[0])+nPLen, &nFLen);
    EVP_CIPHER_CTX_free(ctx);


    if (!fOk) return false;

    vchPlaintext.resize(nPLen + nFLen);
    return true;
}

Я искал ответ, но не нашёл подходящего для меня.


Ответы (0 шт):