Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qtls_st_p.h
Go to the documentation of this file.
1// Copyright (C) 2014 Jeremy Lainé <jeremy.laine@m4x.org>
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef QTLS_ST_P_H
6#define QTLS_ST_P_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists for the convenience
13// of the QtNetwork library. This header file may change from
14// version to version without notice, or even be removed.
15//
16// We mean it.
17//
18
19#include <QtNetwork/private/qtnetworkglobal_p.h>
20
22
23#include <QtCore/qobject.h>
24#include <QtCore/qstring.h>
25#include <QtCore/qglobal.h>
26#include <QtCore/qlist.h>
27
28#include <QtNetwork/qabstractsocket.h>
29#include <QtNetwork/private/qsslsocket_p.h>
30
31// SecureTransport was deprecated in macOS 10.15 and iOS 13, and is no
32// longer supported. We should be using Network.framework instead.
33// See QTBUG-119171 for more information.
34QT_WARNING_DISABLE_DEPRECATED
35
36#include <Security/Security.h>
37#include <Security/SecureTransport.h>
38
39QT_BEGIN_NAMESPACE
40
41namespace QTlsPrivate {
42
44{
45public:
46 explicit QSecureTransportContext(SSLContextRef context);
48
49 operator SSLContextRef () const;
50 void reset(SSLContextRef newContext);
51private:
52 SSLContextRef context;
53
55};
56
58{
59public:
62
63 void init(QSslSocket *qObj, QSslSocketPrivate *dObj) override;
67 QSslCipher sessionCipher() const override;
68 QSsl::SslProtocol sessionProtocol() const override;
71 void transmit() override;
72 QList<QSslError> tlsErrors() const override;
73
74 SSLCipherSuite SSLCipherSuite_from_QSslCipher(const QSslCipher &ciph);
75
76private:
77 // SSL context management/properties:
78 bool initSslContext();
79 void destroySslContext();
80 bool setSessionCertificate(QString &errorDescription,
81 QAbstractSocket::SocketError &errorCode);
82 bool setSessionProtocol();
83 // Aux. functions to do a verification during handshake phase:
84 bool canIgnoreTrustVerificationFailure() const;
85 bool verifySessionProtocol() const;
86 bool verifyPeerTrust();
87
88 bool checkSslErrors();
89 bool startHandshake();
90
91 bool isHandshakeComplete() const;
92
93 // IO callbacks:
94 static OSStatus ReadCallback(TlsCryptographSecureTransport *socket, char *data, size_t *dataLength);
95 static OSStatus WriteCallback(TlsCryptographSecureTransport *plainSocket, const char *data, size_t *dataLength);
96
98 bool renegotiating = false;
99 QSslSocket *q = nullptr;
100 QSslSocketPrivate *d = nullptr;
101 bool shutdown = false;
102 QList<QSslError> sslErrors;
103
105};
106
107} // namespace QTlsPrivate
108
109QT_END_NAMESPACE
110
111#endif // QTLS_ST_P_H
void reset(SSLContextRef newContext)
Definition qtls_st.cpp:193
QSecureTransportContext(SSLContextRef context)
Definition qtls_st.cpp:178
QSslCipher sessionCipher() const override
Definition qtls_st.cpp:384
QList< QSslError > tlsErrors() const override
Definition qtls_st.cpp:1330
void init(QSslSocket *qObj, QSslSocketPrivate *dObj) override
Definition qtls_st.cpp:299
QSsl::SslProtocol sessionProtocol() const override
Definition qtls_st.cpp:393
SSLCipherSuite SSLCipherSuite_from_QSslCipher(const QSslCipher &ciph)
Definition qtls_st.cpp:540
Namespace containing onternal types that TLS backends implement.
QSslCipher QSslCipher_from_SSLCipherSuite(SSLCipherSuite cipher)
static const uint8_t dhparam[]
Definition qtls_st.cpp:200
SSLContextRef qt_createSecureTransportContext(QSslSocket::SslMode mode)
Definition qtls_st.cpp:167
QByteArray _q_makePkcs12(const QList< QSslCertificate > &certs, const QSslKey &key, const QString &passPhrase)