summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatías Fonzo <selk@dragora.org>2020-01-20 19:33:12 -0300
committerMatías Fonzo <selk@dragora.org>2020-01-20 19:33:12 -0300
commit9cd1493c36e94b9bfd36e35bc197ecf87634970e (patch)
tree0b2c5dbce77cecfee884f06bfc9b04d35599ddbf
parent07369b58fef595b208248a598a8ec14abbafac90 (diff)
downloadtqca-tls-9cd1493c36e94b9bfd36e35bc197ecf87634970e.tar.gz
tqca-tls-9cd1493c36e94b9bfd36e35bc197ecf87634970e.zip
Added LibreSSL detection
Signed-off-by: Matías Fonzo <selk@dragora.org>
-rw-r--r--qca-tls.cpp12
1 files 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);