From d11307320393540a60a81cdd216b99352bbcd2a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jeremy=20Lain=C3=A9?= Date: Wed, 29 Jul 2015 14:22:12 +0200 Subject: [PATCH] ssl: add test certificates with DSA and EC keys The QSslCertificate tests only covered certificates with RSA keys, this extends the test coverage to DSA and EC keys. Change-Id: Ibee26f449cf6c1d97cbac6b511972eb44d6f0bd2 Reviewed-by: Richard J. Moore --- .../certificates/dsa-cert-ss.der.pubkey | Bin 0 -> 442 bytes .../certificates/dsa-cert-ss.pem | 16 ++++++ .../certificates/dsa-cert-ss.pem.digest-md5 | 1 + .../certificates/dsa-cert-ss.pem.digest-sha1 | 1 + .../certificates/dsa-cert-ss.pem.pubkey | 12 +++++ .../certificates/ec-cert-ss.der.pubkey | Bin 0 -> 120 bytes .../certificates/ec-cert-ss.pem | 11 +++++ .../certificates/ec-cert-ss.pem.digest-md5 | 1 + .../certificates/ec-cert-ss.pem.digest-sha1 | 1 + .../certificates/ec-cert-ss.pem.pubkey | 5 ++ .../certificates/gencertificates.sh | 46 +++++++++++++++++- .../qsslcertificate/tst_qsslcertificate.cpp | 14 ++++-- 12 files changed, 103 insertions(+), 5 deletions(-) create mode 100644 tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.der.pubkey create mode 100644 tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem create mode 100644 tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem.digest-md5 create mode 100644 tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem.digest-sha1 create mode 100644 tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem.pubkey create mode 100644 tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.der.pubkey create mode 100644 tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.pem create mode 100644 tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.pem.digest-md5 create mode 100644 tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.pem.digest-sha1 create mode 100644 tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.pem.pubkey diff --git a/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.der.pubkey b/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.der.pubkey new file mode 100644 index 0000000000000000000000000000000000000000..4e46848106fe4186a7883cc9a0d6916fe28ef25e GIT binary patch literal 442 zcmV;r0Y&~Wf&sQLf&nWA2P%e0&Nu`CFoFRd0)c@5!egx|R=b~hHUCrq2cUp{q){#O zKk8zD9##?ulcJ>Lq>KkUZU%Hh{&Z_aRcsUbzpF~(K1q|zF(ekHS0Ihxs-dIlpYKoR z0H}Xh=AVilf-5*H$VmX%>@_!BBh zI=8kN0u=zEc5eq5T2ZOBT6DGXisbuJ6W;Fvfq*gFY+&#-2H^bZPUy z0vZE>ga878fC{4rvbc9-ds*NTXcsX0!ZZ?MJn_$PMg0jTTCph_?gBbFWD_rA+~Q=4s&@cLOR)u3n^sfJlem{)TxJq0;t_}w5IMZHsAVVnMi(k kKkzJj$;F1JMsFvm6bpM;%h=hKk-bi&EQ~Ab5f|dVvO;moRsaA1 literal 0 HcmV?d00001 diff --git a/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem b/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem new file mode 100644 index 0000000000..d81f8f1def --- /dev/null +++ b/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem @@ -0,0 +1,16 @@ +-----BEGIN CERTIFICATE----- +MIICijCCAkgCCQC7PDslmXiXHzALBglghkgBZQMEAwIwKTEaMBgGA1UEAwwRbmFt +ZS93aXRoL3NsYXNoZXMxCzAJBgNVBAYTAk5PMB4XDTE1MDcyOTEyMTAyNloXDTE1 +MDgyODEyMTAyNlowKTEaMBgGA1UEAwwRbmFtZS93aXRoL3NsYXNoZXMxCzAJBgNV +BAYTAk5PMIIBtjCCASsGByqGSM44BAEwggEeAoGBAMJjrSlWu595Nf9UAAeggH6k +US30P+pigB5WEgeToqTkpIwHO24GdEL+dGtFVWwT+r+rSuI+SZPMMSQWpVcgjeCq +oaPpn+9P5gCof1jmn4oegis4K8hJANnsDDdE1HRkeVDSzFlkmvk+FnVfB0wI0T8F +k7BV4wZDyvgTKko6t7YZAhUAoXZvBxhaUam1WnS18Yrk+1IT3u8CgYAx22xg8DQG +4HE2vGH0p3Ug2FziCtjpDaN1ryomPbroQSK7/x9dhuy/4b1H2KdJufawWTVPdBI5 +TfXXvCcJEmQKKegarq3DFPGkpH+rp72GejEgmBMUU22+1NHga3VzSspLjAK2e/+r ++foHHzJnGQs6JrvMNaXK+UVJxXRp878CGgOBhAACgYAKoweyuHdke1ngEmgXMPrC +NBJiPPHPcEX9CSZasSka7gI6OWZDk6H80W1KRPxHMeKb4V06wa02IbZvWA5zeStC +OtmMCylk5Tzav8/UqYeDAqjddbSm7i423/pjmUh+eD/wLHvJxYanRm8nqBQLe1jL +2NmVkb1OpCyMK+sRF+K+sjALBglghkgBZQMEAwIDLwAwLAIUHVt2TWRAe/JSEHY1 +x6+igQb3AFQCFHYwbrScyMUwuVkNft2ttDN1I7ak +-----END CERTIFICATE----- diff --git a/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem.digest-md5 b/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem.digest-md5 new file mode 100644 index 0000000000..dba3fdff03 --- /dev/null +++ b/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem.digest-md5 @@ -0,0 +1 @@ +MD5 Fingerprint=35:B0:60:B2:37:14:43:31:01:71:C0:D9:CE:AF:20:CB diff --git a/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem.digest-sha1 b/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem.digest-sha1 new file mode 100644 index 0000000000..3879ef954f --- /dev/null +++ b/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem.digest-sha1 @@ -0,0 +1 @@ +SHA1 Fingerprint=BD:46:36:00:D7:31:3F:95:46:55:62:1A:FB:CA:36:A3:3D:27:15:92 diff --git a/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem.pubkey b/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem.pubkey new file mode 100644 index 0000000000..c44fd6f4a9 --- /dev/null +++ b/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem.pubkey @@ -0,0 +1,12 @@ +-----BEGIN PUBLIC KEY----- +MIIBtjCCASsGByqGSM44BAEwggEeAoGBAMJjrSlWu595Nf9UAAeggH6kUS30P+pi +gB5WEgeToqTkpIwHO24GdEL+dGtFVWwT+r+rSuI+SZPMMSQWpVcgjeCqoaPpn+9P +5gCof1jmn4oegis4K8hJANnsDDdE1HRkeVDSzFlkmvk+FnVfB0wI0T8Fk7BV4wZD +yvgTKko6t7YZAhUAoXZvBxhaUam1WnS18Yrk+1IT3u8CgYAx22xg8DQG4HE2vGH0 +p3Ug2FziCtjpDaN1ryomPbroQSK7/x9dhuy/4b1H2KdJufawWTVPdBI5TfXXvCcJ +EmQKKegarq3DFPGkpH+rp72GejEgmBMUU22+1NHga3VzSspLjAK2e/+r+foHHzJn +GQs6JrvMNaXK+UVJxXRp878CGgOBhAACgYAKoweyuHdke1ngEmgXMPrCNBJiPPHP +cEX9CSZasSka7gI6OWZDk6H80W1KRPxHMeKb4V06wa02IbZvWA5zeStCOtmMCylk +5Tzav8/UqYeDAqjddbSm7i423/pjmUh+eD/wLHvJxYanRm8nqBQLe1jL2NmVkb1O +pCyMK+sRF+K+sg== +-----END PUBLIC KEY----- diff --git a/tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.der.pubkey b/tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.der.pubkey new file mode 100644 index 0000000000000000000000000000000000000000..05e3f82ebd1a66d241b90a351c4583cf5c4d74b7 GIT binary patch literal 120 zcmV-;0EhoDb}$eI2P%e0&OHJF1_djD1OOrfVgLjr`7;Uqo43;%BU%-b7I|e70R{Rn zQ6m(nC&c@`qw?L=bPpOPzmst~EhL{=Ghs~3pu}D)@&G4x-$ZPMZC)b$pvhDV@)7Ir aGJ1A<0 ca-cert.pem.digest-$digest openssl x509 -in cert-ss.pem -noout -fingerprint -$digest > cert-ss.pem.digest-$digest openssl x509 -in cert.pem -noout -fingerprint -$digest > cert.pem.digest-$digest + openssl x509 -in dsa-cert-ss.pem -noout -fingerprint -$digest > dsa-cert-ss.pem.digest-$digest + openssl x509 -in ec-cert-ss.pem -noout -fingerprint -$digest > ec-cert-ss.pem.digest-$digest done #--- Subjet Alternative Name extension ---------------------------------------------------- @@ -93,4 +132,7 @@ openssl req -x509 -in req-san.pem -out $outname -key rsa-pri-1024.pem \ /bin/cp san.cnf $outname.san echo -e "\n cleaning up ..." -/bin/rm rsa-pri-1024.pem rsa-pub-1024.* req*.pem +/bin/rm rsa-pri-1024.pem rsa-pub-1024.* +/bin/rm dsa-pri-1024.pem dsa-pub-1024.* +/bin/rm ec-pri-384.pem ec-pub-384.* +/bin/rm req*.pem diff --git a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp index 604c0ef782..748c240f3d 100644 --- a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp +++ b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp @@ -494,12 +494,20 @@ void tst_QSslCertificate::publicKey() QFETCH(QSsl::EncodingFormat, format); QFETCH(QString, pubkeyFilePath); + QSsl::KeyAlgorithm algorithm; + if (QFileInfo(pubkeyFilePath).fileName().startsWith("dsa-")) + algorithm = QSsl::Dsa; + else if (QFileInfo(pubkeyFilePath).fileName().startsWith("ec-")) + algorithm = QSsl::Ec; + else + algorithm = QSsl::Rsa; + QByteArray encodedCert = readFile(certFilePath); QSslCertificate certificate(encodedCert, format); QVERIFY(!certificate.isNull()); QByteArray encodedPubkey = readFile(pubkeyFilePath); - QSslKey pubkey(encodedPubkey, QSsl::Rsa, format, QSsl::PublicKey); // ### support DSA as well! + QSslKey pubkey(encodedPubkey, algorithm, format, QSsl::PublicKey); QVERIFY(!pubkey.isNull()); QCOMPARE(certificate.publicKey(), pubkey); @@ -581,7 +589,7 @@ void tst_QSslCertificate::fromPath_data() QTest::newRow("\"certificates/*\" fixed der") << QString("certificates/*") << int(QRegExp::FixedString) << false << 0; QTest::newRow("\"certificates/*\" regexp pem") << QString("certificates/*") << int(QRegExp::RegExp) << true << 0; QTest::newRow("\"certificates/*\" regexp der") << QString("certificates/*") << int(QRegExp::RegExp) << false << 0; - QTest::newRow("\"certificates/*\" wildcard pem") << QString("certificates/*") << int(QRegExp::Wildcard) << true << 5; + QTest::newRow("\"certificates/*\" wildcard pem") << QString("certificates/*") << int(QRegExp::Wildcard) << true << 7; QTest::newRow("\"certificates/ca*\" wildcard pem") << QString("certificates/ca*") << int(QRegExp::Wildcard) << true << 1; QTest::newRow("\"certificates/cert*\" wildcard pem") << QString("certificates/cert*") << int(QRegExp::Wildcard) << true << 4; QTest::newRow("\"certificates/cert-[sure]*\" wildcard pem") << QString("certificates/cert-[sure]*") << int(QRegExp::Wildcard) << true << 3; @@ -612,7 +620,7 @@ void tst_QSslCertificate::fromPath_data() QTest::newRow("\"d.*/c.*.pem\" wildcard pem") << QString("d.*/c.*.pem") << int(QRegExp::Wildcard) << true << 0; QTest::newRow("\"d.*/c.*.pem\" wildcard der") << QString("d.*/c.*.pem") << int(QRegExp::Wildcard) << false << 0; #ifdef Q_OS_LINUX - QTest::newRow("absolute path wildcard pem") << (testDataDir + "/certificates/*.pem") << int(QRegExp::Wildcard) << true << 5; + QTest::newRow("absolute path wildcard pem") << (testDataDir + "/certificates/*.pem") << int(QRegExp::Wildcard) << true << 7; #endif QTest::newRow("trailing-whitespace") << QString("more-certificates/trailing-whitespace.pem") << int(QRegExp::FixedString) << true << 1;