summaryrefslogtreecommitdiffstats
path: root/tests/auto/network/ssl
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2017-08-31 13:10:18 +0200
committerLiang Qi <liang.qi@qt.io>2017-08-31 14:31:31 +0200
commit112a4af10741409b3d8503cb77852a777b607ce0 (patch)
treefa99f0f37fc1505522fe9368e95484c7732ccda8 /tests/auto/network/ssl
parent29ef0d2bccd1874e20de94485ee05777c3a95c5d (diff)
parente938150412d22e61926fe16791158805b71268bb (diff)
Merge remote-tracking branch 'origin/5.9' into dev
Conflicts: examples/examples.pro qmake/library/qmakebuiltins.cpp src/corelib/global/qglobal.cpp Re-apply b525ec2 to qrandom.cpp(code movement in 030782e) src/corelib/global/qnamespace.qdoc src/corelib/global/qrandom.cpp src/gui/kernel/qwindow.cpp Re-apply a3d59c7 to QWindowPrivate::setVisible() (code movement in d7a9e08) src/network/ssl/qsslkey_openssl.cpp src/plugins/platforms/android/androidjniinput.cpp src/plugins/platforms/xcb/qxcbconnection.cpp src/plugins/platforms/xcb/qxcbconnection_xi2.cpp src/widgets/widgets/qmenu.cpp tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp Change-Id: If7ab427804408877a93cbe02079fca58e568bfd3
Diffstat (limited to 'tests/auto/network/ssl')
-rw-r--r--tests/auto/network/ssl/qsslcertificate/pkcs12/README21
-rw-r--r--tests/auto/network/ssl/qsslcertificate/pkcs12/leaf-nokey.p12bin0 -> 2216 bytes
-rw-r--r--tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp10
3 files changed, 26 insertions, 5 deletions
diff --git a/tests/auto/network/ssl/qsslcertificate/pkcs12/README b/tests/auto/network/ssl/qsslcertificate/pkcs12/README
index 1828d089c1..231567f586 100644
--- a/tests/auto/network/ssl/qsslcertificate/pkcs12/README
+++ b/tests/auto/network/ssl/qsslcertificate/pkcs12/README
@@ -1,8 +1,19 @@
-The PKCS#12 bundle was created by running the following on
-in the qsslsocket/certs directory:
+The PKCS#12 bundle was created by running the following in an
+interactive shell in ../../qsslsocket/certs/:
-openssl pkcs12 -export -in leaf.crt -inkey leaf.key \
- -out leaf.p12 \
+openssl pkcs12 -export -in leaf.crt \
+ -inkey leaf.key -out leaf.p12 \
-certfile inter.crt -CAfile ca.crt
-No password was provided.
+An empty password was provided (twice). The pkcs.crt and pkcs.key
+files were then copied here and leaf.p12 was moved here.
+
+
+The test-case with no private key (in a valid PKCS12 file) was created
+similarly but with the command adjusted to:
+
+openssl pkcs12 -export -in leaf.crt \
+ -nokeys -out leaf-nokey.p12 \
+ -certfile inter.crt -CAfile ca.crt
+
+The file leaf-nokey.p12 was then moved here.
diff --git a/tests/auto/network/ssl/qsslcertificate/pkcs12/leaf-nokey.p12 b/tests/auto/network/ssl/qsslcertificate/pkcs12/leaf-nokey.p12
new file mode 100644
index 0000000000..032bf97b1b
--- /dev/null
+++ b/tests/auto/network/ssl/qsslcertificate/pkcs12/leaf-nokey.p12
Binary files differ
diff --git a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp
index fced638ecb..064efc120b 100644
--- a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp
+++ b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp
@@ -1308,6 +1308,7 @@ void tst_QSslCertificate::version()
void tst_QSslCertificate::pkcs12()
{
+ // See pkcs12/README for how to generate the PKCS12 files used here.
if (!QSslSocket::supportsSsl()) {
qWarning("SSL not supported, skipping test");
return;
@@ -1349,6 +1350,15 @@ void tst_QSslCertificate::pkcs12()
QVERIFY(!caCerts.isEmpty());
QCOMPARE(caCerts.first(), caCert.first());
QCOMPARE(caCerts, caCert);
+
+ // QTBUG-62335 - Fail (found no private key) but don't crash:
+ QFile nocert(testDataDir + QLatin1String("/pkcs12/leaf-nokey.p12"));
+ ok = nocert.open(QIODevice::ReadOnly);
+ QVERIFY(ok);
+ QTest::ignoreMessage(QtWarningMsg, "Unable to convert private key");
+ ok = QSslCertificate::importPkcs12(&nocert, &key, &cert, &caCerts);
+ QVERIFY(!ok);
+ nocert.close();
}
#endif // QT_NO_SSL