diff options
Diffstat (limited to 'tests/auto/network/ssl')
11 files changed, 115 insertions, 41 deletions
diff --git a/tests/auto/network/ssl/qsslcertificate/certificates/gencertificates.sh b/tests/auto/network/ssl/qsslcertificate/certificates/gencertificates.sh index 915bf796b1..3570471d73 100755 --- a/tests/auto/network/ssl/qsslcertificate/certificates/gencertificates.sh +++ b/tests/auto/network/ssl/qsslcertificate/certificates/gencertificates.sh @@ -2,8 +2,7 @@ ############################################################################# ## ## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -## All rights reserved. -## Contact: Nokia Corporation (qt-info@nokia.com) +## Contact: http://www.qt-project.org/ ## ## This file is the build configuration utility of the Qt Toolkit. ## @@ -36,6 +35,7 @@ ## ## ## +## ## $QT_END_LICENSE$ ## ############################################################################# diff --git a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp index a2fab2b479..8003ad1932 100644 --- a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp +++ b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp @@ -1,8 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) +** Contact: http://www.qt-project.org/ ** ** This file is part of the test suite of the Qt Toolkit. ** @@ -35,6 +34,7 @@ ** ** ** +** ** $QT_END_LICENSE$ ** ****************************************************************************/ @@ -862,11 +862,11 @@ void tst_QSslCertificate::toText() // Openssl's cert dump method changed slightly between 0.9.8 and 1.0.0 versions, so we want it to match any output QFile fOld(SRCDIR "more-certificates/cert-large-expiration-date.txt.0.9.8"); - QVERIFY(fOld.open(QIODevice::ReadOnly)); + QVERIFY(fOld.open(QIODevice::ReadOnly | QFile::Text)); QByteArray txtOld = fOld.readAll(); QFile fNew(SRCDIR "more-certificates/cert-large-expiration-date.txt.1.0.0"); - QVERIFY(fNew.open(QIODevice::ReadOnly)); + QVERIFY(fNew.open(QIODevice::ReadOnly | QFile::Text)); QByteArray txtNew = fNew.readAll(); QVERIFY(txtOld == cert.toText() || txtNew == cert.toText()); } diff --git a/tests/auto/network/ssl/qsslcipher/tst_qsslcipher.cpp b/tests/auto/network/ssl/qsslcipher/tst_qsslcipher.cpp index 89b735aed3..25d5f00e95 100644 --- a/tests/auto/network/ssl/qsslcipher/tst_qsslcipher.cpp +++ b/tests/auto/network/ssl/qsslcipher/tst_qsslcipher.cpp @@ -1,8 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) +** Contact: http://www.qt-project.org/ ** ** This file is part of the test suite of the Qt Toolkit. ** @@ -35,6 +34,7 @@ ** ** ** +** ** $QT_END_LICENSE$ ** ****************************************************************************/ diff --git a/tests/auto/network/ssl/qsslerror/tst_qsslerror.cpp b/tests/auto/network/ssl/qsslerror/tst_qsslerror.cpp index 481d73650b..e57c5fa7f4 100644 --- a/tests/auto/network/ssl/qsslerror/tst_qsslerror.cpp +++ b/tests/auto/network/ssl/qsslerror/tst_qsslerror.cpp @@ -1,8 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) +** Contact: http://www.qt-project.org/ ** ** This file is part of the test suite of the Qt Toolkit. ** @@ -35,6 +34,7 @@ ** ** ** +** ** $QT_END_LICENSE$ ** ****************************************************************************/ diff --git a/tests/auto/network/ssl/qsslkey/keys/genkeys.sh b/tests/auto/network/ssl/qsslkey/keys/genkeys.sh index 087a3a64b9..e82dc57e28 100755 --- a/tests/auto/network/ssl/qsslkey/keys/genkeys.sh +++ b/tests/auto/network/ssl/qsslkey/keys/genkeys.sh @@ -2,8 +2,7 @@ ############################################################################# ## ## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -## All rights reserved. -## Contact: Nokia Corporation (qt-info@nokia.com) +## Contact: http://www.qt-project.org/ ## ## This file is the build configuration utility of the Qt Toolkit. ## @@ -36,6 +35,7 @@ ## ## ## +## ## $QT_END_LICENSE$ ## ############################################################################# diff --git a/tests/auto/network/ssl/qsslkey/qsslkey.pro b/tests/auto/network/ssl/qsslkey/qsslkey.pro index d882362290..4af35487cd 100644 --- a/tests/auto/network/ssl/qsslkey/qsslkey.pro +++ b/tests/auto/network/ssl/qsslkey/qsslkey.pro @@ -25,5 +25,4 @@ wince* { DEFINES += SRCDIR=\\\".\\\" } else { DEFINES+= SRCDIR=\\\"$$PWD\\\" - TARGET.CAPABILITY = NetworkServices } diff --git a/tests/auto/network/ssl/qsslkey/tst_qsslkey.cpp b/tests/auto/network/ssl/qsslkey/tst_qsslkey.cpp index cf1489c76c..f59f0bb5a9 100644 --- a/tests/auto/network/ssl/qsslkey/tst_qsslkey.cpp +++ b/tests/auto/network/ssl/qsslkey/tst_qsslkey.cpp @@ -1,8 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) +** Contact: http://www.qt-project.org/ ** ** This file is part of the test suite of the Qt Toolkit. ** @@ -35,6 +34,7 @@ ** ** ** +** ** $QT_END_LICENSE$ ** ****************************************************************************/ diff --git a/tests/auto/network/ssl/qsslsocket/qsslsocket.pro b/tests/auto/network/ssl/qsslsocket/qsslsocket.pro index 2739a7eb25..a8763d69af 100644 --- a/tests/auto/network/ssl/qsslsocket/qsslsocket.pro +++ b/tests/auto/network/ssl/qsslsocket/qsslsocket.pro @@ -17,7 +17,6 @@ win32 { # OpenSSL support contains(QT_CONFIG, openssl) | contains(QT_CONFIG, openssl-linked) { - include($$QT_SOURCE_TREE/config.tests/unix/openssl/openssl.pri) # Add optional SSL libs LIBS += $$OPENSSL_LIBS } diff --git a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp index 96aea6a4e5..83060e27e4 100644 --- a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp +++ b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp @@ -1,8 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) +** Contact: http://www.qt-project.org/ ** ** This file is part of the test suite of the Qt Toolkit. ** @@ -35,6 +34,7 @@ ** ** ** +** ** $QT_END_LICENSE$ ** ****************************************************************************/ @@ -192,10 +192,12 @@ private slots: void readFromClosedSocket(); void writeBigChunk(); void blacklistedCertificates(); - void setEmptyDefaultConfiguration(); void versionAccessors(); void sslOptions(); void encryptWithoutConnecting(); + void resume_data(); + void resume(); + void setEmptyDefaultConfiguration(); // this test should be last static void exitLoop() { @@ -1320,8 +1322,8 @@ void tst_QSslSocket::wildcard() QVERIFY2(socket->waitForEncrypted(3000), qPrintable(socket->errorString())); QSslCertificate certificate = socket->peerCertificate(); - QCOMPARE(certificate.subjectInfo(QSslCertificate::CommonName), QString(QtNetworkSettings::serverLocalName() + ".*." + QtNetworkSettings::serverDomainName())); - QCOMPARE(certificate.issuerInfo(QSslCertificate::CommonName), QtNetworkSettings::serverName()); + QVERIFY(certificate.subjectInfo(QSslCertificate::CommonName).contains(QString(QtNetworkSettings::serverLocalName() + ".*." + QtNetworkSettings::serverDomainName()))); + QVERIFY(certificate.issuerInfo(QSslCertificate::CommonName).contains(QtNetworkSettings::serverName())); socket->close(); } @@ -2058,22 +2060,6 @@ void tst_QSslSocket::blacklistedCertificates() QCOMPARE(sslErrors.at(0).error(), QSslError::CertificateBlacklisted); } -void tst_QSslSocket::setEmptyDefaultConfiguration() -{ - // used to produce a crash in QSslConfigurationPrivate::deepCopyDefaultConfiguration, QTBUG-13265 - - if (!QSslSocket::supportsSsl()) - return; - - QSslConfiguration emptyConf; - QSslConfiguration::setDefaultConfiguration(emptyConf); - - QSslSocketPtr socket = newSocket(); - connect(socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(ignoreErrorSlot())); - socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443); - QVERIFY2(!socket->waitForEncrypted(4000), qPrintable(socket->errorString())); -} - void tst_QSslSocket::versionAccessors() { if (!QSslSocket::supportsSsl()) @@ -2141,7 +2127,97 @@ void tst_QSslSocket::encryptWithoutConnecting() sock.startClientEncryption(); } +void tst_QSslSocket::resume_data() +{ + QTest::addColumn<bool>("ignoreErrorsAfterPause"); + QTest::addColumn<QList<QSslError> >("errorsToIgnore"); + QTest::addColumn<bool>("expectSuccess"); + + QList<QSslError> errorsList; + QTest::newRow("DoNotIgnoreErrors") << false << QList<QSslError>() << false; + QTest::newRow("ignoreAllErrors") << true << QList<QSslError>() << true; + + QList<QSslCertificate> certs = QSslCertificate::fromPath(QLatin1String(SRCDIR "certs/qt-test-server-cacert.pem")); + QSslError rightError(QSslError::SelfSignedCertificate, certs.at(0)); + QSslError wrongError(QSslError::SelfSignedCertificate); + errorsList.append(wrongError); + QTest::newRow("ignoreSpecificErrors-Wrong") << true << errorsList << false; + errorsList.clear(); + errorsList.append(rightError); + QTest::newRow("ignoreSpecificErrors-Right") << true << errorsList << true; +} + +void tst_QSslSocket::resume() +{ + // make sure the server certificate is not in the list of accepted certificates, + // we want to trigger the sslErrors signal + QSslSocket::setDefaultCaCertificates(QSslSocket::systemCaCertificates()); + + QFETCH(bool, ignoreErrorsAfterPause); + QFETCH(QList<QSslError>, errorsToIgnore); + QFETCH(bool, expectSuccess); + + QSslSocket socket; + socket.setPauseMode(QAbstractSocket::PauseOnNotify); + + QSignalSpy sslErrorSpy(&socket, SIGNAL(sslErrors(QList<QSslError>))); + QSignalSpy encryptedSpy(&socket, SIGNAL(encrypted())); + QSignalSpy errorSpy(&socket, SIGNAL(error(QAbstractSocket::SocketError))); + + connect(&socket, SIGNAL(sslErrors(QList<QSslError>)), &QTestEventLoop::instance(), SLOT(exitLoop())); + connect(&socket, SIGNAL(encrypted()), &QTestEventLoop::instance(), SLOT(exitLoop())); + connect(&socket, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)), + this, SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*))); + connect(&socket, SIGNAL(error(QAbstractSocket::SocketError)), &QTestEventLoop::instance(), SLOT(exitLoop())); + + socket.connectToHostEncrypted(QtNetworkSettings::serverName(), 993); + QTestEventLoop::instance().enterLoop(10); + QVERIFY(!QTestEventLoop::instance().timeout()); + QCOMPARE(sslErrorSpy.count(), 1); + QCOMPARE(errorSpy.count(), 0); + QCOMPARE(encryptedSpy.count(), 0); + QVERIFY(!socket.isEncrypted()); + if (ignoreErrorsAfterPause) { + if (errorsToIgnore.empty()) + socket.ignoreSslErrors(); + else + socket.ignoreSslErrors(errorsToIgnore); + } + socket.resume(); + QTestEventLoop::instance().enterLoop(10); + QVERIFY(!QTestEventLoop::instance().timeout()); // quit by encrypted() or error() signal + if (expectSuccess) { + QCOMPARE(encryptedSpy.count(), 1); + QVERIFY(socket.isEncrypted()); + QCOMPARE(errorSpy.count(), 0); + socket.disconnectFromHost(); + QVERIFY(socket.waitForDisconnected(10000)); + } else { + QCOMPARE(encryptedSpy.count(), 0); + QVERIFY(!socket.isEncrypted()); + QCOMPARE(errorSpy.count(), 1); + QCOMPARE(socket.error(), QAbstractSocket::SslHandshakeFailedError); + } +} + +void tst_QSslSocket::setEmptyDefaultConfiguration() // this test should be last, as it has some side effects +{ + // used to produce a crash in QSslConfigurationPrivate::deepCopyDefaultConfiguration, QTBUG-13265 + + if (!QSslSocket::supportsSsl()) + return; + + QSslConfiguration emptyConf; + QSslConfiguration::setDefaultConfiguration(emptyConf); + + QSslSocketPtr socket = newSocket(); + connect(socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(ignoreErrorSlot())); + socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443); + QVERIFY2(!socket->waitForEncrypted(4000), qPrintable(socket->errorString())); +} + #endif // QT_NO_OPENSSL QTEST_MAIN(tst_QSslSocket) + #include "tst_qsslsocket.moc" diff --git a/tests/auto/network/ssl/qsslsocket_onDemandCertificates_member/tst_qsslsocket_onDemandCertificates_member.cpp b/tests/auto/network/ssl/qsslsocket_onDemandCertificates_member/tst_qsslsocket_onDemandCertificates_member.cpp index d331658fc8..bc0e04a1f2 100644 --- a/tests/auto/network/ssl/qsslsocket_onDemandCertificates_member/tst_qsslsocket_onDemandCertificates_member.cpp +++ b/tests/auto/network/ssl/qsslsocket_onDemandCertificates_member/tst_qsslsocket_onDemandCertificates_member.cpp @@ -1,8 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) +** Contact: http://www.qt-project.org/ ** ** This file is part of the test suite of the Qt Toolkit. ** @@ -35,6 +34,7 @@ ** ** ** +** ** $QT_END_LICENSE$ ** ****************************************************************************/ diff --git a/tests/auto/network/ssl/qsslsocket_onDemandCertificates_static/tst_qsslsocket_onDemandCertificates_static.cpp b/tests/auto/network/ssl/qsslsocket_onDemandCertificates_static/tst_qsslsocket_onDemandCertificates_static.cpp index 4c76a44ac1..dd01733fbe 100644 --- a/tests/auto/network/ssl/qsslsocket_onDemandCertificates_static/tst_qsslsocket_onDemandCertificates_static.cpp +++ b/tests/auto/network/ssl/qsslsocket_onDemandCertificates_static/tst_qsslsocket_onDemandCertificates_static.cpp @@ -1,8 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) +** Contact: http://www.qt-project.org/ ** ** This file is part of the test suite of the Qt Toolkit. ** @@ -35,6 +34,7 @@ ** ** ** +** ** $QT_END_LICENSE$ ** ****************************************************************************/ |