aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason E. Hale <jhale@FreeBSD.org>2023-10-24 19:12:16 +0000
committerJason E. Hale <jhale@FreeBSD.org>2023-10-24 21:26:04 +0000
commit8efd8ab39b18ee443a41a4c0c780e6663843e9ab (patch)
tree2dbae61574237b222fc3c7b11b79b1f5e989d464
parent2f9df5cd6407e05bd466afb19dda3bb154ea4d5b (diff)
downloadports-8efd8ab39b18ee443a41a4c0c780e6663843e9ab.tar.gz
ports-8efd8ab39b18ee443a41a4c0c780e6663843e9ab.zip
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)
-rw-r--r--devel/qt6-base/Makefile18
-rw-r--r--devel/qt6-base/files/patch-cmake_QtBuild.cmake4
-rw-r--r--devel/qt6-base/files/patch-cmake_QtFlagHandlingHelpers.cmake4
-rw-r--r--devel/qt6-base/files/patch-cmake_QtPkgConfigHelpers.cmake4
-rw-r--r--devel/qt6-base/files/patch-cmake_QtRpathHelpers.cmake6
-rw-r--r--devel/qt6-base/files/patch-src_platformsupport_input_evdevkeyboard_qevdevkeyboardhandler.cpp4
-rw-r--r--devel/qt6-base/files/patch-src_platformsupport_input_evdevmouse_qevdevmousehandler.cpp4
-rw-r--r--devel/qt6-base/files/patch-src_platformsupport_input_evdevtablet_qevdevtablethandler.cpp4
-rw-r--r--devel/qt6-base/files/patch-src_platformsupport_input_evdevtouch_qevdevtouchhandler.cpp4
-rw-r--r--devel/qt6-base/files/patch-src_plugins_tls_openssl_qopenssl__p.h16
-rw-r--r--devel/qt6-base/files/patch-src_plugins_tls_openssl_qsslcontext__openssl.cpp62
-rw-r--r--devel/qt6-base/files/patch-src_plugins_tls_openssl_qsslsocket__openssl__symbols.cpp170
-rw-r--r--devel/qt6-base/files/patch-src_plugins_tls_openssl_qsslsocket__openssl__symbols__p.h146
-rw-r--r--devel/qt6-base/files/patch-src_plugins_tls_openssl_qtls__openssl.cpp18
-rw-r--r--devel/qt6-base/files/patch-src_plugins_tls_openssl_qx509__openssl.cpp68
-rw-r--r--devel/qt6-base/pkg-plist8
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