From 9cd1493c36e94b9bfd36e35bc197ecf87634970e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=ADas=20Fonzo?= Date: Mon, 20 Jan 2020 19:33:12 -0300 Subject: [PATCH] Added LibreSSL detection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Matías Fonzo --- qca-tls.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/qca-tls.cpp b/qca-tls.cpp index b1fb639..b5080ed 100644 --- a/qca-tls.cpp +++ b/qca-tls.cpp @@ -57,7 +57,7 @@ static bool lib_generateKeyIV(const EVP_CIPHER *_type, const TQByteArray &data, TQByteArray k, i; unsigned char *kp = 0; unsigned char *ip = 0; -#if OPENSSL_VERSION_NUMBER < 0x10100000L +#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) EVP_CIPHER type = *_type; EVP_CIPHER *loctype = &type; if(keysize != -1) @@ -75,7 +75,7 @@ static bool lib_generateKeyIV(const EVP_CIPHER *_type, const TQByteArray &data, ip = (unsigned char *)i.data(); } int res = EVP_BytesToKey(loctype, EVP_sha1(), (unsigned char *)salt.data(), (unsigned char *)data.data(), data.size(), 1, kp, ip); -#if OPENSSL_VERSION_NUMBER >= 0x10100000L +#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) EVP_CIPHER_meth_free(loctype); #endif if (!res) @@ -187,7 +187,7 @@ public: virtual ~EVPCipherContext() { if(type) { -#if OPENSSL_VERSION_NUMBER < 0x10100000L +#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) EVP_CIPHER_CTX_cleanup(c); OPENSSL_free(c); #else @@ -234,7 +234,7 @@ public: pad = _pad; type = getType(mode); r.resize(0); -#if OPENSSL_VERSION_NUMBER < 0x10100000L +#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) c = (EVP_CIPHER_CTX*)OPENSSL_malloc(sizeof(EVP_CIPHER_CTX)); EVP_CIPHER_CTX_init(c); #else @@ -283,11 +283,11 @@ public: TQByteArray result(EVP_CIPHER_block_size(type)); int olen; if(dir == TQCA::Encrypt) { - if(!EVP_EncryptFinal(c, (unsigned char *)result.data(), &olen)) + if(!EVP_EncryptFinal_ex(c, (unsigned char *)result.data(), &olen)) return false; } else { - if(!EVP_DecryptFinal(c, (unsigned char *)result.data(), &olen)) + if(!EVP_DecryptFinal_ex(c, (unsigned char *)result.data(), &olen)) return false; } result.resize(olen);