From b5ccd52c0933fd7556da601cdc1a6e5254f90b11 Mon Sep 17 00:00:00 2001 From: Leonid Fedorov Date: Thu, 17 Feb 2022 14:22:49 +0000 Subject: [PATCH] OpenSSL 3 support for Columnstore --- dbcon/joblist/CMakeLists.txt | 2 +- tools/passwd/CMakeLists.txt | 7 ++++--- tools/passwd/cskeys.cpp | 7 +++++++ tools/passwd/secrets.cpp | 13 +++++++++++++ 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/dbcon/joblist/CMakeLists.txt b/dbcon/joblist/CMakeLists.txt index 77fca4a5e..1bbff02b4 100644 --- a/dbcon/joblist/CMakeLists.txt +++ b/dbcon/joblist/CMakeLists.txt @@ -59,7 +59,7 @@ set(joblist_LIB_SRCS ${ENGINE_SRC_DIR}/tools/passwd/secrets.cpp) add_library(joblist SHARED ${joblist_LIB_SRCS}) - +target_include_directories(joblist BEFORE PUBLIC ${OPENSSL_INCLUDE_DIR}) add_dependencies(joblist loggingcpp) install(TARGETS joblist DESTINATION ${ENGINE_LIBDIR} COMPONENT columnstore-engine) diff --git a/tools/passwd/CMakeLists.txt b/tools/passwd/CMakeLists.txt index cc9e7e330..836b2219a 100644 --- a/tools/passwd/CMakeLists.txt +++ b/tools/passwd/CMakeLists.txt @@ -2,15 +2,16 @@ include_directories( ${ENGINE_COMMON_INCLUDES} ) ########### next target ############### - set(cspasswd_SRCS cspasswd.cpp secrets.cpp) set(cskeys_SRCS cskeys.cpp secrets.cpp) add_executable(cspasswd ${cspasswd_SRCS}) add_executable(cskeys ${cskeys_SRCS}) -target_link_libraries(cspasswd ${ENGINE_LDFLAGS} ${MARIADB_CLIENT_LIBS} ${ENGINE_EXEC_LIBS}) -target_link_libraries(cskeys ${ENGINE_LDFLAGS} ${MARIADB_CLIENT_LIBS} ${ENGINE_EXEC_LIBS}) +target_include_directories(cspasswd BEFORE PUBLIC ${OPENSSL_INCLUDE_DIR}) +target_include_directories(cskeys BEFORE PUBLIC ${OPENSSL_INCLUDE_DIR}) +target_link_libraries(cspasswd ${ENGINE_LDFLAGS} ${MARIADB_CLIENT_LIBS} ${ENGINE_EXEC_LIBS} ${SSL_LIBRARIES}) +target_link_libraries(cskeys ${ENGINE_LDFLAGS} ${MARIADB_CLIENT_LIBS} ${ENGINE_EXEC_LIBS} ${SSL_LIBRARIES}) install(TARGETS cspasswd DESTINATION ${ENGINE_BINDIR} COMPONENT columnstore-engine) install(TARGETS cskeys DESTINATION ${ENGINE_BINDIR} COMPONENT columnstore-engine) diff --git a/tools/passwd/cskeys.cpp b/tools/passwd/cskeys.cpp index 181503605..f0d61959c 100644 --- a/tools/passwd/cskeys.cpp +++ b/tools/passwd/cskeys.cpp @@ -18,10 +18,17 @@ #include #include #include +#include #include "secrets.h" #include "mcsconfig.h" +#ifdef OPENSSL_VERSION_PREREQ +#if OPENSSL_VERSION_PREREQ(3,0) + #define EVP_CIPHER_key_length EVP_CIPHER_get_key_length +#endif +#endif + using std::string; using ByteVec = std::vector; diff --git a/tools/passwd/secrets.cpp b/tools/passwd/secrets.cpp index a7635e880..aac32ffa5 100644 --- a/tools/passwd/secrets.cpp +++ b/tools/passwd/secrets.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #define BOOST_SPIRIT_THREADSAFE #include @@ -34,6 +35,15 @@ using std::string; + +#ifdef OPENSSL_VERSION_PREREQ +#if OPENSSL_VERSION_PREREQ(3,0) + #define EVP_CIPHER_key_length EVP_CIPHER_get_key_length + #define EVP_CIPHER_iv_length EVP_CIPHER_get_iv_length + #define EVP_CIPHER_blocksize EVP_CIPHER_get_blocksize +#endif +#endif + const char* const SECRETS_FILENAME = ".secrets"; namespace @@ -469,6 +479,8 @@ string decrypt_password(const string& input) * @param input Encrypted password in hex form * @return Decrypted password or empty on error */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" string decrypt_password_old(const ByteVec& key, const ByteVec& iv, const std::string& input) { string rval; @@ -501,6 +513,7 @@ string decrypt_password_old(const ByteVec& key, const ByteVec& iv, const std::st } return rval; } +#pragma GCC diagnostic pop string decrypt_password(const ByteVec& key, const std::string& input) {