diff --git a/cmake/FindOpenSSL.cmake b/cmake/FindOpenSSL.cmake index 5d02bbe0b35..7ea43b1eb81 100644 --- a/cmake/FindOpenSSL.cmake +++ b/cmake/FindOpenSSL.cmake @@ -81,3 +81,16 @@ check_symbol_exists( if( HAVE_TLS1_FUNC AND HAVE_TLS1_SYMB ) add_definitions( -DHAVE_TLS1 ) endif() + +check_function_exists(DH_compute_key_padded HAVE_DH_PADDED_FUNC) +check_symbol_exists( + DH_compute_key_padded + ${OPENSSL_INCLUDE_DIR}/openssl/dh.h + HAVE_DH_PADDED_SYMB) +if( HAVE_DH_PADDED_FUNC) + if( HAVE_DH_PADDED_SYMB ) + add_definitions( -DHAVE_DH_PADDED ) + else() + add_definitions( -DHAVE_DH_PADDED_FUNC ) + endif() +endif() diff --git a/src/XrdCrypto/XrdCryptosslCipher.cc b/src/XrdCrypto/XrdCryptosslCipher.cc index 858b6fd1a3a..f265d4260a5 100644 --- a/src/XrdCrypto/XrdCryptosslCipher.cc +++ b/src/XrdCrypto/XrdCryptosslCipher.cc @@ -133,7 +133,10 @@ static int DSA_set0_key(DSA *d, BIGNUM *pub_key, BIGNUM *priv_key) } #endif -#if OPENSSL_VERSION_NUMBER < 0x10002000L +#if !defined(HAVE_DH_PADDED) +#if defined(HAVE_DH_PADDED_FUNC) +int DH_compute_key_padded(unsigned char *, const BIGNUM *, DH *); +#else static int DH_compute_key_padded(unsigned char *key, const BIGNUM *pub_key, DH *dh) { int rv, pad; @@ -148,6 +151,7 @@ static int DH_compute_key_padded(unsigned char *key, const BIGNUM *pub_key, DH * return rv + pad; } #endif +#endif //_____________________________________________________________________________ bool XrdCryptosslCipher::IsSupported(const char *cip) diff --git a/src/XrdCrypto/XrdCryptosslCipher.hh b/src/XrdCrypto/XrdCryptosslCipher.hh index 4c03ef8a19f..d87264959fd 100644 --- a/src/XrdCrypto/XrdCryptosslCipher.hh +++ b/src/XrdCrypto/XrdCryptosslCipher.hh @@ -68,8 +68,6 @@ public: int liv, const char *iv); XrdCryptosslCipher(XrdSutBucket *b); XrdCryptosslCipher(bool padded, int len, char *pub, int lpub, const char *t); - XrdCryptosslCipher(int len, char *pub, int lpub, const char *t) - : XrdCryptosslCipher(false,len,pub,lpub,t) { } XrdCryptosslCipher(const XrdCryptosslCipher &c); virtual ~XrdCryptosslCipher(); diff --git a/src/XrdCrypto/XrdCryptosslFactory.cc b/src/XrdCrypto/XrdCryptosslFactory.cc index 923cecbdf4e..cc2337389a8 100644 --- a/src/XrdCrypto/XrdCryptosslFactory.cc +++ b/src/XrdCrypto/XrdCryptosslFactory.cc @@ -188,10 +188,10 @@ bool XrdCryptosslFactory::SupportedCipher(const char *t) bool XrdCryptosslFactory::HasPaddingSupport() { // Returns true if cipher padding is supported -#if OPENSSL_VERSION_NUMBER < 0x10002000L - return false; -#else +#if defined(HAVE_DH_PADDED) || defined(HAVE_DH_PADDED_FUNC) return true; +#else + return false; #endif }