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;
}
Я искал ответ, но не нашёл подходящего для меня.