1
0
mirror of https://github.com/mariadb-corporation/mariadb-connector-c.git synced 2025-08-08 14:02:17 +03:00
Last commit was incomplete
This commit is contained in:
Georg Richter
2024-10-23 13:08:42 +02:00
parent d4a8ca9209
commit 53243b8a7a
4 changed files with 62 additions and 72 deletions

View File

@@ -311,69 +311,64 @@ IF(WITH_SSL STREQUAL "ON")
ENDIF() ENDIF()
ENDIF() ENDIF()
IF(NOT WITH_SSL STREQUAL "OFF") IF(WITH_SSL STREQUAL "OPENSSL")
IF(WITH_SSL STREQUAL "OPENSSL") IF (NOT OPENSSL_FOUND)
IF (NOT OPENSSL_FOUND) FIND_PACKAGE(OpenSSL)
FIND_PACKAGE(OpenSSL) ENDIF()
IF(OPENSSL_FOUND)
ADD_DEFINITIONS(-DHAVE_OPENSSL -DHAVE_TLS)
SET(SSL_SOURCES "${CC_SOURCE_DIR}/libmariadb/secure/openssl.c"
"${CC_SOURCE_DIR}/libmariadb/secure/openssl_crypt.c")
SET(SSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY})
IF(WIN32 AND EXISTS ${OPENSSL_INCLUDE_DIR}/openssl/applink.c)
SET(HAVE_OPENSSL_APPLINK_C 1)
ENDIF() ENDIF()
IF(OPENSSL_FOUND) IF(EXISTS ${OPENSSL_INCLUDE_DIR}/openssl/evp.h)
ADD_DEFINITIONS(-DHAVE_OPENSSL -DHAVE_TLS) SET(HAVE_evp_pkey 1)
SET(SSL_SOURCES "${CC_SOURCE_DIR}/libmariadb/secure/openssl.c" ENDIF()
"${CC_SOURCE_DIR}/libmariadb/secure/openssl_crypt.c") INCLUDE_DIRECTORIES(BEFORE ${OPENSSL_INCLUDE_DIR})
SET(SSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY})
IF(WIN32 AND EXISTS ${OPENSSL_INCLUDE_DIR}/openssl/applink.c)
SET(HAVE_OPENSSL_APPLINK_C 1)
ENDIF()
IF(EXISTS ${OPENSSL_INCLUDE_DIR}/openssl/evp.h)
SET(HAVE_evp_pkey 1)
ENDIF()
INCLUDE_DIRECTORIES(BEFORE ${OPENSSL_INCLUDE_DIR})
TRY_RUN(LIBRESSL_RESULT HAVE_LIBRESSL TRY_RUN(LIBRESSL_RESULT HAVE_LIBRESSL
${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}
${CC_SOURCE_DIR}/cmake/libressl_version.c ${CC_SOURCE_DIR}/cmake/libressl_version.c
COMPILE_DEFINITIONS "-I${OPENSSL_INCLUDE_DIR}" COMPILE_DEFINITIONS "-I${OPENSSL_INCLUDE_DIR}"
RUN_OUTPUT_VARIABLE LIBRESSL_VERSION) RUN_OUTPUT_VARIABLE LIBRESSL_VERSION)
IF(HAVE_LIBRESSL) IF(HAVE_LIBRESSL)
ADD_DEFINITIONS(-DHAVE_LIBRESSL) ADD_DEFINITIONS(-DHAVE_LIBRESSL)
SET(TLS_LIBRARY_VERSION ${LIBRESSL_VERSION}) SET(TLS_LIBRARY_VERSION ${LIBRESSL_VERSION})
ELSE()
SET(TLS_LIBRARY_VERSION "OpenSSL ${OPENSSL_VERSION}")
ENDIF()
ELSE() ELSE()
MESSAGE1(TLS_LIBRARY_VERSION "OpenSSL/LibreSSL not found") SET(TLS_LIBRARY_VERSION "OpenSSL ${OPENSSL_VERSION}")
ENDIF() ENDIF()
ELSE()
MESSAGE1(TLS_LIBRARY_VERSION "OpenSSL/LibreSSL not found")
ENDIF() ENDIF()
IF(WITH_SSL STREQUAL "GNUTLS") ELSEIF(WITH_SSL STREQUAL "GNUTLS")
FIND_PACKAGE(GnuTLS "3.3.24" REQUIRED) FIND_PACKAGE(GnuTLS "3.3.24" REQUIRED)
IF(GNUTLS_FOUND) IF(GNUTLS_FOUND)
ADD_DEFINITIONS(-DHAVE_GNUTLS -DHAVE_TLS) ADD_DEFINITIONS(-DHAVE_GNUTLS -DHAVE_TLS)
SET(SSL_SOURCES "${CC_SOURCE_DIR}/libmariadb/secure/gnutls.c" SET(SSL_SOURCES "${CC_SOURCE_DIR}/libmariadb/secure/gnutls.c"
"${CC_SOURCE_DIR}/libmariadb/secure/gnutls_crypt.c") "${CC_SOURCE_DIR}/libmariadb/secure/gnutls_crypt.c")
SET(SSL_LIBRARIES ${GNUTLS_LIBRARY}) SET(SSL_LIBRARIES ${GNUTLS_LIBRARY})
SET(TLS_LIBRARY_VERSION "GnuTLS ${GNUTLS_VERSION_STRING}") SET(TLS_LIBRARY_VERSION "GnuTLS ${GNUTLS_VERSION_STRING}")
INCLUDE_DIRECTORIES(${GNUTLS_INCLUDE_DIR}) INCLUDE_DIRECTORIES(${GNUTLS_INCLUDE_DIR})
ELSE() ELSE()
MESSAGE(FATAL_ERROR "GnuTLS not found") MESSAGE(FATAL_ERROR "GnuTLS not found")
ENDIF()
ENDIF() ENDIF()
IF(WIN32) ELSEIF(WIN32 AND WITH_SSL STREQUAL "SCHANNEL")
IF(WITH_SSL STREQUAL "SCHANNEL") ADD_DEFINITIONS(-DHAVE_SCHANNEL -DHAVE_TLS -DHAVE_WINCRYPT)
ADD_DEFINITIONS(-DHAVE_SCHANNEL -DHAVE_TLS -DHAVE_WINCRYPT) SET(SSL_SOURCES "${CC_SOURCE_DIR}/libmariadb/secure/schannel.c"
SET(SSL_SOURCES "${CC_SOURCE_DIR}/libmariadb/secure/schannel.c" "${CC_SOURCE_DIR}/libmariadb/secure/win_crypt.c"
"${CC_SOURCE_DIR}/libmariadb/secure/win_crypt.c" "${CC_SOURCE_DIR}/libmariadb/secure/ma_schannel.c"
"${CC_SOURCE_DIR}/libmariadb/secure/ma_schannel.c" "${CC_SOURCE_DIR}/libmariadb/secure/schannel_certs.c")
"${CC_SOURCE_DIR}/libmariadb/secure/schannel_certs.c") INCLUDE_DIRECTORIES("${CC_SOURCE_DIR}/plugins/pvio/")
INCLUDE_DIRECTORIES("${CC_SOURCE_DIR}/plugins/pvio/") SET(SSL_LIBRARIES secur32 crypt32 bcrypt)
SET(SSL_LIBRARIES secur32 crypt32 bcrypt) SET(TLS_LIBRARY_VERSION "Schannel ${CMAKE_SYSTEM_VERSION}")
SET(TLS_LIBRARY_VERSION "Schannel ${CMAKE_SYSTEM_VERSION}") ELSE()
ENDIF() MESSAGE(FATAL_ERROR "Invalid TLS/SSL option '${WITH_SSL}'")
ENDIF()
MESSAGE1(TLS_LIBRARY_VERSION "TLS library/version: ${TLS_LIBRARY_VERSION}")
MARK_AS_ADVANCED(SSL_SOURCES)
ENDIF() ENDIF()
MESSAGE1(TLS_LIBRARY_VERSION "TLS library/version: ${TLS_LIBRARY_VERSION}")
MARK_AS_ADVANCED(SSL_SOURCES)
IF(WITH_BOOST_CONTEXT) IF(WITH_BOOST_CONTEXT)
FIND_PACKAGE(Boost 1.40 COMPONENTS context REQUIRED) FIND_PACKAGE(Boost 1.40 COMPONENTS context REQUIRED)

View File

@@ -324,7 +324,6 @@ ma_compress.c
ma_init.c ma_init.c
ma_password.c ma_password.c
ma_ll2str.c ma_ll2str.c
ma_sha1.c
mariadb_stmt.c mariadb_stmt.c
ma_loaddata.c ma_loaddata.c
ma_stmt_codec.c ma_stmt_codec.c

View File

@@ -39,7 +39,7 @@
#include <ma_global.h> #include <ma_global.h>
#include <ma_sys.h> #include <ma_sys.h>
#include <ma_string.h> #include <ma_string.h>
#include <ma_sha1.h> #include <ma_crypt.h>
#include "mysql.h" #include "mysql.h"
@@ -100,29 +100,26 @@ void my_crypt(unsigned char *buffer, const unsigned char *s1, const unsigned cha
void ma_scramble_41(const unsigned char *buffer, const char *scramble, const char *password) void ma_scramble_41(const unsigned char *buffer, const char *scramble, const char *password)
{ {
_MA_SHA1_CTX context; MA_HASH_CTX *ctx;
unsigned char sha1[SHA1_MAX_LENGTH]; unsigned char sha1[MA_SHA1_HASH_SIZE];
unsigned char sha2[SHA1_MAX_LENGTH]; unsigned char sha2[MA_SHA1_HASH_SIZE];
/* Phase 1: hash password */ /* Phase 1: hash password */
ma_SHA1Init(&context); ma_hash(MA_HASH_SHA1, (unsigned char *)password, strlen(password), sha1);
ma_SHA1Update(&context, (unsigned char *)password, strlen((char *)password));
ma_SHA1Final(sha1, &context);
/* Phase 2: hash sha1 */ /* Phase 2: hash sha1 */
ma_SHA1Init(&context); ma_hash(MA_HASH_SHA1, (unsigned char *)sha1, MA_SHA1_HASH_SIZE, sha2);
ma_SHA1Update(&context, (unsigned char*)sha1, SHA1_MAX_LENGTH);
ma_SHA1Final(sha2, &context);
/* Phase 3: hash scramble + sha2 */ /* Phase 3: hash scramble + sha2 */
ma_SHA1Init(&context); ctx= ma_hash_new(MA_HASH_SHA1);
ma_SHA1Update(&context, (unsigned char *)scramble, SCRAMBLE_LENGTH); ma_hash_input(ctx, (unsigned char *)scramble, SCRAMBLE_LENGTH);
ma_SHA1Update(&context, (unsigned char*)sha2, SHA1_MAX_LENGTH); ma_hash_input(ctx, (unsigned char *)sha2, MA_SHA1_HASH_SIZE);
ma_SHA1Final((unsigned char *)buffer, &context); ma_hash_result(ctx, (unsigned char *)buffer);
ma_hash_free(ctx);
/* let's crypt buffer now */ /* let's crypt buffer now */
my_crypt((uchar *)buffer, (const unsigned char *)buffer, (const unsigned char *)sha1, SHA1_MAX_LENGTH); my_crypt((uchar *)buffer, (const unsigned char *)buffer, (const unsigned char *)sha1, MA_SHA1_HASH_SIZE);
} }
/* }}} */ /* }}} */

View File

@@ -66,7 +66,6 @@
#ifndef INADDR_NONE #ifndef INADDR_NONE
#define INADDR_NONE -1 #define INADDR_NONE -1
#endif #endif
#include <ma_sha1.h>
#ifndef _WIN32 #ifndef _WIN32
#include <poll.h> #include <poll.h>
#endif #endif