Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qsslcontext_openssl_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// Copyright (C) 2014 BlackBerry Limited. All rights reserved.
3// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
4
5
6#ifndef QSSLCONTEXT_OPENSSL_P_H
7#define QSSLCONTEXT_OPENSSL_P_H
8
9//
10// W A R N I N G
11// -------------
12//
13// This file is not part of the Qt API. It exists purely as an
14// implementation detail. This header file may change from version to
15// version without notice, or even be removed.
16//
17// We mean it.
18//
19
20#include <QtNetwork/private/qtnetworkglobal_p.h>
21#include <QtCore/qvariant.h>
22#include <QtNetwork/qsslcertificate.h>
23#include <QtNetwork/qsslconfiguration.h>
24#include <openssl/ssl.h>
25
27
28#ifndef QT_NO_SSL
29
31{
32public:
33
35
36 static std::shared_ptr<QSslContext> sharedFromConfiguration(QSslSocket::SslMode mode, const QSslConfiguration &configuration,
37 bool allowRootCertOnDemandLoading);
38 static std::shared_ptr<QSslContext> sharedFromPrivateConfiguration(QSslSocket::SslMode mode, QSslConfigurationPrivate *privConfiguration,
39 bool allowRootCertOnDemandLoading);
40
41 static qssloptions setupOpenSslOptions(QSsl::SslProtocol protocol, QSsl::SslOptions sslOptions);
42
44 QString errorString() const;
45
46 SSL* createSsl();
47 bool cacheSession(SSL*); // should be called when handshake completed
48
49 QByteArray sessionASN1() const;
51 int sessionTicketLifeTimeHint() const;
52
53 static void forceAutoTestSecurityLevel();
54
55#ifndef OPENSSL_NO_NEXTPROTONEG
56 // must be public because we want to use it from an OpenSSL callback
57 struct NPNContext {
59 len(0),
60 status(QSslConfiguration::NextProtocolNegotiationNone)
61 { }
62 unsigned char *data;
63 unsigned short len;
65 };
66 NPNContext npnContext() const;
67#endif // !OPENSSL_NO_NEXTPROTONEG
68
69protected:
71
72private:
73 static void initSslContext(QSslContext* sslContext, QSslSocket::SslMode mode, const QSslConfiguration &configuration,
74 bool allowRootCertOnDemandLoading);
75 static void applyBackendConfig(QSslContext *sslContext);
76
77private:
78 SSL_CTX* ctx;
79 EVP_PKEY *pkey;
80 SSL_SESSION *session;
81 QByteArray m_sessionASN1;
82 int m_sessionTicketLifeTimeHint;
83 QSslError::SslError errorCode;
84 QString errorStr;
85 QSslConfiguration sslConfiguration;
86#ifndef OPENSSL_NO_NEXTPROTONEG
87 QByteArray m_supportedNPNVersions;
88 NPNContext m_npnContext;
89#endif // !OPENSSL_NO_NEXTPROTONEG
90};
91
92#endif // QT_NO_SSL
93
95
96#endif // QSSLCONTEXT_OPENSSL_P_H
\inmodule QtCore
Definition qbytearray.h:57
The QSslConfiguration class holds the configuration and state of an SSL connection.
NextProtocolNegotiationStatus
Describes the status of the Next Protocol Negotiation (NPN) or Application-Layer Protocol Negotiation...
QByteArray sessionASN1() const
static std::shared_ptr< QSslContext > sharedFromPrivateConfiguration(QSslSocket::SslMode mode, QSslConfigurationPrivate *privConfiguration, bool allowRootCertOnDemandLoading)
int sessionTicketLifeTimeHint() const
NPNContext npnContext() const
QString errorString() const
static void forceAutoTestSecurityLevel()
void setSessionASN1(const QByteArray &sessionASN1)
bool cacheSession(SSL *)
static qssloptions setupOpenSslOptions(QSsl::SslProtocol protocol, QSsl::SslOptions sslOptions)
QSslError::SslError error() const
static std::shared_ptr< QSslContext > sharedFromConfiguration(QSslSocket::SslMode mode, const QSslConfiguration &configuration, bool allowRootCertOnDemandLoading)
SslError
Describes all recognized errors that can occur during an SSL handshake.
Definition qsslerror.h:24
SslMode
Describes the connection modes available for QSslSocket.
Definition qsslsocket.h:33
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
EGLContext ctx
SslProtocol
Describes the protocol of the cipher.
Definition qssl.h:50
Combined button and popup list for selecting options.
GLenum mode
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLenum GLsizei len
unsigned long qssloptions
QObject::connect nullptr
QSslConfiguration::NextProtocolNegotiationStatus status