33 case TLS_RSA_WITH_AES_128_CBC_SHA:
34 name =
"AES128-SHA"_L1;
36 case TLS_DHE_RSA_WITH_AES_128_CBC_SHA:
37 name =
"DHE-RSA-AES128-SHA"_L1;
39 case TLS_RSA_WITH_AES_256_CBC_SHA:
40 name =
"AES256-SHA"_L1;
42 case TLS_DHE_RSA_WITH_AES_256_CBC_SHA:
43 name =
"DHE-RSA-AES256-SHA"_L1;
47 case TLS_ECDH_ECDSA_WITH_NULL_SHA:
48 name =
"ECDH-ECDSA-NULL-SHA"_L1;
50 case TLS_ECDH_ECDSA_WITH_RC4_128_SHA:
51 name =
"ECDH-ECDSA-RC4-SHA"_L1;
53 case TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA:
54 name =
"ECDH-ECDSA-DES-CBC3-SHA"_L1;
56 case TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA:
57 name =
"ECDH-ECDSA-AES128-SHA"_L1;
59 case TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA:
60 name =
"ECDH-ECDSA-AES256-SHA"_L1;
62 case TLS_ECDHE_ECDSA_WITH_NULL_SHA:
63 name =
"ECDHE-ECDSA-NULL-SHA"_L1;
65 case TLS_ECDHE_ECDSA_WITH_RC4_128_SHA:
66 name =
"ECDHE-ECDSA-RC4-SHA"_L1;
68 case TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA:
69 name =
"ECDHE-ECDSA-DES-CBC3-SHA"_L1;
71 case TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA:
72 name =
"ECDHE-ECDSA-AES128-SHA"_L1;
74 case TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA:
75 name =
"ECDHE-ECDSA-AES256-SHA"_L1;
77 case TLS_ECDH_RSA_WITH_NULL_SHA:
78 name =
"ECDH-RSA-NULL-SHA"_L1;
80 case TLS_ECDH_RSA_WITH_RC4_128_SHA:
81 name =
"ECDH-RSA-RC4-SHA"_L1;
83 case TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA:
84 name =
"ECDH-RSA-DES-CBC3-SHA"_L1;
86 case TLS_ECDH_RSA_WITH_AES_128_CBC_SHA:
87 name =
"ECDH-RSA-AES128-SHA"_L1;
89 case TLS_ECDH_RSA_WITH_AES_256_CBC_SHA:
90 name =
"ECDH-RSA-AES256-SHA"_L1;
92 case TLS_ECDHE_RSA_WITH_NULL_SHA:
93 name =
"ECDHE-RSA-NULL-SHA"_L1;
95 case TLS_ECDHE_RSA_WITH_RC4_128_SHA:
96 name =
"ECDHE-RSA-RC4-SHA"_L1;
98 case TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA:
99 name =
"ECDHE-RSA-DES-CBC3-SHA"_L1;
101 case TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA:
102 name =
"ECDHE-RSA-AES128-SHA"_L1;
104 case TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA:
105 name =
"ECDHE-RSA-AES256-SHA"_L1;
109 case TLS_RSA_WITH_3DES_EDE_CBC_SHA:
110 name =
"DES-CBC3-SHA"_L1;
112 case TLS_RSA_WITH_AES_128_CBC_SHA256:
113 name =
"AES128-SHA256"_L1;
115 case TLS_RSA_WITH_AES_256_CBC_SHA256:
116 name =
"AES256-SHA256"_L1;
118 case TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA:
119 name =
"DHE-RSA-DES-CBC3-SHA"_L1;
121 case TLS_DHE_RSA_WITH_AES_128_CBC_SHA256:
122 name =
"DHE-RSA-AES128-SHA256"_L1;
124 case TLS_DHE_RSA_WITH_AES_256_CBC_SHA256:
125 name =
"DHE-RSA-AES256-SHA256"_L1;
135 case TLS_RSA_WITH_AES_256_GCM_SHA384:
136 name =
"AES256-GCM-SHA384"_L1;
143 case TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256:
144 name =
"ECDHE-ECDSA-AES128-SHA256"_L1;
146 case TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384:
147 name =
"ECDHE-ECDSA-AES256-SHA384"_L1;
149 case TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256:
150 name =
"ECDH-ECDSA-AES128-SHA256"_L1;
152 case TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384:
153 name =
"ECDH-ECDSA-AES256-SHA384"_L1;
155 case TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256:
156 name =
"ECDHE-RSA-AES128-SHA256"_L1;
158 case TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384:
159 name =
"ECDHE-RSA-AES256-SHA384"_L1;
161 case TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256:
162 name =
"ECDH-RSA-AES128-SHA256"_L1;
164 case TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384:
165 name =
"ECDH-RSA-AES256-SHA384"_L1;
170 case TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:
171 name =
"ECDHE-RSA-AES256-GCM-SHA384"_L1;
177 case TLS_AES_128_GCM_SHA256:
178 name =
"AES128-GCM-SHA256"_L1;
180 case TLS_AES_256_GCM_SHA384:
181 name =
"AES256-GCM-SHA384"_L1;
183 case TLS_CHACHA20_POLY1305_SHA256:
184 name =
"CHACHA20-POLY1305-SHA256"_L1;
186 case TLS_AES_128_CCM_SHA256:
187 name =
"AES128-CCM-SHA256"_L1;
189 case TLS_AES_128_CCM_8_SHA256:
190 name =
"AES128-CCM8-SHA256"_L1;
194 case TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:
195 name =
"ECDHE-ECDSA-AES128-GCM-SHA256"_L1;
197 case TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:
198 name =
"ECDHE-ECDSA-AES256-GCM-SHA384"_L1;
200 case TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256:
201 name =
"ECDH-ECDSA-AES128-GCM-SHA256"_L1;
203 case TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384:
204 name =
"ECDH-ECDSA-AES256-GCM-SHA384"_L1;
206 case TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:
207 name =
"ECDHE-RSA-AES128-GCM-SHA256"_L1;
209 case TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256:
210 name =
"ECDH-RSA-AES128-GCM-SHA256"_L1;
212 case TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384:
213 name =
"ECDH-RSA-AES256-GCM-SHA384"_L1;
217 case TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256:
218 name =
"ECDHE-RSA-CHACHA20-POLY1305-SHA256"_L1;
220 case TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256:
221 name =
"ECDHE-ECDSA-CHACHA20-POLY1305-SHA256"_L1;
227 return QTlsBackend::createCiphersuite(name, QSsl::TlsV1_2,
"TLSv1.2"_L1);
244void QSecureTransportBackend::ensureInitialized()
const
246 const QMutexLocker locker(qt_securetransport_mutex());
247 if (s_loadedCiphersAndCerts)
254 s_loadedCiphersAndCerts =
true;
258 QList<QSslCipher> ciphers;
259 QList<QSslCipher> defaultCiphers;
261 size_t numCiphers = 0;
263 SSLGetNumberSupportedCiphers(context, &numCiphers);
264 QList<SSLCipherSuite> cfCiphers(numCiphers);
266 SSLGetSupportedCiphers(context, cfCiphers.data(), &numCiphers);
268 for (size_t i = 0; i < size_t(cfCiphers.size()); ++i) {
269 const QSslCipher ciph(QTlsPrivate::QSslCipher_from_SSLCipherSuite(cfCiphers.at(i)));
270 if (!ciph.isNull()) {
272 if (ciph.usedBits() >= 128)
273 defaultCiphers << ciph;
277 setDefaultSupportedCiphers(ciphers);
278 setDefaultCiphers(defaultCiphers);
280 if (!QSslSocketPrivate::rootCertOnDemandLoadingSupported())
281 setDefaultCaCertificates(systemCaCertificates());
283 s_loadedCiphersAndCerts =
false;
307QList<QSsl::SslProtocol> QSecureTransportBackend::supportedProtocols()
const
309 QList<QSsl::SslProtocol> protocols;
311 protocols << QSsl::AnyProtocol;
312 protocols << QSsl::SecureProtocols;
314QT_WARNING_DISABLE_DEPRECATED
315 protocols << QSsl::TlsV1_0;
316 protocols << QSsl::TlsV1_0OrLater;
317 protocols << QSsl::TlsV1_1;
318 protocols << QSsl::TlsV1_1OrLater;
320 protocols << QSsl::TlsV1_2;
321 protocols << QSsl::TlsV1_2OrLater;