9#include <QtCore/qsysinfo.h>
10#include <QtCore/qmutex.h>
32 case TLS_RSA_WITH_AES_128_CBC_SHA:
33 name =
"AES128-SHA"_L1;
35 case TLS_DHE_RSA_WITH_AES_128_CBC_SHA:
36 name =
"DHE-RSA-AES128-SHA"_L1;
38 case TLS_RSA_WITH_AES_256_CBC_SHA:
39 name =
"AES256-SHA"_L1;
41 case TLS_DHE_RSA_WITH_AES_256_CBC_SHA:
42 name =
"DHE-RSA-AES256-SHA"_L1;
46 case TLS_ECDH_ECDSA_WITH_NULL_SHA:
47 name =
"ECDH-ECDSA-NULL-SHA"_L1;
49 case TLS_ECDH_ECDSA_WITH_RC4_128_SHA:
50 name =
"ECDH-ECDSA-RC4-SHA"_L1;
52 case TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA:
53 name =
"ECDH-ECDSA-DES-CBC3-SHA"_L1;
55 case TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA:
56 name =
"ECDH-ECDSA-AES128-SHA"_L1;
58 case TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA:
59 name =
"ECDH-ECDSA-AES256-SHA"_L1;
61 case TLS_ECDHE_ECDSA_WITH_NULL_SHA:
62 name =
"ECDHE-ECDSA-NULL-SHA"_L1;
64 case TLS_ECDHE_ECDSA_WITH_RC4_128_SHA:
65 name =
"ECDHE-ECDSA-RC4-SHA"_L1;
67 case TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA:
68 name =
"ECDHE-ECDSA-DES-CBC3-SHA"_L1;
70 case TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA:
71 name =
"ECDHE-ECDSA-AES128-SHA"_L1;
73 case TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA:
74 name =
"ECDHE-ECDSA-AES256-SHA"_L1;
76 case TLS_ECDH_RSA_WITH_NULL_SHA:
77 name =
"ECDH-RSA-NULL-SHA"_L1;
79 case TLS_ECDH_RSA_WITH_RC4_128_SHA:
80 name =
"ECDH-RSA-RC4-SHA"_L1;
82 case TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA:
83 name =
"ECDH-RSA-DES-CBC3-SHA"_L1;
85 case TLS_ECDH_RSA_WITH_AES_128_CBC_SHA:
86 name =
"ECDH-RSA-AES128-SHA"_L1;
88 case TLS_ECDH_RSA_WITH_AES_256_CBC_SHA:
89 name =
"ECDH-RSA-AES256-SHA"_L1;
91 case TLS_ECDHE_RSA_WITH_NULL_SHA:
92 name =
"ECDHE-RSA-NULL-SHA"_L1;
94 case TLS_ECDHE_RSA_WITH_RC4_128_SHA:
95 name =
"ECDHE-RSA-RC4-SHA"_L1;
97 case TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA:
98 name =
"ECDHE-RSA-DES-CBC3-SHA"_L1;
100 case TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA:
101 name =
"ECDHE-RSA-AES128-SHA"_L1;
103 case TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA:
104 name =
"ECDHE-RSA-AES256-SHA"_L1;
108 case TLS_RSA_WITH_3DES_EDE_CBC_SHA:
109 name =
"DES-CBC3-SHA"_L1;
111 case TLS_RSA_WITH_AES_128_CBC_SHA256:
112 name =
"AES128-SHA256"_L1;
114 case TLS_RSA_WITH_AES_256_CBC_SHA256:
115 name =
"AES256-SHA256"_L1;
117 case TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA:
118 name =
"DHE-RSA-DES-CBC3-SHA"_L1;
120 case TLS_DHE_RSA_WITH_AES_128_CBC_SHA256:
121 name =
"DHE-RSA-AES128-SHA256"_L1;
123 case TLS_DHE_RSA_WITH_AES_256_CBC_SHA256:
124 name =
"DHE-RSA-AES256-SHA256"_L1;
134 case TLS_RSA_WITH_AES_256_GCM_SHA384:
135 name =
"AES256-GCM-SHA384"_L1;
142 case TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256:
143 name =
"ECDHE-ECDSA-AES128-SHA256"_L1;
145 case TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384:
146 name =
"ECDHE-ECDSA-AES256-SHA384"_L1;
148 case TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256:
149 name =
"ECDH-ECDSA-AES128-SHA256"_L1;
151 case TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384:
152 name =
"ECDH-ECDSA-AES256-SHA384"_L1;
154 case TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256:
155 name =
"ECDHE-RSA-AES128-SHA256"_L1;
157 case TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384:
158 name =
"ECDHE-RSA-AES256-SHA384"_L1;
160 case TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256:
161 name =
"ECDH-RSA-AES128-SHA256"_L1;
163 case TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384:
164 name =
"ECDH-RSA-AES256-SHA384"_L1;
169 case TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:
170 name =
"ECDHE-RSA-AES256-GCM-SHA384"_L1;
176 case TLS_AES_128_GCM_SHA256:
177 name =
"AES128-GCM-SHA256"_L1;
179 case TLS_AES_256_GCM_SHA384:
180 name =
"AES256-GCM-SHA384"_L1;
182 case TLS_CHACHA20_POLY1305_SHA256:
183 name =
"CHACHA20-POLY1305-SHA256"_L1;
185 case TLS_AES_128_CCM_SHA256:
186 name =
"AES128-CCM-SHA256"_L1;
188 case TLS_AES_128_CCM_8_SHA256:
189 name =
"AES128-CCM8-SHA256"_L1;
193 case TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:
194 name =
"ECDHE-ECDSA-AES128-GCM-SHA256"_L1;
196 case TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:
197 name =
"ECDHE-ECDSA-AES256-GCM-SHA384"_L1;
199 case TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256:
200 name =
"ECDH-ECDSA-AES128-GCM-SHA256"_L1;
202 case TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384:
203 name =
"ECDH-ECDSA-AES256-GCM-SHA384"_L1;
205 case TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:
206 name =
"ECDHE-RSA-AES128-GCM-SHA256"_L1;
208 case TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256:
209 name =
"ECDH-RSA-AES128-GCM-SHA256"_L1;
211 case TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384:
212 name =
"ECDH-RSA-AES256-GCM-SHA384"_L1;
216 case TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256:
217 name =
"ECDHE-RSA-CHACHA20-POLY1305-SHA256"_L1;
219 case TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256:
220 name =
"ECDHE-ECDSA-CHACHA20-POLY1305-SHA256"_L1;
231bool QSecureTransportBackend::s_loadedCiphersAndCerts =
false;
246 if (s_loadedCiphersAndCerts)
253 s_loadedCiphersAndCerts =
true;
260 size_t numCiphers = 0;
262 SSLGetNumberSupportedCiphers(
context, &numCiphers);
265 SSLGetSupportedCiphers(
context, cfCiphers.
data(), &numCiphers);
267 for (
size_t i = 0;
i < size_t(cfCiphers.
size()); ++
i) {
271 if (ciph.usedBits() >= 128)
272 defaultCiphers << ciph;
276 setDefaultSupportedCiphers(ciphers);
277 setDefaultCiphers(defaultCiphers);
282 s_loadedCiphersAndCerts =
false;
314 protocols << QSsl::TlsV1_0;
315 protocols << QSsl::TlsV1_0OrLater;
316 protocols << QSsl::TlsV1_1;
317 protocols << QSsl::TlsV1_1OrLater;
361#include "moc_qtlsbackend_st_p.cpp"
qsizetype size() const noexcept
const_reference at(qsizetype i) const noexcept
QList< QSsl::SslProtocol > supportedProtocols() const override
QList< QSsl::SupportedFeature > supportedFeatures() const override
QTlsPrivate::X509Certificate * createCertificate() const override
QTlsPrivate::TlsCryptograph * createTlsCryptograph() const override
QList< QSsl::ImplementedClass > implementedClasses() const override
virtual void ensureInitialized() const override
QString tlsLibraryVersionString() const override
virtual QString tlsLibraryBuildVersionString() const override
QTlsPrivate::TlsKey * createKey() const override
QString backendName() const override
QTlsPrivate::X509PemReaderPtr X509PemReader() const override
QTlsPrivate::X509DerReaderPtr X509DerReader() const override
QList< QSslCertificate > systemCaCertificates() const override
The QSslCipher class represents an SSL cryptographic cipher.
bool isNull() const
Returns true if this is a null cipher; otherwise returns false.
static bool rootCertOnDemandLoadingSupported()
SslMode
Describes the connection modes available for QSslSocket.
\macro QT_RESTRICTED_CAST_FROM_ASCII
static QString prettyProductName()
static constexpr const int nameIndexSecureTransport
static const QString builtinBackendNames[]
TlsKey is an abstract class, that allows a TLS plugin to provide an underlying implementation for the...
static QList< QSslCertificate > certificatesFromDer(const QByteArray &der, int count)
static QList< QSslCertificate > certificatesFromPem(const QByteArray &pem, int count)
X509Certificate is an abstract class that allows a TLS backend to provide an implementation of the QS...
Combined button and popup list for selecting options.
Namespace containing onternal types that TLS backends implement.
QSslCipher QSslCipher_from_SSLCipherSuite(SSLCipherSuite cipher)
QList< QSslCertificate > systemCaCertificates()
SSLContextRef qt_createSecureTransportContext(QSslSocket::SslMode mode)
#define QT_WARNING_DISABLE_DEPRECATED
#define Q_GLOBAL_STATIC(TYPE, NAME,...)
#define Q_LOGGING_CATEGORY(name,...)