Skip to content

Commit

Permalink
[CBRD-23704] Replace gcrypt usage with openssl (#2406)
Browse files Browse the repository at this point in the history
http://jira.cubrid.org/browse/CBRD-23704

Replaced CRC32 with a new open-source implementation.
Rewritten functions using openss libraryl:
 - sha functions in crypt_opfunc 
 - md5 functions
 - random in crypt_opfunc
 - aes/des
Removed:
 - gcrypt library
 - libgpg-error library
 - old md5 files (replaced by openssl)
  • Loading branch information
radudoros authored Sep 2, 2020
1 parent 6496506 commit 7b314f4
Show file tree
Hide file tree
Showing 31 changed files with 2,097 additions and 4,373 deletions.
115 changes: 0 additions & 115 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -129,12 +129,6 @@ set(WITH_LIBJANSSON_URL "http://www.digip.org/jansson/releases/jansson-2.10.tar.
# editline library sources URL
set(WITH_LIBEDIT_URL "http://thrysoee.dk/editline/libedit-20170329-3.1.tar.gz")

# gpg-error library sources URL
set(WITH_LIBGPG_ERROR_URL "https://gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.27.tar.bz2")

# gcrypt library sources URL
set(WITH_LIBGCRYPT_URL "https://gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.5.6.tar.bz2")

# rapidjson library sources URL
set(WITH_RAPIDJSON_URL "https://github.com/Tencent/rapidjson/archive/v1.1.0.tar.gz")

Expand All @@ -148,15 +142,11 @@ set(WITH_SYSTEM_PREFIX "SYSTEM" CACHE STRING "System library prefix (default: SY
set(WITH_LIBEXPAT "${WITH_EXTERNAL_PREFIX}" CACHE STRING "Build with expat library (default: EXTERNAL)")
set(WITH_LIBJANSSON "${WITH_EXTERNAL_PREFIX}" CACHE STRING "Build with jansson library (default: EXTERNAL)")
set(WITH_LIBEDIT "${WITH_EXTERNAL_PREFIX}" CACHE STRING "Build with editline library (default: EXTERNAL)")
set(WITH_LIBGPG_ERROR "${WITH_EXTERNAL_PREFIX}" CACHE STRING "Build with gpg-error library (default: EXTERNAL)")
set(WITH_LIBGCRYPT "${WITH_EXTERNAL_PREFIX}" CACHE STRING "Build with gcrypt library (default: EXTERNAL)")
set(WITH_LIBNCURSES "${WITH_SYSTEM_PREFIX}" CACHE STRING "Build with ncurses library (default: SYSTEM)")
set(WITH_LIBOPENSSL "${WITH_EXTERNAL_PREFIX}" CACHE STRING "Build with openssl library (default: EXTERNAL)")

message(STATUS "Build with Curses library: ${WITH_LIBNCURSES}")
message(STATUS "Build with editline library: ${WITH_LIBEDIT}")
message(STATUS "Build with gcrypt library: ${WITH_LIBGCRYPT}")
message(STATUS "Build with gpg-error library: ${WITH_LIBGPG_ERROR}")
message(STATUS "Build with expat library: ${WITH_LIBEXPAT}")
message(STATUS "Build with jansson library: ${WITH_LIBJANSSON}")
message(STATUS "Build with openssl library: ${WITH_LIBOPENSSL}")
Expand Down Expand Up @@ -676,11 +666,6 @@ int main() {
include(TestBigEndian)
test_big_endian(WORDS_BIGENDIAN)

find_library(GCRYPT_LIBRARIES gcrypt)
if(GCRYPT_LIBRARIES)
set(HAVE_LIBGCRYPT 1)
endif(GCRYPT_LIBRARIES)

if(UNIX)
include(FindThreads)
endif(UNIX)
Expand Down Expand Up @@ -1071,106 +1056,6 @@ endif()
list(APPEND EP_LIBS ${LZ4_LIBS})
list(APPEND EP_INCLUDES ${LZ4_INCLUDES})

# WITH_LIBGPG_ERROR can have multiple values with different meanings
# on Linux:
# * "EXTERNAL" - (default) builds gpg-error library from URL stored in ${WITH_LIBGPG_ERROR_URL} uses the library created by the build
# * "SYSTEM" - use gpg-error library located in:
# ${WITH_EXTERNAL_LIBS_PATH}
# ${WITH_LIBGPG_ERROR_ROOT_PATH}/lib
# use gpg-error headers located in:
# ${WITH_EXTERNAL_HEADERS_PATH}
# ${WITH_LIBGPG_ERROR_ROOT_PATH}/include
set(LIBGPG_ERROR_TARGET libgpg-error)
if(UNIX)
if(WITH_LIBGPG_ERROR STREQUAL "EXTERNAL")
externalproject_add(${LIBGPG_ERROR_TARGET}
URL ${WITH_LIBGPG_ERROR_URL}
TIMEOUT 600
DOWNLOAD_NO_PROGRESS 1
CONFIGURE_COMMAND ${DEFAULT_CONFIGURE_OPTS} --enable-maintainer-mode --disable-doc --disable-tests
BUILD_COMMAND make all AUTOCONF=: AUTOHEADER=: AUTOMAKE=: ACLOCAL=:
INSTALL_COMMAND make install AUTOCONF=: AUTOHEADER=: AUTOMAKE=: ACLOCAL=:
)
set(LIBGPG_ERROR_LIBS ${CMAKE_CURRENT_BINARY_DIR}/external/lib/libgpg-error.a)
set(LIBGPG_ERROR_INCLUDES ${CMAKE_CURRENT_BINARY_DIR}/external/include)
elseif(WITH_LIBGPG_ERROR STREQUAL "SYSTEM")
find_library(LIBGPG_ERROR_LIBS NAMES libgpg-error.a PATHS ${WITH_EXTERNAL_LIBS_PATH} ${WITH_LIBGPG_ERROR_ROOT_PATH}/lib REQUIRED)
find_path(LIBGPG_ERROR_INCLUDES NAMES gpg-error.h gpgrt.h PATHS ${WITH_EXTERNAL_HEADERS_PATH} ${WITH_LIBGPG_ERROR_ROOT_PATH}/include REQUIRED)

message(STATUS "Found gpg-error library: ${LIBGPG_ERROR_LIBS}")
message(STATUS "Found gpg-error headers: ${LIBGPG_ERROR_INCLUDES}")
endif()
elseif(WIN32)
# use bundled
set (LIBGPG_ERROR_DIR ${WINDOWS_EXTERNAL_DIR}/gpg-error)
set (LIBGPG_ERROR_LIBS ${LIBGPG_ERROR_DIR}/lib/gpg-error.lib)
set (LIBGPG_ERROR_INCLUDES ${LIBGPG_ERROR_DIR}/include)
SET (LIBGPG_ERROR_DLL ${LIBGPG_ERROR_DIR}/bin/gpg-error.dll)
add_custom_target(${LIBGPG_ERROR_TARGET}
COMMAND ${CMAKE_COMMAND} -E echo " copying ${LIBGPG_ERROR_DLL} to ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/gpg-error.dll"
COMMAND ${CMAKE_COMMAND} -E copy ${LIBGPG_ERROR_DLL} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/gpg-error.dll
)
endif()
list(APPEND EP_INCLUDES ${LIBGPG_ERROR_INCLUDES})
list(APPEND EP_LIBS ${LIBGPG_ERROR_LIBS})
if (TARGET ${LIBGPG_ERROR_TARGET})
list(APPEND EP_TARGETS ${LIBGPG_ERROR_TARGET})
endif(TARGET ${LIBGPG_ERROR_TARGET})

# WITH_LIBGCRYPT can have multiple values with different meanings
# on Linux:
# * "EXTERNAL" - (default) builds gcrypt library from URL stored in ${LIBGCRYPT_TARGET} uses the library created by the build
# * "SYSTEM" - use gcrypt library located in:
# ${WITH_EXTERNAL_LIBS_PATH}
# ${WITH_LIBGCRYPT_ROOT_PATH}/lib
# use gcrypt headers located in:
# ${WITH_EXTERNAL_HEADERS_PATH}
# ${WITH_LIBGCRYPT_ROOT_PATH}/include
set(LIBGCRYPT_TARGET libgcrypt)
if(WITH_LIBGCRYPT STREQUAL "EXTERNAL")
if(UNIX)
if(TARGET ${LIBGPG_ERROR_TARGET})
set(WITH_LIBGPG_ERROR_PREFIX "--with-gpg-error-prefix=${CMAKE_CURRENT_BINARY_DIR}/external")
endif()
externalproject_add(${LIBGCRYPT_TARGET}
URL ${WITH_LIBGCRYPT_URL}
TIMEOUT 600
DOWNLOAD_NO_PROGRESS 1
CONFIGURE_COMMAND ${DEFAULT_CONFIGURE_OPTS} CPPFLAGS=-I${CMAKE_CURRENT_BINARY_DIR}/external/include --enable-maintainer-mode ${WITH_LIBGPG_ERROR_PREFIX}
BUILD_COMMAND make all AUTOCONF=: AUTOHEADER=: AUTOMAKE=: ACLOCAL=:
INSTALL_COMMAND make install AUTOCONF=: AUTOHEADER=: AUTOMAKE=: ACLOCAL=:
)

set(LIBGCRYPT_LIBS ${CMAKE_CURRENT_BINARY_DIR}/external/lib/libgcrypt.a)
set(LIBGCRYPT_INCLUDES ${CMAKE_CURRENT_BINARY_DIR}/external/include)
else(UNIX)
set(LIBGCRYPT_DIR ${WINDOWS_EXTERNAL_DIR}/gcrypt)
set(LIBGCRYPT_LIBS ${LIBGCRYPT_DIR}/lib/gcrypt.lib)
set(LIBGCRYPT_INCLUDES ${LIBGCRYPT_DIR}/include)
set(LIBGCRYPT_DLL ${LIBGCRYPT_DIR}/bin/gcrypt.dll)
add_custom_target(libgcrypt
COMMAND ${CMAKE_COMMAND} -E echo " copying ${LIBGCRYPT_DLL} to ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/gcrypt.dll"
COMMAND ${CMAKE_COMMAND} -E copy ${LIBGCRYPT_DLL} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/gcrypt.dll
)
endif(UNIX)
elseif(WITH_LIBGCRYPT STREQUAL "SYSTEM")
if(UNIX)
find_library(LIBGCRYPT_LIBS NAMES libgcrypt.a PATHS ${WITH_EXTERNAL_LIBS_PATH} ${WITH_LIBGCRYPT_ROOT_PATH}/lib REQUIRED)
find_path(LIBGCRYPT_INCLUDES NAMES gcrypt.h PATHS ${WITH_EXTERNAL_HEADERS_PATH} ${WITH_LIBGCRYPT_ROOT_PATH}/include REQUIRED)

message(STATUS "Found gcrypt library: ${LIBGCRYPT_LIBS}")
message(STATUS "Found gcrypt headers: ${LIBGCRYPT_INCLUDES}")
endif(UNIX)
endif()
list(APPEND EP_INCLUDES ${LIBGCRYPT_INCLUDES})
list(APPEND EP_LIBS ${LIBGCRYPT_LIBS})
if (TARGET ${LIBGCRYPT_TARGET})
list(APPEND EP_TARGETS ${LIBGCRYPT_TARGET})
if(TARGET ${LIBGPG_ERROR_TARGET})
add_dependencies(${LIBGCRYPT_TARGET} ${LIBGPG_ERROR_TARGET})
endif(TARGET ${LIBGPG_ERROR_TARGET})
endif(TARGET ${LIBGCRYPT_TARGET})

# WITH_LOBOPENSSL can have multiple values with different meanings
# on Linux:
# * "EXTERNAL" - (default) builds openssl library from URL stored in ${WITH_LIBOPENSSL_URL} uses the library created by the build
Expand Down
2 changes: 1 addition & 1 deletion cmake/CPackOptions.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ elseif(CPACK_GENERATOR STREQUAL "RPM")
set(CPACK_RPM_PACKAGE_LICENSE "GPLv2+ and BSD")
set(CPACK_RPM_PACKAGE_GROUP "Applications/Databases")
set(CPACK_RPM_PACKAGE_URL "http://www.cubrid.org")
set(CPACK_RPM_PACKAGE_REQUIRES "ncurses libstdc++ libgcrypt coreutils /sbin/chkconfig /usr/sbin/useradd /usr/sbin/groupadd")
set(CPACK_RPM_PACKAGE_REQUIRES "ncurses libstdc++ coreutils /sbin/chkconfig /usr/sbin/useradd /usr/sbin/groupadd")
set(CPACK_RPM_PACKAGE_ARCHITECTURE "${CMAKE_HOST_SYSTEM_PROCESSOR}")
set(CPACK_RPM_PACKAGE_RELOCATABLE FALSE)
set(CPACK_RPM_PRE_INSTALL_SCRIPT_FILE "${CMAKE_SOURCE_DIR}/cmake/CPack_preinstall.sh.in")
Expand Down
2 changes: 0 additions & 2 deletions cs/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,6 @@ set(BASE_SOURCES
${BASE_DIR}/locale_helper.cpp
${BASE_DIR}/locale_support.c
${BASE_DIR}/lockfree_bitmap.cpp
${BASE_DIR}/md5.c
${BASE_DIR}/mem_block.cpp
${BASE_DIR}/memory_alloc.c
${BASE_DIR}/memory_hash.c
Expand Down Expand Up @@ -417,7 +416,6 @@ SET_SOURCE_FILES_PROPERTIES(
PROPERTIES LANGUAGE CXX
)
SET_SOURCE_FILES_PROPERTIES(
${BASE_DIR}/md5.c
${CSQL_GRAMMAR_OUTPUT}
${CSQL_LEXER_OUTPUT}
${ESQL_GRAMMAR_OUTPUT}
Expand Down
6 changes: 0 additions & 6 deletions cubrid/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,6 @@ set(BASE_SOURCES
${BASE_DIR}/lockfree_transaction_descriptor.cpp
${BASE_DIR}/lockfree_transaction_table.cpp
${BASE_DIR}/lockfree_transaction_system.cpp
${BASE_DIR}/md5.c
${BASE_DIR}/mem_block.cpp
${BASE_DIR}/memory_alloc.c
${BASE_DIR}/memory_hash.c
Expand Down Expand Up @@ -430,11 +429,6 @@ SET_SOURCE_FILES_PROPERTIES(
PROPERTIES LANGUAGE CXX
)

SET_SOURCE_FILES_PROPERTIES(
${BASE_DIR}/md5.c
PROPERTIES LANGUAGE C
)

set (CUBRID_LIB_SOURCES
${BASE_SOURCES}
${COMMUNICATION_SOURCES}
Expand Down
5 changes: 1 addition & 4 deletions sa/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,6 @@ set(BASE_SOURCES
${BASE_DIR}/databases_file.c
${BASE_DIR}/encryption.c
${BASE_DIR}/sha1.c
${BASE_DIR}/md5.c
${BASE_DIR}/base64.c
${BASE_DIR}/error_context.cpp
${BASE_DIR}/error_manager.c
Expand Down Expand Up @@ -532,7 +531,6 @@ SET_SOURCE_FILES_PROPERTIES(
)

SET_SOURCE_FILES_PROPERTIES(
${BASE_DIR}/md5.c
${CSQL_GRAMMAR_OUTPUT}
${CSQL_LEXER_OUTPUT}
${ESQL_GRAMMAR_OUTPUT}
Expand Down Expand Up @@ -611,10 +609,9 @@ endif(UNIX)
target_external_dependencies(cubridsa
LIBEXPAT
LIBJANSSON
LIBGPG_ERROR
LIBGCRYPT
LIBEXPAT
LIBEDIT
LIBOPENSSL
LZ4
)
target_include_directories(cubridsa PRIVATE
Expand Down
Loading

0 comments on commit 7b314f4

Please sign in to comment.