From nobody Tue Oct 24 21:26:13 2023 X-Original-To: dev-commits-ports-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4SFQ914Vpgz4xY0L; Tue, 24 Oct 2023 21:26:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4SFQ9128Dbz4fgS; Tue, 24 Oct 2023 21:26:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1698182773; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=id4DWJWJCACJ/vJGLw6MIoQP2rGeW8hREFhL1eK9Tr4=; b=ER/URoUg4asOVTEsTWWUJ3M7Nx5SE19sQLoepr2XIKeSUojNGnPeDIR8nziTClCFUsZv50 zIyoSJ9ZRjHh6qx7iCVEcCZ3A6Yrhtw23e28ThcpdSL+OVv7K5kOAL/w9MpGrUkEZiiTAR HXPxcXTcUoVBzMMVFbv91Gvoi8Arjyvwv7mlWyG8AisfwCbEPqe1JmbLg48BiNzczUG/ck hDJ24xxrhz19h0sT+UGFFVSfbQCH/u2Tsn/nw7wjc/V8ZmAYchT/gwKYJwDqN0B2zjh4JX xltOWZNuXOlmd3icwryih12yTHBwashm6o+lI4cjI1OLz9W/+6+WKunjz+80Ng== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1698182773; a=rsa-sha256; cv=none; b=im2ey5v3tCMEMh3RyumU5bfxv44W9KDCs1wwNkIFkIiMoQssSbDoDT8hoY/kSqvW9rMVfX PdUrL6zTGqHI1Ax86KMavo8riKBawULQPjmsywbLd443zhRevNP7VTif+Ssx/o2GLxPWFN QAv7sF/sV06J5/zwJ7oFFXvcrewcB0GHOXasfzhJAa00RA8d7B0d6F71c7NVScxCyqUVud AgkutZ52hMHkBUH2ZUUTUm9xqsr8e/cTBnHLEVaAF36z3mbpBd1alEvIt9tMuOfTAwF1cS L9xZJqCYCJkWzHILsjlW5q+ezOy0+JoN6lnwcDyLr3umBJzopM5fVJ70pKIPAQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1698182773; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=id4DWJWJCACJ/vJGLw6MIoQP2rGeW8hREFhL1eK9Tr4=; b=UZFRZPY7l6R+gse60d1zUCAQsWtqt3MnqqXCffsYc7LaXd5YTv2qUalI+gthRcmdtgxip4 mcv+dL7M6GWAF1GkZ1d0Pyd+Ta5twBqz4nDbGUtSchUlTDE2mP4BJFVwTGnRAq+OIoORF9 wMCLQDHh0CoxwfWtP8PQ6WfizoENnYzmHN6+ezM2EiFvKRjXtGO5L7J+Glf+7Qa1ENlviD pZgb/6G9Eb6Qx9x3w7t6XsTsdNRJBUBE2tBAqRyA21tEpAeTkyRDo1AkGEXI+imUtRlJMW drEmtZ2N30QME1ywAUjx1dT4yF68ODn78LT5fyhFmj9nzjH6uIQRgj+DziMdMA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4SFQ911DDZzf1J; Tue, 24 Oct 2023 21:26:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 39OLQDlF074716; Tue, 24 Oct 2023 21:26:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 39OLQDk9074713; Tue, 24 Oct 2023 21:26:13 GMT (envelope-from git) Date: Tue, 24 Oct 2023 21:26:13 GMT Message-Id: <202310242126.39OLQDk9074713@gitrepo.freebsd.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org From: "Jason E. Hale" Subject: git: 8efd8ab39b18 - main - devel/qt6-base: Enable building with non-base SSL List-Id: Commit messages for all branches of the ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-ports-all@freebsd.org X-BeenThere: dev-commits-ports-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhale X-Git-Repository: ports X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8efd8ab39b18ee443a41a4c0c780e6663843e9ab Auto-Submitted: auto-generated The branch main has been updated by jhale: URL: https://cgit.FreeBSD.org/ports/commit/?id=8efd8ab39b18ee443a41a4c0c780e6663843e9ab commit 8efd8ab39b18ee443a41a4c0c780e6663843e9ab Author: Jason E. Hale AuthorDate: 2023-10-24 19:12:16 +0000 Commit: Jason E. Hale CommitDate: 2023-10-24 21:26:04 +0000 devel/qt6-base: Enable building with non-base SSL Fix detection of desired SSL provider. Previously, qt6-base was only using OpenSSL from base, but this change allows users to build against whichever SSL provider they have chosen via DEFAULT_VERSIONS. LibreSSL support has also been added and is largely based on patches obtained from the OpenBSD ports tree. Fixes [1]. Subsequently, refresh old patches. PR: 269316 [1] Reported by: [1] MFH: 2023Q4 (after 1 week) --- devel/qt6-base/Makefile | 18 ++- devel/qt6-base/files/patch-cmake_QtBuild.cmake | 4 +- .../files/patch-cmake_QtFlagHandlingHelpers.cmake | 4 +- .../files/patch-cmake_QtPkgConfigHelpers.cmake | 4 +- .../files/patch-cmake_QtRpathHelpers.cmake | 6 +- ...t_input_evdevkeyboard_qevdevkeyboardhandler.cpp | 4 +- ...support_input_evdevmouse_qevdevmousehandler.cpp | 4 +- ...pport_input_evdevtablet_qevdevtablethandler.cpp | 4 +- ...support_input_evdevtouch_qevdevtouchhandler.cpp | 4 +- .../patch-src_plugins_tls_openssl_qopenssl__p.h | 16 ++ ...rc_plugins_tls_openssl_qsslcontext__openssl.cpp | 62 ++++++++ ...ns_tls_openssl_qsslsocket__openssl__symbols.cpp | 170 +++++++++++++++++++++ ...s_tls_openssl_qsslsocket__openssl__symbols__p.h | 146 ++++++++++++++++++ ...patch-src_plugins_tls_openssl_qtls__openssl.cpp | 18 +++ ...atch-src_plugins_tls_openssl_qx509__openssl.cpp | 68 +++++++++ devel/qt6-base/pkg-plist | 8 +- 16 files changed, 517 insertions(+), 23 deletions(-) diff --git a/devel/qt6-base/Makefile b/devel/qt6-base/Makefile index 4217c8c3249a..2543206db311 100644 --- a/devel/qt6-base/Makefile +++ b/devel/qt6-base/Makefile @@ -56,11 +56,13 @@ LIB_DEPENDS= \ libzstd.so:archivers/zstd USES= cmake compiler:c++17-lang gl gnome jpeg perl5 pkgconfig python \ - qt-dist:6 shebangfix + qt-dist:6 shebangfix ssl USE_GL= egl opengl USE_GNOME= cairo gdkpixbuf2 glib20 gtk30 pango +CMAKE_ARGS= -DOPENSSL_ROOT_DIR="${OPENSSLBASE}" CMAKE_ON= QT_AVOID_CMAKE_ARCHIVING_API \ - QT_FIND_ALL_PACKAGES_ALWAYS + QT_FIND_ALL_PACKAGES_ALWAYS \ + QT_FEATURE_openssl_linked CMAKE_OFF= QT_FEATURE_eglfs \ QT_FEATURE_gssapi # sql drivers are handled in the qt6-base-sqldriver port @@ -99,11 +101,23 @@ X11_LIB_DEPENDS= libxcb-cursor.so:x11/xcb-util-cursor \ .include +# LibreSSL does not currently support BIO_ADDR in DTLSv1_listen() +.if ${SSL_DEFAULT:Mlibressl*} +CMAKE_OFF+= QT_FEATURE_dtls +PLIST_SUB+= DTLS="@comment " +.else +PLIST_SUB+= DTLS="" +.endif + .if ${ARCH} == "armv6" || ${ARCH} == "armv7" BUILD_DEPENDS+= as:devel/binutils CMAKE_ARGS+= -DCMAKE_ASM_FLAGS=-no-integrated-as .endif +post-patch: + @${REINPLACE_CMD} -e 's|%%OPENSSLLIB%%|${OPENSSLLIB}|g' \ + ${WRKSRC}/src/plugins/tls/openssl/qsslsocket_openssl_symbols.cpp + # TODO: do this cleaner -- somewhere cmake/qmake still creates empty directories # for the cmake files in INSTALL_PREFIX/lib/cmake post-install: diff --git a/devel/qt6-base/files/patch-cmake_QtBuild.cmake b/devel/qt6-base/files/patch-cmake_QtBuild.cmake index ffc68f2e1314..81b407b918e3 100644 --- a/devel/qt6-base/files/patch-cmake_QtBuild.cmake +++ b/devel/qt6-base/files/patch-cmake_QtBuild.cmake @@ -1,6 +1,6 @@ ---- cmake/QtBuild.cmake.orig 2022-05-25 08:58:52 UTC +--- cmake/QtBuild.cmake.orig 2023-09-21 19:24:26 UTC +++ cmake/QtBuild.cmake -@@ -198,7 +198,7 @@ function(qt_internal_set_up_global_paths) +@@ -203,7 +203,7 @@ function(qt_internal_set_up_global_paths) if(QT_CONFIG_INSTALL_DIR) string(APPEND QT_CONFIG_INSTALL_DIR "/") endif() diff --git a/devel/qt6-base/files/patch-cmake_QtFlagHandlingHelpers.cmake b/devel/qt6-base/files/patch-cmake_QtFlagHandlingHelpers.cmake index 5eb5f2d65bb3..b6b158107631 100644 --- a/devel/qt6-base/files/patch-cmake_QtFlagHandlingHelpers.cmake +++ b/devel/qt6-base/files/patch-cmake_QtFlagHandlingHelpers.cmake @@ -1,6 +1,6 @@ ---- cmake/QtFlagHandlingHelpers.cmake.orig 2022-09-19 10:23:04 UTC +--- cmake/QtFlagHandlingHelpers.cmake.orig 2023-09-21 19:24:26 UTC +++ cmake/QtFlagHandlingHelpers.cmake -@@ -77,6 +77,10 @@ function(qt_internal_add_link_flags_no_undefined targe +@@ -103,6 +103,10 @@ function(qt_internal_add_link_flags_no_undefined targe set(no_undefined_flag "-Wl,--no-undefined") endif() diff --git a/devel/qt6-base/files/patch-cmake_QtPkgConfigHelpers.cmake b/devel/qt6-base/files/patch-cmake_QtPkgConfigHelpers.cmake index 2c03e159894c..aaf8eb7bcb2d 100644 --- a/devel/qt6-base/files/patch-cmake_QtPkgConfigHelpers.cmake +++ b/devel/qt6-base/files/patch-cmake_QtPkgConfigHelpers.cmake @@ -1,6 +1,6 @@ ---- cmake/QtPkgConfigHelpers.cmake.orig 2022-08-07 11:26:08 UTC +--- cmake/QtPkgConfigHelpers.cmake.orig 2023-09-21 19:24:26 UTC +++ cmake/QtPkgConfigHelpers.cmake -@@ -144,6 +144,6 @@ function(qt_internal_generate_pkg_config_file module) +@@ -159,6 +159,6 @@ function(qt_internal_generate_pkg_config_file module) # This is inspired by https://gitlab.kitware.com/cmake/cmake/-/issues/20842 target_sources(${module} PRIVATE "${final_pc_path}") diff --git a/devel/qt6-base/files/patch-cmake_QtRpathHelpers.cmake b/devel/qt6-base/files/patch-cmake_QtRpathHelpers.cmake index 48311878807e..7899d3825fba 100644 --- a/devel/qt6-base/files/patch-cmake_QtRpathHelpers.cmake +++ b/devel/qt6-base/files/patch-cmake_QtRpathHelpers.cmake @@ -1,8 +1,8 @@ ---- cmake/QtRpathHelpers.cmake.orig 2022-09-19 10:23:04 UTC +--- cmake/QtRpathHelpers.cmake.orig 2023-09-21 19:24:26 UTC +++ cmake/QtRpathHelpers.cmake -@@ -5,6 +5,8 @@ function(qt_internal_get_relative_rpath_base_token out +@@ -8,6 +8,8 @@ function(qt_internal_get_relative_rpath_base_token out set(rpath_rel_base "@loader_path") - elseif(LINUX OR SOLARIS OR FREEBSD OR HURD) + elseif(LINUX OR SOLARIS OR FREEBSD OR HURD OR OPENBSD) set(rpath_rel_base "$ORIGIN") + elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") + set(rpath_rel_base "$ORIGIN") diff --git a/devel/qt6-base/files/patch-src_platformsupport_input_evdevkeyboard_qevdevkeyboardhandler.cpp b/devel/qt6-base/files/patch-src_platformsupport_input_evdevkeyboard_qevdevkeyboardhandler.cpp index 95ad75033670..cd2db903643f 100644 --- a/devel/qt6-base/files/patch-src_platformsupport_input_evdevkeyboard_qevdevkeyboardhandler.cpp +++ b/devel/qt6-base/files/patch-src_platformsupport_input_evdevkeyboard_qevdevkeyboardhandler.cpp @@ -1,6 +1,6 @@ ---- src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp.orig 2020-12-04 10:14:27 UTC +--- src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp.orig 2023-09-21 19:24:26 UTC +++ src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp -@@ -53,11 +53,7 @@ +@@ -17,11 +17,7 @@ #include #include diff --git a/devel/qt6-base/files/patch-src_platformsupport_input_evdevmouse_qevdevmousehandler.cpp b/devel/qt6-base/files/patch-src_platformsupport_input_evdevmouse_qevdevmousehandler.cpp index 4e4b6053d6d7..6361a682e00a 100644 --- a/devel/qt6-base/files/patch-src_platformsupport_input_evdevmouse_qevdevmousehandler.cpp +++ b/devel/qt6-base/files/patch-src_platformsupport_input_evdevmouse_qevdevmousehandler.cpp @@ -1,6 +1,6 @@ ---- src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp.orig 2020-07-03 14:25:13 UTC +--- src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp.orig 2023-09-21 19:24:26 UTC +++ src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp -@@ -53,12 +53,7 @@ +@@ -17,12 +17,7 @@ #include diff --git a/devel/qt6-base/files/patch-src_platformsupport_input_evdevtablet_qevdevtablethandler.cpp b/devel/qt6-base/files/patch-src_platformsupport_input_evdevtablet_qevdevtablethandler.cpp index fa1194a91f71..3f40930c477e 100644 --- a/devel/qt6-base/files/patch-src_platformsupport_input_evdevtablet_qevdevtablethandler.cpp +++ b/devel/qt6-base/files/patch-src_platformsupport_input_evdevtablet_qevdevtablethandler.cpp @@ -1,6 +1,6 @@ ---- src/platformsupport/input/evdevtablet/qevdevtablethandler.cpp.orig 2020-07-03 14:25:13 UTC +--- src/platformsupport/input/evdevtablet/qevdevtablethandler.cpp.orig 2023-09-21 19:24:26 UTC +++ src/platformsupport/input/evdevtablet/qevdevtablethandler.cpp -@@ -46,11 +46,7 @@ +@@ -10,11 +10,7 @@ #include #include #include diff --git a/devel/qt6-base/files/patch-src_platformsupport_input_evdevtouch_qevdevtouchhandler.cpp b/devel/qt6-base/files/patch-src_platformsupport_input_evdevtouch_qevdevtouchhandler.cpp index d4f725ce6e87..15331f44334e 100644 --- a/devel/qt6-base/files/patch-src_platformsupport_input_evdevtouch_qevdevtouchhandler.cpp +++ b/devel/qt6-base/files/patch-src_platformsupport_input_evdevtouch_qevdevtouchhandler.cpp @@ -1,6 +1,6 @@ ---- src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp.orig 2022-05-25 08:58:52 UTC +--- src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp.orig 2023-09-21 19:24:26 UTC +++ src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp -@@ -53,11 +53,7 @@ +@@ -17,11 +17,7 @@ #include diff --git a/devel/qt6-base/files/patch-src_plugins_tls_openssl_qopenssl__p.h b/devel/qt6-base/files/patch-src_plugins_tls_openssl_qopenssl__p.h new file mode 100644 index 000000000000..e6298f935613 --- /dev/null +++ b/devel/qt6-base/files/patch-src_plugins_tls_openssl_qopenssl__p.h @@ -0,0 +1,16 @@ +--- src/plugins/tls/openssl/qopenssl_p.h.orig 2023-09-21 19:24:26 UTC ++++ src/plugins/tls/openssl/qopenssl_p.h +@@ -70,6 +70,13 @@ QT_BEGIN_NAMESPACE + + QT_BEGIN_NAMESPACE + ++#ifndef DTLS_ANY_VERSION ++#define DTLS_ANY_VERSION 0x1FFFF ++#endif ++#ifndef TLS_ANY_VERSION ++#define TLS_ANY_VERSION 0x10000 ++#endif ++ + struct QSslErrorEntry { + int code = 0; + int depth = 0; diff --git a/devel/qt6-base/files/patch-src_plugins_tls_openssl_qsslcontext__openssl.cpp b/devel/qt6-base/files/patch-src_plugins_tls_openssl_qsslcontext__openssl.cpp new file mode 100644 index 000000000000..3f0e8a5a8dc0 --- /dev/null +++ b/devel/qt6-base/files/patch-src_plugins_tls_openssl_qsslcontext__openssl.cpp @@ -0,0 +1,62 @@ +--- src/plugins/tls/openssl/qsslcontext_openssl.cpp.orig 2023-09-21 19:24:26 UTC ++++ src/plugins/tls/openssl/qsslcontext_openssl.cpp +@@ -49,9 +49,9 @@ extern "C" int q_verify_cookie_callback(SSL *ssl, cons + } + #endif // dtls + +-#ifdef TLS1_3_VERSION ++#if defined(TLS1_3_VERSION) && !defined(LIBRESSL_VERSION_NUMBER) + extern "C" int q_ssl_sess_set_new_cb(SSL *context, SSL_SESSION *session); +-#endif // TLS1_3_VERSION ++#endif // TLS1_3_VERSION && LIBRESSL_VERSION_NUMBE + + static inline QString msgErrorSettingBackendConfig(const QString &why) + { +@@ -370,9 +370,11 @@ QT_WARNING_POP + return; + } + ++#ifndef LIBRESSL_VERSION_NUMBER + // A nasty hacked OpenSSL using a level that will make our auto-tests fail: + if (q_SSL_CTX_get_security_level(sslContext->ctx) > 1 && *forceSecurityLevel()) + q_SSL_CTX_set_security_level(sslContext->ctx, 1); ++#endif // LIBRESSL_VERSION_NUMBER + + const long anyVersion = + #if QT_CONFIG(dtls) +@@ -663,14 +665,14 @@ QT_WARNING_POP + q_SSL_CTX_set_verify(sslContext->ctx, verificationMode, verificationCallback); + } + +-#ifdef TLS1_3_VERSION ++#if defined(TLS1_3_VERSION) && !defined(LIBRESSL_VERSION_NUMBER) + // NewSessionTicket callback: + if (mode == QSslSocket::SslClientMode && !isDtls) { + q_SSL_CTX_sess_set_new_cb(sslContext->ctx, q_ssl_sess_set_new_cb); + q_SSL_CTX_set_session_cache_mode(sslContext->ctx, SSL_SESS_CACHE_CLIENT); + } + +-#endif // TLS1_3_VERSION ++#endif // TLS1_3_VERSION && LIBRESSL_VERSION_NUMBER + + #if QT_CONFIG(dtls) + // DTLS cookies: +@@ -758,6 +760,7 @@ void QSslContext::applyBackendConfig(QSslContext *sslC + } + #endif // ocsp + ++#ifndef LIBRESSL_VERSION_NUMBER + QSharedPointer cctx(q_SSL_CONF_CTX_new(), &q_SSL_CONF_CTX_free); + if (cctx) { + q_SSL_CONF_CTX_set_ssl_ctx(cctx.data(), sslContext->ctx); +@@ -804,7 +807,9 @@ void QSslContext::applyBackendConfig(QSslContext *sslC + sslContext->errorStr = msgErrorSettingBackendConfig(QSslSocket::tr("SSL_CONF_finish() failed")); + sslContext->errorCode = QSslError::UnspecifiedError; + } +- } else { ++ } else ++#endif // LIBRESSL_VERSION_NUMBER ++ { + sslContext->errorStr = msgErrorSettingBackendConfig(QSslSocket::tr("SSL_CONF_CTX_new() failed")); + sslContext->errorCode = QSslError::UnspecifiedError; + } diff --git a/devel/qt6-base/files/patch-src_plugins_tls_openssl_qsslsocket__openssl__symbols.cpp b/devel/qt6-base/files/patch-src_plugins_tls_openssl_qsslsocket__openssl__symbols.cpp new file mode 100644 index 000000000000..0c78c2367aec --- /dev/null +++ b/devel/qt6-base/files/patch-src_plugins_tls_openssl_qsslsocket__openssl__symbols.cpp @@ -0,0 +1,170 @@ +--- src/plugins/tls/openssl/qsslsocket_openssl_symbols.cpp.orig 2023-09-21 19:24:26 UTC ++++ src/plugins/tls/openssl/qsslsocket_openssl_symbols.cpp +@@ -112,23 +112,36 @@ DEFINEFUNC(int, EVP_PKEY_up_ref, EVP_PKEY *a, a, retur + DEFINEFUNC2(int, BN_is_word, BIGNUM *a, a, BN_ULONG w, w, return 0, return) + DEFINEFUNC(int, EVP_CIPHER_CTX_reset, EVP_CIPHER_CTX *c, c, return 0, return) + DEFINEFUNC(int, EVP_PKEY_up_ref, EVP_PKEY *a, a, return 0, return) ++#ifdef OPENSSL_NO_DEPRECATED_3_0 + DEFINEFUNC2(EVP_PKEY_CTX *, EVP_PKEY_CTX_new, EVP_PKEY *pkey, pkey, ENGINE *e, e, return nullptr, return) + DEFINEFUNC(int, EVP_PKEY_param_check, EVP_PKEY_CTX *ctx, ctx, return 0, return) + DEFINEFUNC(void, EVP_PKEY_CTX_free, EVP_PKEY_CTX *ctx, ctx, return, return) ++#endif // OPENSSL_NO_DEPRECATED_3_0 ++#ifndef LIBRESSL_VERSION_NUMBER + DEFINEFUNC(int, OPENSSL_sk_num, OPENSSL_STACK *a, a, return -1, return) + DEFINEFUNC2(void, OPENSSL_sk_pop_free, OPENSSL_STACK *a, a, void (*b)(void*), b, return, DUMMYARG) + DEFINEFUNC(OPENSSL_STACK *, OPENSSL_sk_new_null, DUMMYARG, DUMMYARG, return nullptr, return) + DEFINEFUNC2(void, OPENSSL_sk_push, OPENSSL_STACK *a, a, void *b, b, return, DUMMYARG) + DEFINEFUNC(void, OPENSSL_sk_free, OPENSSL_STACK *a, a, return, DUMMYARG) + DEFINEFUNC2(void *, OPENSSL_sk_value, OPENSSL_STACK *a, a, int b, b, return nullptr, return) ++#else ++DEFINEFUNC(int, sk_num, STACK *a, a, return -1, return) ++DEFINEFUNC2(void, sk_pop_free, STACK *a, a, void (*b)(void*), b, return, DUMMYARG) ++DEFINEFUNC(_STACK *, sk_new_null, DUMMYARG, DUMMYARG, return nullptr, return) ++DEFINEFUNC2(void, sk_push, _STACK *a, a, void *b, b, return, DUMMYARG) ++DEFINEFUNC(void, sk_free, _STACK *a, a, return, DUMMYARG) ++DEFINEFUNC2(void *, sk_value, STACK *a, a, int b, b, return nullptr, return) ++#endif // LIBRESSL_VERSION_NUMBER + DEFINEFUNC(int, SSL_session_reused, SSL *a, a, return 0, return) + DEFINEFUNC2(qssloptions, SSL_CTX_set_options, SSL_CTX *ctx, ctx, qssloptions op, op, return 0, return) + using info_callback = void (*) (const SSL *ssl, int type, int val); + DEFINEFUNC2(void, SSL_set_info_callback, SSL *ssl, ssl, info_callback cb, cb, return, return) + DEFINEFUNC(const char *, SSL_alert_type_string, int value, value, return nullptr, return) + DEFINEFUNC(const char *, SSL_alert_desc_string_long, int value, value, return nullptr, return) ++#ifndef LIBRESSL_VERSION_NUMBER + DEFINEFUNC(int, SSL_CTX_get_security_level, const SSL_CTX *ctx, ctx, return -1, return) + DEFINEFUNC2(void, SSL_CTX_set_security_level, SSL_CTX *ctx, ctx, int level, level, return, return) ++#endif // LIBRESSL_VERSION_NUMBER + #ifdef TLS1_3_VERSION + DEFINEFUNC2(int, SSL_CTX_set_ciphersuites, SSL_CTX *ctx, ctx, const char *str, str, return 0, return) + DEFINEFUNC2(void, SSL_set_psk_use_session_callback, SSL *ssl, ssl, q_SSL_psk_use_session_cb_func_t callback, callback, return, DUMMYARG) +@@ -154,7 +167,11 @@ DEFINEFUNC(STACK_OF(X509) *, X509_STORE_CTX_get0_chain + DEFINEFUNC3(int, X509_STORE_set_ex_data, X509_STORE *a, a, int idx, idx, void *data, data, return 0, return) + DEFINEFUNC2(void *, X509_STORE_get_ex_data, X509_STORE *r, r, int idx, idx, return nullptr, return) + DEFINEFUNC(STACK_OF(X509) *, X509_STORE_CTX_get0_chain, X509_STORE_CTX *a, a, return nullptr, return) +-DEFINEFUNC3(void, CRYPTO_free, void *str, str, const char *file, file, int line, line, return, DUMMYARG) ++#ifndef LIBRESSL_VERSION_NUMBER ++ DEFINEFUNC3(void, CRYPTO_free, void *str, str, const char *file, file, int line, line, return, DUMMYARG) ++#else ++DEFINEFUNC(void, CRYPTO_free, void *a, a, return, DUMMYARG) ++#endif + DEFINEFUNC(long, OpenSSL_version_num, void, DUMMYARG, return 0, return) + DEFINEFUNC(const char *, OpenSSL_version, int a, a, return nullptr, return) + DEFINEFUNC(unsigned long, SSL_SESSION_get_ticket_lifetime_hint, const SSL_SESSION *session, session, return 0, return) +@@ -192,7 +209,9 @@ DEFINEFUNC2(OCSP_RESPONSE *, OCSP_response_create, int + ASN1_OCTET_STRING **piKeyHash, piKeyHash, ASN1_INTEGER **pserial, pserial, OCSP_CERTID *cid, cid, + return 0, return) + DEFINEFUNC2(OCSP_RESPONSE *, OCSP_response_create, int status, status, OCSP_BASICRESP *bs, bs, return nullptr, return) ++#if !defined(LIBRESSL_VERSION_NUMBER) || (LIBRESSL_VERSION_NUMBER >= 0x3050000fL) + DEFINEFUNC(const STACK_OF(X509) *, OCSP_resp_get0_certs, const OCSP_BASICRESP *bs, bs, return nullptr, return) ++#endif + DEFINEFUNC2(int, OCSP_id_cmp, OCSP_CERTID *a, a, OCSP_CERTID *b, b, return -1, return) + DEFINEFUNC7(OCSP_SINGLERESP *, OCSP_basic_add1_status, OCSP_BASICRESP *r, r, OCSP_CERTID *c, c, int s, s, + int re, re, ASN1_TIME *rt, rt, ASN1_TIME *t, t, ASN1_TIME *n, n, return nullptr, return) +@@ -288,12 +307,14 @@ DEFINEFUNC(X509_STORE *, SSL_CTX_get_cert_store, const + DEFINEFUNC2(int, SSL_CTX_use_PrivateKey, SSL_CTX *a, a, EVP_PKEY *b, b, return -1, return) + DEFINEFUNC3(int, SSL_CTX_use_PrivateKey_file, SSL_CTX *a, a, const char *b, b, int c, c, return -1, return) + DEFINEFUNC(X509_STORE *, SSL_CTX_get_cert_store, const SSL_CTX *a, a, return nullptr, return) ++#ifndef LIBRESSL_VERSION_NUMBER + DEFINEFUNC(SSL_CONF_CTX *, SSL_CONF_CTX_new, DUMMYARG, DUMMYARG, return nullptr, return); + DEFINEFUNC(void, SSL_CONF_CTX_free, SSL_CONF_CTX *a, a, return ,return); + DEFINEFUNC2(void, SSL_CONF_CTX_set_ssl_ctx, SSL_CONF_CTX *a, a, SSL_CTX *b, b, return, return); + DEFINEFUNC2(unsigned int, SSL_CONF_CTX_set_flags, SSL_CONF_CTX *a, a, unsigned int b, b, return 0, return); + DEFINEFUNC(int, SSL_CONF_CTX_finish, SSL_CONF_CTX *a, a, return 0, return); + DEFINEFUNC3(int, SSL_CONF_cmd, SSL_CONF_CTX *a, a, const char *b, b, const char *c, c, return 0, return); ++#endif + DEFINEFUNC(void, SSL_free, SSL *a, a, return, DUMMYARG) + DEFINEFUNC(STACK_OF(SSL_CIPHER) *, SSL_get_ciphers, const SSL *a, a, return nullptr, return) + DEFINEFUNC(const SSL_CIPHER *, SSL_get_current_cipher, SSL *a, a, return nullptr, return) +@@ -750,8 +771,8 @@ static LoadedOpenSsl loadOpenSsl() + #endif + #if defined(SHLIB_VERSION_NUMBER) && !defined(Q_OS_QNX) // on QNX, the libs are always libssl.so and libcrypto.so + // first attempt: the canonical name is libssl.so. +- libssl->setFileNameAndVersion("ssl"_L1, SHLIB_VERSION_NUMBER ""_L1); +- libcrypto->setFileNameAndVersion("crypto"_L1, SHLIB_VERSION_NUMBER ""_L1); ++ libssl->setFileNameAndVersion("%%OPENSSLLIB%%/libssl"_L1, SHLIB_VERSION_NUMBER ""_L1); ++ libcrypto->setFileNameAndVersion("%%OPENSSLLIB%%/libcrypto"_L1, SHLIB_VERSION_NUMBER ""_L1); + if (libcrypto->load() && libssl->load()) { + // libssl.so. and libcrypto.so. found + return result; +@@ -782,8 +803,8 @@ static LoadedOpenSsl loadOpenSsl() + libssl->setFileNameAndVersion("ssl"_L1 + suffix, -1); + libcrypto->setFileNameAndVersion("crypto"_L1 + suffix, -1); + # else +- libssl->setFileNameAndVersion("ssl"_L1, -1); +- libcrypto->setFileNameAndVersion("crypto"_L1, -1); ++ libssl->setFileNameAndVersion("%%OPENSSLLIB%%/libssl"_L1, -1); ++ libcrypto->setFileNameAndVersion("%%OPENSSLLIB%%/libcrypto"_L1, -1); + # endif + if (libcrypto->load() && libssl->load()) { + // libssl.so.0 and libcrypto.so.0 found +@@ -852,21 +873,34 @@ bool q_resolveOpenSslSymbols() + RESOLVEFUNC(EVP_CIPHER_CTX_reset) + RESOLVEFUNC(AUTHORITY_INFO_ACCESS_free) + RESOLVEFUNC(EVP_PKEY_up_ref) ++#ifdef OPENSSL_NO_DEPRECATED_3_0 + RESOLVEFUNC(EVP_PKEY_CTX_new) + RESOLVEFUNC(EVP_PKEY_param_check) + RESOLVEFUNC(EVP_PKEY_CTX_free) ++#endif // OPENSSL_NO_DEPRECATED_3_0 ++#if !defined(LIBRESSL_VERSION_NUMBER) + RESOLVEFUNC(OPENSSL_sk_new_null) + RESOLVEFUNC(OPENSSL_sk_push) + RESOLVEFUNC(OPENSSL_sk_free) + RESOLVEFUNC(OPENSSL_sk_num) + RESOLVEFUNC(OPENSSL_sk_pop_free) + RESOLVEFUNC(OPENSSL_sk_value) ++#else ++ RESOLVEFUNC(sk_new_null) ++ RESOLVEFUNC(sk_push) ++ RESOLVEFUNC(sk_free) ++ RESOLVEFUNC(sk_num) ++ RESOLVEFUNC(sk_pop_free) ++ RESOLVEFUNC(sk_value) ++#endif + RESOLVEFUNC(SSL_CTX_set_options) + RESOLVEFUNC(SSL_set_info_callback) + RESOLVEFUNC(SSL_alert_type_string) + RESOLVEFUNC(SSL_alert_desc_string_long) ++#if !defined(LIBRESSL_VERSION_NUMBER) + RESOLVEFUNC(SSL_CTX_get_security_level) + RESOLVEFUNC(SSL_CTX_set_security_level) ++#endif + #ifdef TLS1_3_VERSION + RESOLVEFUNC(SSL_CTX_set_ciphersuites) + RESOLVEFUNC(SSL_set_psk_use_session_callback) +@@ -947,7 +981,9 @@ bool q_resolveOpenSslSymbols() + RESOLVEFUNC(OCSP_check_validity) + RESOLVEFUNC(OCSP_cert_to_id) + RESOLVEFUNC(OCSP_id_get0_info) +- RESOLVEFUNC(OCSP_resp_get0_certs) ++#if !defined(LIBRESSL_VERSION_NUMBER) || (LIBRESSL_VERSION_NUMBER >= 0x3050000fL) ++ RESOLVEFUNC(OCSP_resp_get0_certs) ++#endif + RESOLVEFUNC(OCSP_basic_sign) + RESOLVEFUNC(OCSP_response_create) + RESOLVEFUNC(i2d_OCSP_RESPONSE) +@@ -1042,12 +1078,14 @@ bool q_resolveOpenSslSymbols() + RESOLVEFUNC(SSL_CTX_use_PrivateKey) + RESOLVEFUNC(SSL_CTX_use_PrivateKey_file) + RESOLVEFUNC(SSL_CTX_get_cert_store); ++#ifndef LIBRESSL_VERSION_NUMBER + RESOLVEFUNC(SSL_CONF_CTX_new); + RESOLVEFUNC(SSL_CONF_CTX_free); + RESOLVEFUNC(SSL_CONF_CTX_set_ssl_ctx); + RESOLVEFUNC(SSL_CONF_CTX_set_flags); + RESOLVEFUNC(SSL_CONF_CTX_finish); + RESOLVEFUNC(SSL_CONF_cmd); ++#endif + RESOLVEFUNC(SSL_accept) + RESOLVEFUNC(SSL_clear) + RESOLVEFUNC(SSL_connect) +@@ -1107,7 +1145,9 @@ bool q_resolveOpenSslSymbols() + RESOLVEFUNC(RSA_free) + + RESOLVEFUNC(DH_bits) ++#if !defined(LIBRESSL_VERSION_NUMBER) || (LIBRESSL_VERSION_NUMBER >= 0x3050000fL) + RESOLVEFUNC(DSA_bits) ++#endif + RESOLVEFUNC(RSA_bits) + + #ifndef OPENSSL_NO_EC diff --git a/devel/qt6-base/files/patch-src_plugins_tls_openssl_qsslsocket__openssl__symbols__p.h b/devel/qt6-base/files/patch-src_plugins_tls_openssl_qsslsocket__openssl__symbols__p.h new file mode 100644 index 000000000000..905b1482b3d3 --- /dev/null +++ b/devel/qt6-base/files/patch-src_plugins_tls_openssl_qsslsocket__openssl__symbols__p.h @@ -0,0 +1,146 @@ +--- src/plugins/tls/openssl/qsslsocket_openssl_symbols_p.h.orig 2023-09-21 19:24:26 UTC ++++ src/plugins/tls/openssl/qsslsocket_openssl_symbols_p.h +@@ -46,6 +46,13 @@ QT_BEGIN_NAMESPACE + + #define DUMMYARG + ++#ifdef LIBRESSL_VERSION_NUMBER ++typedef _STACK STACK; ++typedef STACK OPENSSL_STACK; ++typedef void OPENSSL_INIT_SETTINGS; ++typedef int (*X509_STORE_CTX_verify_cb)(int ok,X509_STORE_CTX *ctx); ++#endif ++ + #if !defined QT_LINKED_OPENSSL + // **************** Shared declarations ****************** + // ret func(arg) +@@ -203,15 +210,32 @@ int q_EVP_PKEY_up_ref(EVP_PKEY *a); + void q_AUTHORITY_INFO_ACCESS_free(AUTHORITY_INFO_ACCESS *a); + int q_EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c); + int q_EVP_PKEY_up_ref(EVP_PKEY *a); ++#ifdef OPENSSL_NO_DEPRECATED_3_0 + EVP_PKEY_CTX *q_EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e); + void q_EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx); ++#endif // OPENSSL_NO_DEPRECATED_3_0 + int q_EVP_PKEY_param_check(EVP_PKEY_CTX *ctx); ++#ifndef LIBRESSL_VERSION_NUMBER + int q_OPENSSL_sk_num(OPENSSL_STACK *a); + void q_OPENSSL_sk_pop_free(OPENSSL_STACK *a, void (*b)(void *)); + OPENSSL_STACK *q_OPENSSL_sk_new_null(); + void q_OPENSSL_sk_push(OPENSSL_STACK *st, void *data); + void q_OPENSSL_sk_free(OPENSSL_STACK *a); + void * q_OPENSSL_sk_value(OPENSSL_STACK *a, int b); ++#else // LIBRESSL_VERSION_NUMBER ++int q_sk_num(STACK *a); ++#define q_OPENSSL_sk_num(a) q_sk_num(a) ++void q_sk_pop_free(STACK *a, void (*b)(void *)); ++#define q_OPENSSL_sk_pop_free(a, b) q_sk_pop_free(a, b) ++STACK *q_sk_new_null(); ++#define q_OPENSSL_sk_new_null() q_sk_new_null() ++void q_sk_push(STACK *st, void *data); ++#define q_OPENSSL_sk_push(st, data) q_sk_push(st, data) ++void q_sk_free(STACK *a); ++#define q_OPENSSL_sk_free q_sk_free ++void * q_sk_value(STACK *a, int b); ++#define q_OPENSSL_sk_value(a, b) q_sk_value(a, b) ++#endif // LIBRESSL_VERSION_NUMBER + int q_SSL_session_reused(SSL *a); + qssloptions q_SSL_CTX_set_options(SSL_CTX *ctx, qssloptions op); + int q_OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); +@@ -237,9 +261,15 @@ STACK_OF(X509) *q_X509_STORE_CTX_get0_chain(X509_STORE + # define q_SSL_load_error_strings() q_OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \ + | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL) + ++#ifndef LIBRESSL_VERSION_NUMBER + #define q_SKM_sk_num(st) q_OPENSSL_sk_num((OPENSSL_STACK *)st) + #define q_SKM_sk_value(type, st,i) (type *)q_OPENSSL_sk_value((OPENSSL_STACK *)st, i) ++#else // LIBRESSL_VERSION_NUMBER ++#define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_sk_num)(st) ++#define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_sk_value)(st, i) ++#endif // LIBRESSL_VERSION_NUMBER + ++ + #define q_OPENSSL_add_all_algorithms_conf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ + | OPENSSL_INIT_ADD_ALL_DIGESTS \ + | OPENSSL_INIT_LOAD_CONFIG, NULL) +@@ -423,12 +453,14 @@ X509_STORE *q_SSL_CTX_get_cert_store(const SSL_CTX *a) + int q_SSL_CTX_use_PrivateKey(SSL_CTX *a, EVP_PKEY *b); + int q_SSL_CTX_use_PrivateKey_file(SSL_CTX *a, const char *b, int c); + X509_STORE *q_SSL_CTX_get_cert_store(const SSL_CTX *a); ++#ifndef LIBRESSL_VERSION_NUMBER + SSL_CONF_CTX *q_SSL_CONF_CTX_new(); + void q_SSL_CONF_CTX_free(SSL_CONF_CTX *a); + void q_SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *a, SSL_CTX *b); + unsigned int q_SSL_CONF_CTX_set_flags(SSL_CONF_CTX *a, unsigned int b); + int q_SSL_CONF_CTX_finish(SSL_CONF_CTX *a); + int q_SSL_CONF_cmd(SSL_CONF_CTX *a, const char *b, const char *c); ++#endif // LIBRESSL_VERSION_NUMBER + void q_SSL_free(SSL *a); + STACK_OF(SSL_CIPHER) *q_SSL_get_ciphers(const SSL *a); + const SSL_CIPHER *q_SSL_get_current_cipher(SSL *a); +@@ -536,14 +568,26 @@ void q_PKCS12_free(PKCS12 *pkcs12); + #define q_BIO_get_mem_data(b, pp) (int)q_BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)pp) + #define q_BIO_pending(b) (int)q_BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL) + #define q_SSL_CTX_set_mode(ctx,op) q_SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,(op),NULL) ++#ifndef LIBRESSL_VERSION_NUMBER + #define q_sk_GENERAL_NAME_num(st) q_SKM_sk_num((st)) ++#else ++#define q_sk_GENERAL_NAME_num(st) q_SKM_sk_num(GENERAL_NAME, (st)) ++#endif + #define q_sk_GENERAL_NAME_value(st, i) q_SKM_sk_value(GENERAL_NAME, (st), (i)) + + void q_GENERAL_NAME_free(GENERAL_NAME *a); + ++#ifndef LIBRESSL_VERSION_NUMBER + #define q_sk_X509_num(st) q_SKM_sk_num((st)) ++#else ++#define q_sk_X509_num(st) q_SKM_sk_num(X509, (st)) ++#endif + #define q_sk_X509_value(st, i) q_SKM_sk_value(X509, (st), (i)) ++#ifndef LIBRESSL_VERSION_NUMBER + #define q_sk_SSL_CIPHER_num(st) q_SKM_sk_num((st)) ++#else ++#define q_sk_SSL_CIPHER_num(st) q_SKM_sk_num(SSL_CIPHER, (st)) ++#endif + #define q_sk_SSL_CIPHER_value(st, i) q_SKM_sk_value(SSL_CIPHER, (st), (i)) + #define q_SSL_CTX_add_extra_chain_cert(ctx,x509) \ + q_SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)x509) +@@ -645,7 +689,11 @@ int q_OCSP_id_get0_info(ASN1_OCTET_STRING **piNameHash + int q_OCSP_id_get0_info(ASN1_OCTET_STRING **piNameHash, ASN1_OBJECT **pmd, ASN1_OCTET_STRING **pikeyHash, + ASN1_INTEGER **pserial, OCSP_CERTID *cid); + ++#if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x3050000fL ++#define q_OCSP_resp_get0_certs(bs) ((bs)->certs) ++#else + const STACK_OF(X509) *q_OCSP_resp_get0_certs(const OCSP_BASICRESP *bs); ++#endif + OCSP_CERTID *q_OCSP_cert_to_id(const EVP_MD *dgst, X509 *subject, X509 *issuer); + void q_OCSP_CERTID_free(OCSP_CERTID *cid); + int q_OCSP_id_cmp(OCSP_CERTID *a, OCSP_CERTID *b); +@@ -664,8 +712,14 @@ void *q_CRYPTO_malloc(size_t num, const char *file, in + + void *q_CRYPTO_malloc(size_t num, const char *file, int line); + #define q_OPENSSL_malloc(num) q_CRYPTO_malloc(num, "", 0) ++ ++#ifndef LIBRESSL_VERSION_NUMBER + void q_CRYPTO_free(void *str, const char *file, int line); + # define q_OPENSSL_free(addr) q_CRYPTO_free(addr, "", 0) ++#else ++void q_CRYPTO_free(void *a); ++# define q_OPENSSL_free(addr) q_CRYPTO_free(addr) ++#endif + + void q_SSL_set_info_callback(SSL *ssl, void (*cb) (const SSL *ssl, int type, int val)); + const char *q_SSL_alert_type_string(int value); +@@ -728,7 +782,11 @@ int q_RSA_bits(RSA *a); + + int q_DH_bits(DH *dh); + int q_RSA_bits(RSA *a); ++#if defined(LIBRESSL_VERSION_NUMBER) && (LIBRESSL_VERSION_NUMBER < 0x3050000fL) ++#define q_DSA_bits(dsa) q_BN_num_bits((dsa)->p) ++#else + int q_DSA_bits(DSA *a); ++#endif + + int q_EVP_PKEY_assign(EVP_PKEY *a, int b, void *r); + int q_EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b); diff --git a/devel/qt6-base/files/patch-src_plugins_tls_openssl_qtls__openssl.cpp b/devel/qt6-base/files/patch-src_plugins_tls_openssl_qtls__openssl.cpp new file mode 100644 index 000000000000..e0a2e68f7f96 --- /dev/null +++ b/devel/qt6-base/files/patch-src_plugins_tls_openssl_qtls__openssl.cpp @@ -0,0 +1,18 @@ +--- src/plugins/tls/openssl/qtls_openssl.cpp.orig 2023-09-21 19:24:26 UTC ++++ src/plugins/tls/openssl/qtls_openssl.cpp +@@ -1438,13 +1438,13 @@ bool TlsCryptographOpenSSL::initSslContext() + else if (mode == QSslSocket::SslServerMode) + q_SSL_set_psk_server_callback(ssl, &q_ssl_psk_server_callback); + +-#if OPENSSL_VERSION_NUMBER >= 0x10101006L ++#if OPENSSL_VERSION_NUMBER >= 0x10101006L && !defined(LIBRESSL_VERSION_NUMBER) + // Set the client callback for TLSv1.3 PSK + if (mode == QSslSocket::SslClientMode + && QSslSocket::sslLibraryBuildVersionNumber() >= 0x10101006L) { + q_SSL_set_psk_use_session_callback(ssl, &q_ssl_psk_use_session_callback); + } +-#endif // openssl version >= 0x10101006L ++#endif // OPENSSL_VERSION_NUMBER >= 0x10101006L && !defined(LIBRESSL_VERSION_NUMBER) + + #endif // OPENSSL_NO_PSK + diff --git a/devel/qt6-base/files/patch-src_plugins_tls_openssl_qx509__openssl.cpp b/devel/qt6-base/files/patch-src_plugins_tls_openssl_qx509__openssl.cpp new file mode 100644 index 000000000000..b99dd8d25cfd --- /dev/null +++ b/devel/qt6-base/files/patch-src_plugins_tls_openssl_qx509__openssl.cpp @@ -0,0 +1,68 @@ +--- src/plugins/tls/openssl/qx509_openssl.cpp.orig 2023-09-21 19:24:26 UTC ++++ src/plugins/tls/openssl/qx509_openssl.cpp +@@ -64,7 +64,12 @@ QMultiMap mapFromX509Name(X509_NA + unsigned char *data = nullptr; + int size = q_ASN1_STRING_to_UTF8(&data, q_X509_NAME_ENTRY_get_data(e)); + info.insert(name, QString::fromUtf8((char*)data, size)); +- q_CRYPTO_free(data, nullptr, 0); ++#ifndef LIBRESSL_VERSION_NUMBER ++ q_CRYPTO_free(data, nullptr, 0); ++#else ++ q_CRYPTO_free(data); ++#endif ++ + } + + return info; +@@ -75,11 +80,27 @@ QDateTime dateTimeFromASN1(const ASN1_TIME *aTime) + QDateTime result; + tm lTime; + ++#ifdef LIBRESSL_VERSION_NUMBER ++ const char *data; ++ size_t len; ++ int type; ++ ++ data = (const char*)ASN1_STRING_get0_data((const ASN1_STRING *)aTime); ++ len = ASN1_STRING_length(aTime); ++ type = ASN1_STRING_type(aTime); ++ ++ if (ASN1_time_parse(data, len, &lTime, type) == type) { ++ QDate resDate(lTime.tm_year + 1900, lTime.tm_mon + 1, lTime.tm_mday); ++ QTime resTime(lTime.tm_hour, lTime.tm_min, lTime.tm_sec); ++ result = QDateTime(resDate, resTime, Qt::UTC); ++ } ++#else + if (q_ASN1_TIME_to_tm(aTime, &lTime)) { + QDate resDate(lTime.tm_year + 1900, lTime.tm_mon + 1, lTime.tm_mday); + QTime resTime(lTime.tm_hour, lTime.tm_min, lTime.tm_sec); + result = QDateTime(resDate, resTime, QTimeZone::UTC); + } ++#endif + + return result; + } +@@ -190,7 +211,11 @@ QVariant x509UnknownExtensionToValue(X509_EXTENSION *e + QVariantList list; + bool isMap = false; + ++#ifdef LIBRESSL_VERSION_NUMBER ++ for (int j = 0; j < q_SKM_sk_num(CONF_VALUE, val); j++) { ++#else + for (int j = 0; j < q_SKM_sk_num(val); j++) { ++#endif + CONF_VALUE *nval = q_SKM_sk_value(CONF_VALUE, val, j); + if (nval->name && nval->value) { + isMap = true; +@@ -286,7 +311,11 @@ QVariant x509ExtensionToValue(X509_EXTENSION *ext) + if (!info) + return {}; + QVariantMap result; ++#if defined LIBRESSL_VERSION_NUMBER ++ for (int i=0; i < q_SKM_sk_num(ACCESS_DESCRIPTION, info); i++) { ++#else + for (int i=0; i < q_SKM_sk_num(info); i++) { ++#endif + ACCESS_DESCRIPTION *ad = q_SKM_sk_value(ACCESS_DESCRIPTION, info, i); + + GENERAL_NAME *name = ad->location; diff --git a/devel/qt6-base/pkg-plist b/devel/qt6-base/pkg-plist index acff5d198854..34f81d81a326 100644 --- a/devel/qt6-base/pkg-plist +++ b/devel/qt6-base/pkg-plist @@ -1520,7 +1520,7 @@ bin/qmake6 %%QT_INCDIR%%/QtNetwork/%%FULLVER%%/QtNetwork/private/qauthenticator_p.h %%QT_INCDIR%%/QtNetwork/%%FULLVER%%/QtNetwork/private/qdecompresshelper_p.h %%QT_INCDIR%%/QtNetwork/%%FULLVER%%/QtNetwork/private/qdnslookup_p.h -%%QT_INCDIR%%/QtNetwork/%%FULLVER%%/QtNetwork/private/qdtls_p.h +%%DTLS%%%%QT_INCDIR%%/QtNetwork/%%FULLVER%%/QtNetwork/private/qdtls_p.h %%QT_INCDIR%%/QtNetwork/%%FULLVER%%/QtNetwork/private/qhostaddress_p.h %%QT_INCDIR%%/QtNetwork/%%FULLVER%%/QtNetwork/private/qhostinfo_p.h %%QT_INCDIR%%/QtNetwork/%%FULLVER%%/QtNetwork/private/qhsts_p.h @@ -1591,8 +1591,8 @@ bin/qmake6 %%QT_INCDIR%%/QtNetwork/QDnsMailExchangeRecord %%QT_INCDIR%%/QtNetwork/QDnsServiceRecord %%QT_INCDIR%%/QtNetwork/QDnsTextRecord -%%QT_INCDIR%%/QtNetwork/QDtls -%%QT_INCDIR%%/QtNetwork/QDtlsClientVerifier +%%DTLS%%%%QT_INCDIR%%/QtNetwork/QDtls +%%DTLS%%%%QT_INCDIR%%/QtNetwork/QDtlsClientVerifier %%QT_INCDIR%%/QtNetwork/QHostAddress %%QT_INCDIR%%/QtNetwork/QHostInfo %%QT_INCDIR%%/QtNetwork/QHstsPolicy @@ -1642,7 +1642,7 @@ bin/qmake6 %%QT_INCDIR%%/QtNetwork/qabstractsocket.h %%QT_INCDIR%%/QtNetwork/qauthenticator.h %%QT_INCDIR%%/QtNetwork/qdnslookup.h -%%QT_INCDIR%%/QtNetwork/qdtls.h +%%DTLS%%%%QT_INCDIR%%/QtNetwork/qdtls.h %%QT_INCDIR%%/QtNetwork/qhostaddress.h %%QT_INCDIR%%/QtNetwork/qhostinfo.h %%QT_INCDIR%%/QtNetwork/qhstspolicy.h