Add QSsl::Dtls1_0OrLater enumerator
... to make DTLS protocols work more like TLS protocol versions. Also, handle (as 'unsupported' for now) those new constants in a switch statement, when creating SSL_CTX (fixing build errors). Change-Id: Ia444184ca191d8665e37046b0b9120e43ec5893a Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>bb10
parent
3ac029f674
commit
c555c8b9f5
|
|
@ -126,6 +126,7 @@ Q_LOGGING_CATEGORY(lcSsl, "qt.network.ssl");
|
|||
\value TlsV1_2 TLSv1.2. When using the WinRT backend this option will also enable TLSv1.0 and TLSv1.1.
|
||||
\value TlsV1_2OrLater TLSv1.2 and later versions. This option is not available when using the WinRT backend due to platform limitations.
|
||||
\value DtlsV1_0 DTLSv1.0
|
||||
\value DtlsV1_0OrLater DTLSv1.0 and later versions.
|
||||
\value DtlsV1_2 DTLSv1.2
|
||||
\value DtlsV1_2OrLater DTLSv1.2 and later versions.
|
||||
\value UnknownProtocol The cipher's protocol cannot be determined.
|
||||
|
|
|
|||
|
|
@ -92,6 +92,7 @@ namespace QSsl {
|
|||
TlsV1_2OrLater,
|
||||
|
||||
DtlsV1_0,
|
||||
DtlsV1_0OrLater,
|
||||
DtlsV1_2,
|
||||
DtlsV1_2OrLater,
|
||||
|
||||
|
|
|
|||
|
|
@ -139,6 +139,13 @@ init_context:
|
|||
minVersion = TLS1_2_VERSION;
|
||||
maxVersion = TLS_MAX_VERSION;
|
||||
break;
|
||||
case QSsl::DtlsV1_0:
|
||||
case QSsl::DtlsV1_0OrLater:
|
||||
case QSsl::DtlsV1_2:
|
||||
case QSsl::DtlsV1_2OrLater:
|
||||
sslContext->errorStr = QSslSocket::tr("unsupported protocol");
|
||||
sslContext->errorCode = QSslError::UnspecifiedError;
|
||||
return;
|
||||
case QSsl::SslV2:
|
||||
// This protocol is not supported by OpenSSL 1.1 and we handle
|
||||
// it as an error (see the code above).
|
||||
|
|
|
|||
|
|
@ -73,6 +73,13 @@ void QSslContext::initSslContext(QSslContext *sslContext, QSslSocket::SslMode mo
|
|||
bool unsupportedProtocol = false;
|
||||
init_context:
|
||||
switch (sslContext->sslConfiguration.protocol()) {
|
||||
case QSsl::DtlsV1_0:
|
||||
case QSsl::DtlsV1_0OrLater:
|
||||
case QSsl::DtlsV1_2:
|
||||
case QSsl::DtlsV1_2OrLater:
|
||||
sslContext->ctx = 0;
|
||||
unsupportedProtocol = true;
|
||||
break;
|
||||
case QSsl::SslV2:
|
||||
#ifndef OPENSSL_NO_SSL2
|
||||
sslContext->ctx = q_SSL_CTX_new(client ? q_SSLv2_client_method() : q_SSLv2_server_method());
|
||||
|
|
|
|||
Loading…
Reference in New Issue