From f7f2582c6092a37c2ace38a1261e6d1312f12aa9 Mon Sep 17 00:00:00 2001 From: Timur Pocheptsov Date: Thu, 24 Jun 2021 19:26:44 +0200 Subject: tst_qsslsocket: detect ALPN support (on server) using supportedFeatures() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pick-to: 6.2 Change-Id: I30409667395bbe568823b8697dded41067a8346c Reviewed-by: MÃ¥rten Nordheim Reviewed-by: Qt CI Bot --- .../auto/network/ssl/qsslsocket/tst_qsslsocket.cpp | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) (limited to 'tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp') diff --git a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp index 4669d10fa3..142c018323 100644 --- a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp +++ b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp @@ -75,19 +75,6 @@ Q_DECLARE_METATYPE(QSsl::SslProtocol) Q_DECLARE_METATYPE(QSslSocket::PeerVerifyMode); typedef QSharedPointer QSslSocketPtr; -// Detect ALPN (Application-Layer Protocol Negotiation) support -// AUTOTESTTODO: fix the way we identify ALPN support, it now depends on -// what TLS backend we managed to load, not compile time macros. -#undef ALPN_SUPPORTED // Undef the variable first to be safe -#if defined(OPENSSL_VERSION_NUMBER) && !defined(OPENSSL_NO_TLSEXT) -#define ALPN_SUPPORTED 1 -#endif - -#if QT_CONFIG(schannel) && !defined(Q_CC_MINGW) -// TLSTODO: move this check into Schannel plugin. -#define ALPN_SUPPORTED 1 -#endif - #if defined Q_OS_HPUX && defined Q_CC_GNU // This error is delivered every time we try to use the fluke CA // certificate. For now we work around this bug. Task 202317. @@ -315,6 +302,7 @@ private: bool isTestingSecureTransport = false; bool isTestingSchannel = false; QSslError::SslError flukeCertificateError = QSslError::CertificateUntrusted; + bool hasServerAlpn = false; #endif // QT_CONFIG(ssl) private: static int loopLevel; @@ -419,6 +407,7 @@ void tst_QSslSocket::initTestCase() if (!testDataDir.endsWith(QLatin1String("/"))) testDataDir += QLatin1String("/"); + hasServerAlpn = QSslSocket::supportedFeatures().contains(QSsl::SupportedFeature::ServerSideAlpn); // Several plugins (TLS-backends) can co-exist. QSslSocket would implicitly // select 'openssl' if available, and if not: 'securetransport' (Darwin) or // 'schannel' (Windows). Check what we actually have: @@ -3818,10 +3807,8 @@ void tst_QSslSocket::setEmptyDefaultConfiguration() // this test should be last, void tst_QSslSocket::allowedProtocolNegotiation() { - // TLSTODO: check feature Cleint/ServerSideAlpn supported insted! -#ifndef ALPN_SUPPORTED - QSKIP("ALPN is unsupported, skipping test"); -#endif + if (!hasServerAlpn) + QSKIP("Server-side ALPN is unsupported, skipping test"); if (isTestingSchannel) { // TODO: move this check into the plugin (not to report ALPN as supported). -- cgit v1.2.3