git: 8efd8ab39b18 - main - devel/qt6-base: Enable building with non-base SSL

From: Jason E. Hale <jhale_at_FreeBSD.org>
Date: Tue, 24 Oct 2023 21:26:13 UTC
The branch main has been updated by jhale:

URL: https://cgit.FreeBSD.org/ports/commit/?id=8efd8ab39b18ee443a41a4c0c780e6663843e9ab

commit 8efd8ab39b18ee443a41a4c0c780e6663843e9ab
Author:     Jason E. Hale <jhale@FreeBSD.org>
AuthorDate: 2023-10-24 19:12:16 +0000
Commit:     Jason E. Hale <jhale@FreeBSD.org>
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:    <tjlegg@gmail.com> [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 <bsd.port.pre.mk>
 
+# 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 <QtGui/private/qguiapplication_p.h>
  #include <QtGui/private/qinputdevicemanager_p.h>
  
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 <errno.h>
  
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 <QLoggingCategory>
  #include <QtCore/private/qcore_unix_p.h>
  #include <qpa/qwindowsysteminterface.h>
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 <mutex>
  
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<SSL_CONF_CTX> 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.<SHLIB_VERSION_NUMBER>
+-    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.<SHLIB_VERSION_NUMBER> and libcrypto.so.<SHLIB_VERSION_NUMBER> 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<QByteArray, QString> 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