summaryrefslogtreecommitdiffstats
path: root/src/network/doc/src
diff options
context:
space:
mode:
Diffstat (limited to 'src/network/doc/src')
-rw-r--r--src/network/doc/src/dontdocument.qdoc28
-rw-r--r--src/network/doc/src/examples.qdoc37
-rw-r--r--src/network/doc/src/external-resources.qdoc28
-rw-r--r--src/network/doc/src/network-programming.qdoc32
-rw-r--r--src/network/doc/src/qt6-changes.qdoc185
-rw-r--r--src/network/doc/src/qtnetwork.qdoc70
-rw-r--r--src/network/doc/src/ssl.qdoc91
7 files changed, 272 insertions, 199 deletions
diff --git a/src/network/doc/src/dontdocument.qdoc b/src/network/doc/src/dontdocument.qdoc
index fe2e54b34c..eb0f8eb07e 100644
--- a/src/network/doc/src/dontdocument.qdoc
+++ b/src/network/doc/src/dontdocument.qdoc
@@ -1,29 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2019 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2019 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\dontdocument (QTypeInfo QMetaTypeId QIPv6Address)
diff --git a/src/network/doc/src/examples.qdoc b/src/network/doc/src/examples.qdoc
index 3d31e04989..ee9084c74c 100644
--- a/src/network/doc/src/examples.qdoc
+++ b/src/network/doc/src/examples.qdoc
@@ -1,29 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\group examples-network
@@ -31,7 +7,7 @@
\title Network Examples
\brief How to do network programming in Qt.
- \image network-examples.png
+ \image network-examples.webp
Qt is provided with an extensive set of network classes to support both
client-based and server side network programming.
@@ -46,19 +22,12 @@
\li \l{network/blockingfortuneclient}{Blocking Fortune Client}\raisedaster
\li \l{network/broadcastreceiver}{Broadcast Receiver}
\li \l{network/broadcastsender}{Broadcast Sender}
- \li \l{network/download}{Download}
- \li \l{network/downloadmanager}{Download Manager}
\li \l{network/network-chat}{Network Chat}
\li \l{network/fortuneclient}{Fortune Client}\raisedaster
\li \l{network/fortuneserver}{Fortune Server}\raisedaster
- \li \l{network/qftp}{FTP}\raisedaster
\li \l{network/http}{HTTP}
- \li \l{network/loopback}{Loopback}
\li \l{network/threadedfortuneserver}{Threaded Fortune Server}\raisedaster
\li \l{network/torrent}{Torrent}
- \li \l{network/googlesuggest}{Google Suggest}
- \li \l{network/bearercloud}{Bearer Cloud}\raisedaster
- \li \l{network/bearermonitor}{Bearer Monitor}
\li \l{network/securesocketclient}{Secure Socket Client}
\li \l{network/multicastreceiver}{Multicast Receiver}
\li \l{network/multicastsender}{Multicast Sender}
diff --git a/src/network/doc/src/external-resources.qdoc b/src/network/doc/src/external-resources.qdoc
index f033ddc729..60680cde0a 100644
--- a/src/network/doc/src/external-resources.qdoc
+++ b/src/network/doc/src/external-resources.qdoc
@@ -1,29 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\externalpage https://www.openssl.org/
diff --git a/src/network/doc/src/network-programming.qdoc b/src/network/doc/src/network-programming.qdoc
index 96bbd8d38b..d301ad01a3 100644
--- a/src/network/doc/src/network-programming.qdoc
+++ b/src/network/doc/src/network-programming.qdoc
@@ -1,29 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\group network
@@ -51,7 +27,7 @@
The \l{Qt Network C++ Classes} page contains a list of the C++ classes
in Qt Network.
- \section1 High Level Network Operations for HTTP and FTP
+ \section1 High Level Network Operations for HTTP
The Network Access API is a collection of classes for performing
common network operations. The API provides an abstraction layer
@@ -64,7 +40,7 @@
with a request, such as any header information and the encryption
used. The URL specified when a request object is constructed
determines the protocol used for a request.
- Currently HTTP, FTP and local file URLs are supported for uploading
+ Currently HTTP and local file URLs are supported for uploading
and downloading.
The coordination of network operations is performed by the
diff --git a/src/network/doc/src/qt6-changes.qdoc b/src/network/doc/src/qt6-changes.qdoc
new file mode 100644
index 0000000000..3adce84760
--- /dev/null
+++ b/src/network/doc/src/qt6-changes.qdoc
@@ -0,0 +1,185 @@
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
+
+/*!
+ \page network-changes-qt6.html
+ \title Changes to Qt Network
+ \ingroup changes-qt-5-to-6
+ \brief Migrate Qt Network to Qt 6.
+
+ Qt 6 is a result of the conscious effort to make the framework more
+ efficient and easy to use.
+
+ We try to maintain binary and source compatibility for all the public
+ APIs in each release. But some changes were inevitable in an effort to
+ make Qt a better framework.
+
+ In this topic we summarize those changes in Qt Network, and provide
+ guidance to handle them.
+
+ \section1 API changes
+
+ \section2 Ambiguous name overloads
+
+ Several ambiguous overloaded functions are removed. The error() signal
+ is replaced by errorOccurred() in QAbstractSocket and its heirs
+ (QTcpSocket, QUdpSocket, QLocalSocket, and QSslSocket), and in QNetworkReply.
+ Code such as:
+
+ \code
+ connect(socket, qOverload<QAbstractSocket::SocketError>(&QAbstractSocket::error),
+ this, &SomeClass::errorSlot);
+ \endcode
+
+ must therefore be changed to:
+
+ \code
+ connect(socket, &QAbstractSocket::errorOccurred, this, &SomeClass::errorSlot);
+ \endcode
+
+ In QSslSocket, the function that returns a list of errors encountered
+ during the TLS handshake:
+
+ \code
+ QList<QSslError> sslErrors() const;
+ \endcode
+
+ is renamed to sslHandshakeErrors():
+
+ \code
+ const auto tlsErrors = socket.sslHandshakeErrors();
+ \endcode
+
+ \section2 Bearer management is removed
+
+ The classes QNetworkConfiguration and QNetworkConfigurationManager are removed in Qt 6.
+ Consequently, the following member functions of QNetworkAccessManager are also removed:
+
+ \code
+ void setConfiguration(const QNetworkConfiguration &config);
+ QNetworkConfiguration configuration() const;
+ QNetworkConfiguration activeConfiguration() const;
+ void setNetworkAccessible(NetworkAccessibility accessible);
+ NetworkAccessibility networkAccessible() const;
+ void networkSessionConnected();
+ \endcode
+
+ QNetworkInformation, initially introduced in Qt 6.1, aims to replace some
+ aspects of the bearer management API. It works by providing a unified API
+ which subscribes to changes to the network as notified by the operating
+ system.
+
+ QNetworkInformation::reachability(), introduced in Qt 6.1, replaces the
+ QNetworkAccessManager::networkAccessible() function, while adding more
+ detailed information about the reachability of the network. See its
+ documentation for more details.
+
+ In Qt 6.2 QNetworkInformation gained the ability to detect captive portals.
+
+ In Qt 6.3 QNetworkInformation gained QNetworkInformation::transportMedium()
+ and QNetworkInformation::isMetered().
+
+ \section2 Deleted enumerators
+
+ Several enumerators are removed in QtNetwork. This includes constants
+ for no longer supported protocols and functionality:
+
+ \list
+ \li QSsl::SslV2;
+ \li QSsl::SslV3;
+ \li QSsl::TlsV1SslV3;
+ \li QNetworkRequest::SpdyAllowedAttribute;
+ \li QNetworkRequest::SpdyWasUsedAttribute;
+ \li QNetworkAccessManager::UnknownAccessibility;
+ \li QNetworkAccessManager::NotAccessible;
+ \li QNetworkAccessManager::Accessible
+ \endlist
+
+ and enumerators whose names did not follow proper naming conventions:
+
+ \list
+ \li QSsl::TlsV1 (QSsl::TlsV1_0 is the proper name);
+ \li QNetworkRequest::HTTP2AllowedAttribute (use QNetworkRequest::Http2AllowedAttribute);
+ \li QNetworkRequest::HTTP2WasUsedAttribute (use QNetworkRequest::Http2WasUsedAttribute).
+ \endlist
+
+ QNetworkRequest::FollowRedirectsAttribute is removed in Qt 6, see
+ \l {Redirect policies}{the section about redirects handling} below.
+
+ \section2 Configuring QSslSocket
+
+ The following deprecated functions are removed in Qt 6:
+
+ \code
+ QList<QSslCipher> ciphers() const;
+ void setCiphers(const QList<QSslCipher> &ciphers);
+ void setCiphers(const QString &ciphers);
+ static void setDefaultCiphers(const QList<QSslCipher> &ciphers);
+ static QList<QSslCipher> defaultCiphers();
+ static QList<QSslCipher> supportedCiphers();
+ QList<QSslCipher> ciphers() const;
+ void setCiphers(const QList<QSslCipher> &ciphers);
+ void setCiphers(const QString &ciphers);
+ static void setDefaultCiphers(const QList<QSslCipher> &ciphers);
+ static QList<QSslCipher> defaultCiphers();
+ static QList<QSslCipher> supportedCiphers();
+ bool addCaCertificates(const QString &path, QSsl::EncodingFormat format = QSsl::Pem,
+ QRegExp::PatternSyntax syntax = QRegExp::FixedString);
+ void addCaCertificate(const QSslCertificate &certificate);
+ void addCaCertificates(const QList<QSslCertificate> &certificates);
+ void setCaCertificates(const QList<QSslCertificate> &certificates);
+ QList<QSslCertificate> caCertificates() const;
+ static bool addDefaultCaCertificates(const QString &path, QSsl::EncodingFormat format = QSsl::Pem,
+ QRegExp::PatternSyntax syntax = QRegExp::FixedString);
+ static void addDefaultCaCertificate(const QSslCertificate &certificate);
+ static void addDefaultCaCertificates(const QList<QSslCertificate> &certificates);
+ static void setDefaultCaCertificates(const QList<QSslCertificate> &certificates);
+ static QList<QSslCertificate> defaultCaCertificates();
+ static QList<QSslCertificate> systemCaCertificates();
+ \endcode
+
+ Use QSslConfiguration and its member functions to set these parameters, e.g.:
+
+ \code
+ auto sslConfiguration = QSslConfiguration::defaultConfiguration();
+ sslConfiguration.setCiphers("ECDHE-ECDSA-AES256-SHA384");
+ // Set other parameters here ...
+ socket.setSslConfiguration(sslConfiguration);
+ \endcode
+
+ \section1 Changes in QNetworkAccessManager's default behavior
+
+ \section2 Redirect policies
+
+ In Qt 6, the default redirect policy has changed from manual to
+ QNetworkRequest::NoLessSafeRedirectPolicy. If your application relies
+ on manual redirect handling (it connects its slot to the QNetworkReply::redirected
+ signal), you have to explicitly set this policy when creating a request:
+
+ \code
+ request.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::ManualRedirectPolicy);
+ \endcode
+
+ \section2 HTTP/2 is enabled by default
+
+ In Qt 6 QNetworkAccessManager enables HTTP/2 protocol by default. Depending on the
+ scheme ("https" or "http"), QNetworkAccessManager will use the Application Layer
+ Protocol Negotiation TLS extension or "protocol upgrade" HTTP header to negotiate HTTP/2.
+ If HTTP/2 cannot be negotiated, the access manager will fall back to using HTTP/1.1.
+ If your application can only use HTTP/1.1, you have to disable HTTP/2 manually
+ on a new request:
+
+ \code
+ request.setAttribute(QNetworkRequest::Http2AllowedAttribute, false);
+ \endcode
+
+ \section2 QNetworkAccessManager now guards against archive bombs
+
+ Starting with Qt 6.2 QNetworkAccessManager will guard against compressed
+ files that decompress to files which are much larger than their compressed
+ form by erroring out the reply if the decompression ratio exceeds a certain
+ threshold.
+ This check is only applied to files larger than a certain size, which can be
+ customized (or disabled by passing -1) by calling
+ \l{QNetworkRequest::setDecompressedSafetyCheckThreshold()}.
+*/
diff --git a/src/network/doc/src/qtnetwork.qdoc b/src/network/doc/src/qtnetwork.qdoc
index e18bcd3148..629c7113db 100644
--- a/src/network/doc/src/qtnetwork.qdoc
+++ b/src/network/doc/src/qtnetwork.qdoc
@@ -1,57 +1,36 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\page qtnetwork-index.html
\title Qt Network
\brief Provides networking capabilities
- Qt Network provides a set of APIs for programming applications that use
- TCP/IP. Operations such as requests, cookies, and sending data over HTTP
- are handled by various C++ classes.
+ The Qt Network module provides a set of APIs for programming
+ applications that use TCP/IP. Operations such as requests, cookies, and
+ sending data over HTTP are handled by various C++ classes.
- \include module-use.qdocinc using qt module
- \snippet doc/snippets/CMakeLists.txt 0
+ \section1 Using the Module
- See also the \l{Build with CMake} overview.
+ \include {module-use.qdocinc} {using the c++ api}
- \section2 Building with qmake
+ \section2 Building with CMake
+
+ \include {module-use.qdocinc} {building with cmake} {Network}
- Add \c network to the \c QT variable:
+ \section2 Building with qmake
- \snippet doc/snippets/snippets.pro 0
+ \include {module-use.qdocinc} {building_with_qmake} {network}
\section1 Articles and Guides
These articles contain information about Qt Network setup and about
applications with networking capabilities.
\list
- \li \l{Network Programming with Qt} - Programming applications with networking capabilities
- \li \l{Secure Sockets Layer (SSL) Classes} - Classes for secure communication over network sockets
+ \li \l{Network Programming with Qt} - Programming applications with
+ networking capabilities
+ \li \l{Secure Sockets Layer (SSL) Classes} - Classes for secure
+ communication over network sockets
\endlist
\section1 API Reference
@@ -60,6 +39,10 @@
\li \l{Qt Network C++ Classes}{C++ Classes}
\endlist
+ \section1 Module Evolution
+ \l{Changes to Qt Network} lists important changes in the module API
+ and functionality that were done for the Qt 6 series of Qt.
+
\section1 Licenses and Attributions
Qt Network is available under commercial licenses from \l{The Qt Company}.
@@ -68,7 +51,13 @@
the \l{GNU General Public License, version 2}.
See \l{Qt Licensing} for further details.
- Qt Network can use the \l{OpenSSL Toolkit} as a backend. The library is then
+ Furthermore, Qt Network in Qt \QtVersion may contain third-party
+ modules under the following permissive licenses:
+
+ \generatelist{groupsbymodule attributions-qtnetwork}
+
+ Qt Network can make use of the \l{OpenSSL Toolkit} as a back end.
+ The library is then
linked against OpenSSL in a way that requires compliance with the \l{OpenSSL
License}. To allow linking OpenSSL with Qt Network under the GPL, following
exceptions to the GPL do apply:
@@ -98,6 +87,7 @@
\qtvariable network
\brief Provides classes to make network programming easier and portable.
- Qt Network provides a set of APIs for programming applications that use
- TCP/IP. See the \l{Qt Network} overview for more information.
+
+ The \l{Qt Network} page contains information about how to use the module.
+
*/
diff --git a/src/network/doc/src/ssl.qdoc b/src/network/doc/src/ssl.qdoc
index e485a1b393..83549f61e8 100644
--- a/src/network/doc/src/ssl.qdoc
+++ b/src/network/doc/src/ssl.qdoc
@@ -1,29 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\page ssl.html
@@ -33,39 +9,64 @@
\keyword SSL
The classes below provide support for secure network communication using
- the Secure Sockets Layer (SSL) protocol, using the \l{OpenSSL Toolkit}
- to perform encryption and protocol handling.
+ the Secure Sockets Layer (SSL) protocol, using a native TLS backend,
+ the \l{OpenSSL Toolkit}, or any appropriate TLS plugin to perform encryption
+ and protocol handling.
- From Qt version 5.6 onwards, the officially supported version for OpenSSL
- is 1.0.0 or later.
+ From Qt version 5.15 onward, the officially supported version for OpenSSL
+ is 1.1.1 or later.
+
+ Qt version 5.15.1 onward is also compatible with OpenSSL 3.
\annotatedlist ssl
+ For Android applications see \l{Adding OpenSSL Support for Android}.
+
+ \section1 Enabling and Disabling SSL Support when Building Qt from Source
- \section1 Enabling and Disabling SSL Support
+ When building Qt from source, Qt builds plugins for native TLS libraries
+ that are supported for the operating system you are building for. For
+ Windows this means
+ \l{https://docs.microsoft.com/en-us/windows/win32/com/schannel}{Schannel},
+ while for macOS this is
+ \l{https://developer.apple.com/documentation/security/secure_transport}{Secure Transport}.
- When building Qt from source, the configuration system checks for the presence
- of the \c{openssl/opensslv.h} header provided by source or developer packages
- of OpenSSL.
+ On all platforms, the configuration system checks for the presence of the
+ \c{openssl/opensslv.h} header provided by source or developer packages
+ of OpenSSL. If found, it will enable and build the OpenSSL backend for Qt.
- By default, an SSL-enabled Qt library dynamically loads any installed OpenSSL
- library at run-time. However, it is possible to link against the library at
- compile-time by configuring Qt with the \c{-openssl-linked} option.
+ By default, an OpenSSL-enabled Qt library dynamically loads any installed
+ OpenSSL library at run-time. However, it is possible to link against the
+ library at compile-time by configuring Qt with the \c{-openssl-linked}
+ option.
- When building a version of Qt linked against OpenSSL, the build system will
- attempt to link with libssl and libcrypt libraries located in the default
- location on the developer's system. This location is configurable:
- set the \c OPENSSL_LIBS environment variable to contain the linker options
- required to link Qt against the installed library. For example, on a Unix/Linux
- system:
+ When building a version of Qt linked against OpenSSL, Qt's build system will
+ use CMake's \c{FindOpenSSL} command to find OpenSSL in several standard
+ locations. You can set the CMake variable OPENSSL_ROOT_DIR to force a
+ specific location.
+ For example:
\code
- OPENSSL_LIBS='-L/opt/ssl/lib -lssl -lcrypto' ./configure -openssl-linked
+ configure -openssl-linked -- -D OPENSSL_ROOT_DIR=<openssl_dir>
\endcode
To disable SSL support in a Qt build, configure Qt with the \c{-no-openssl}
option.
+ \section1 Considerations While Packaging Your Application
+
+ When you package your application, you may run a tool like \l{windeployqt}. This
+ copies all the plugins for the libraries you use to the \c{plugins/} folder.
+ However, for TLS you only need one backend, and you may delete the other
+ plugins before packaging your application. For example, if you're on Windows
+ and don't require any of the extra features the OpenSSL backend provides,
+ you can choose to forego shipping the \c{qopensslbackend} plugin as well as
+ the OpenSSL library, and simply ship the \c{qschannelbackend} plugin.
+
+ However, shipping multiple backends is not a problem. Qt will
+ attempt to load the backends in order (with OpenSSL attempted first) until
+ one is successfully loaded. The other backends are then unused.
+
\section1 Datagram Transport Layer Security
Datagram Transport Layer Security (DTLS) is a protocol that enables security
@@ -73,7 +74,7 @@
eavesdropping, tampering, or message forgery. The DTLS protocol is based on the
stream-oriented Transport Layer Security (TLS) protocol. QtNetwork enables
the use of DTLS with User Datagram Protocol (UDP), as defined by
- \l {https://tools.ietf.org/html/rfc6347}{RFC 6347}.
+ \l {RFC 6347}.
\section1 Import and Export Restrictions