Added LibreSSL detection

Signed-off-by: Matías Fonzo <selk@dragora.org>
pull/4/head
Matías Fonzo 4 years ago
parent 07369b58fe
commit 9cd1493c36
Signed by: selk
GPG Key ID: 3AAF1CEC203A99D5

@ -57,7 +57,7 @@ static bool lib_generateKeyIV(const EVP_CIPHER *_type, const TQByteArray &data,
TQByteArray k, i; TQByteArray k, i;
unsigned char *kp = 0; unsigned char *kp = 0;
unsigned char *ip = 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 type = *_type;
EVP_CIPHER *loctype = &type; EVP_CIPHER *loctype = &type;
if(keysize != -1) if(keysize != -1)
@ -75,7 +75,7 @@ static bool lib_generateKeyIV(const EVP_CIPHER *_type, const TQByteArray &data,
ip = (unsigned char *)i.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); 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); EVP_CIPHER_meth_free(loctype);
#endif #endif
if (!res) if (!res)
@ -187,7 +187,7 @@ public:
virtual ~EVPCipherContext() virtual ~EVPCipherContext()
{ {
if(type) { if(type) {
#if OPENSSL_VERSION_NUMBER < 0x10100000L #if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
EVP_CIPHER_CTX_cleanup(c); EVP_CIPHER_CTX_cleanup(c);
OPENSSL_free(c); OPENSSL_free(c);
#else #else
@ -234,7 +234,7 @@ public:
pad = _pad; pad = _pad;
type = getType(mode); type = getType(mode);
r.resize(0); 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)); c = (EVP_CIPHER_CTX*)OPENSSL_malloc(sizeof(EVP_CIPHER_CTX));
EVP_CIPHER_CTX_init(c); EVP_CIPHER_CTX_init(c);
#else #else
@ -283,11 +283,11 @@ public:
TQByteArray result(EVP_CIPHER_block_size(type)); TQByteArray result(EVP_CIPHER_block_size(type));
int olen; int olen;
if(dir == TQCA::Encrypt) { 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; return false;
} }
else { else {
if(!EVP_DecryptFinal(c, (unsigned char *)result.data(), &olen)) if(!EVP_DecryptFinal_ex(c, (unsigned char *)result.data(), &olen))
return false; return false;
} }
result.resize(olen); result.resize(olen);

Loading…
Cancel
Save