diff options
author | Samuel Rødal <samuel.rodal@nokia.com> | 2011-09-06 10:49:40 +0200 |
---|---|---|
committer | Samuel Rødal <samuel.rodal@nokia.com> | 2011-09-06 10:55:40 +0200 |
commit | a6b6e760ac2f019b9ca42847b9535207966811aa (patch) | |
tree | cdba2823eb3708f7a40593ff69b81d2be88515ea /tests/auto/qsslsocket | |
parent | 48ba459580c9e4ce28dbb2c3ce433175148da5a1 (diff) | |
parent | 8ed47d961dc7e6f161030654d11cd330a542eadf (diff) |
Merge remote branch 'gerrit/master' into HEAD
Conflicts:
configure.exe
src/corelib/global/qglobal.h
src/gui/kernel/qplatformnativeinterface_qpa.h
src/gui/widgets/qlinecontrol.cpp
src/gui/widgets/qmenu_mac.mm
src/gui/widgets/qmenu_p.h
src/gui/widgets/qmenubar.cpp
src/gui/widgets/qmenubar_p.h
src/gui/widgets/widgets.pri
src/plugins/platforms/wayland/qwaylandnativeinterface.cpp
src/plugins/platforms/wayland/qwaylandnativeinterface.h
src/src.pro
tests/auto/qdir/tst_qdir.cpp
tests/auto/qfileinfo/tst_qfileinfo.cpp
tests/auto/qsslsocket/tst_qsslsocket.cpp
tests/auto/qstring/tst_qstring.cpp
Change-Id: I64cf2cefa532ba87a92f632e3595ce6914183e9b
Diffstat (limited to 'tests/auto/qsslsocket')
-rw-r--r-- | tests/auto/qsslsocket/qsslsocket.pro | 11 | ||||
-rw-r--r-- | tests/auto/qsslsocket/tst_qsslsocket.cpp | 34 |
2 files changed, 43 insertions, 2 deletions
diff --git a/tests/auto/qsslsocket/qsslsocket.pro b/tests/auto/qsslsocket/qsslsocket.pro index 76d73b7cb3..1f5c7f6aaf 100644 --- a/tests/auto/qsslsocket/qsslsocket.pro +++ b/tests/auto/qsslsocket/qsslsocket.pro @@ -15,6 +15,17 @@ win32 { } } +# OpenSSL support +contains(QT_CONFIG, openssl) | contains(QT_CONFIG, openssl-linked) { + symbian { + INCLUDEPATH *= $$OS_LAYER_SSL_SYSTEMINCLUDE + } else { + include($$QT_SOURCE_TREE/config.tests/unix/openssl/openssl.pri) + } + # Add optional SSL libs + LIBS += $$OPENSSL_LIBS +} + wince* { DEFINES += SRCDIR=\\\"./\\\" diff --git a/tests/auto/qsslsocket/tst_qsslsocket.cpp b/tests/auto/qsslsocket/tst_qsslsocket.cpp index 7f613241a0..ee2d15b1ff 100644 --- a/tests/auto/qsslsocket/tst_qsslsocket.cpp +++ b/tests/auto/qsslsocket/tst_qsslsocket.cpp @@ -54,9 +54,10 @@ #include <QNetworkProxy> #include <QAuthenticator> -#include <private/qhostinfo_p.h> +#include "private/qhostinfo_p.h" #ifndef QT_NO_OPENSSL -# include <private/qsslsocket_openssl_p.h> +#include "private/qsslsocket_openssl_p.h" +#include "private/qsslsocket_openssl_symbols_p.h" #endif #include "../network-settings.h" @@ -148,6 +149,7 @@ private slots: void peerCertificate(); void peerCertificateChain(); void privateKey(); + void privateKeyOpaque(); void protocol(); void protocolServerSide_data(); void protocolServerSide(); @@ -766,6 +768,34 @@ void tst_QSslSocket::privateKey() { } +void tst_QSslSocket::privateKeyOpaque() +{ + if (!QSslSocket::supportsSsl()) + return; + + QFile file(SRCDIR "certs/fluke.key"); + QVERIFY(file.open(QIODevice::ReadOnly)); + QSslKey key(file.readAll(), QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey); + QVERIFY(!key.isNull()); + + EVP_PKEY *pkey = q_EVP_PKEY_new(); + q_EVP_PKEY_set1_RSA(pkey, reinterpret_cast<RSA *>(key.handle())); + + // This test does not make 100% sense yet. We just set some local CA/cert/key and use it + // to authenticate ourselves against the server. The server does not actually check this + // values. This test should just run the codepath inside qsslsocket_openssl.cpp + + QSslSocketPtr socket = newSocket(); + QList<QSslCertificate> localCert = QSslCertificate::fromPath(SRCDIR "certs/qt-test-server-cacert.pem"); + socket->setCaCertificates(localCert); + socket->setLocalCertificate(QLatin1String(SRCDIR "certs/fluke.cert")); + socket->setPrivateKey(QSslKey(reinterpret_cast<Qt::HANDLE>(pkey))); + + socket->setPeerVerifyMode(QSslSocket::QueryPeer); + socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443); + QVERIFY(socket->waitForEncrypted(10000)); +} + void tst_QSslSocket::protocol() { if (!QSslSocket::supportsSsl()) |