1 /*! 2 * \brief Unit tests for \ref CertificateGenerator 3 * 4 * \copyright Copyright (c) 2017-2021 Governikus GmbH & Co. KG, Germany 5 */ 6 7 #include "KeyPair.h" 8 9 #include "TlsChecker.h" 10 11 #include <QSslCertificateExtension> 12 #include <QtTest> 13 14 using namespace governikus; 15 16 17 class test_KeyPair 18 : public QObject 19 { 20 Q_OBJECT 21 22 private Q_SLOTS: validKey()23 void validKey() 24 { 25 const KeyPair pair = KeyPair::generate(); 26 QVERIFY(pair.isValid()); 27 const auto& key = pair.getKey(); 28 QVERIFY(!key.isNull()); 29 QCOMPARE(key.length(), 2048); 30 QCOMPARE(key.algorithm(), QSsl::Rsa); 31 QCOMPARE(key.type(), QSsl::PrivateKey); 32 } 33 34 multiKey()35 void multiKey() 36 { 37 const KeyPair pair1 = KeyPair::generate(); 38 QVERIFY(!pair1.getKey().isNull()); 39 40 const KeyPair pair2 = KeyPair::generate(); 41 QVERIFY(!pair2.getKey().isNull()); 42 43 QVERIFY(pair1.getKey() != pair2.getKey()); 44 } 45 46 validCertificate()47 void validCertificate() 48 { 49 const KeyPair pair = KeyPair::generate(); 50 QVERIFY(pair.isValid()); 51 const auto& cert = pair.getCertificate(); 52 QVERIFY(!cert.isNull()); 53 QCOMPARE(cert.issuerInfo(QSslCertificate::CommonName).size(), 1); 54 QCOMPARE(cert.issuerInfo(QSslCertificate::CommonName).at(0), QCoreApplication::applicationName()); 55 QCOMPARE(cert.issuerInfo(QSslCertificate::SerialNumber).size(), 1); 56 QVERIFY(cert.issuerInfo(QSslCertificate::SerialNumber).at(0).size() > 0); 57 QVERIFY(cert.extensions().isEmpty()); 58 QCOMPARE(cert.version(), QByteArray("1")); 59 QVERIFY(cert.isSelfSigned()); 60 61 X509* rawCert = static_cast<X509*>(cert.handle()); 62 const qlonglong serialNumberValue = ASN1_INTEGER_get(X509_get_serialNumber(rawCert)); 63 QVERIFY(serialNumberValue > 0); 64 QVERIFY(QByteArray::number(serialNumberValue).size() < 21); 65 66 const auto& key = cert.publicKey(); 67 QCOMPARE(key.length(), 2048); 68 QCOMPARE(key.algorithm(), QSsl::Rsa); 69 QCOMPARE(key.type(), QSsl::PublicKey); 70 QVERIFY(TlsChecker::hasValidCertificateKeyLength(cert)); 71 72 QVERIFY(cert.expiryDate().isValid()); 73 QVERIFY(cert.effectiveDate().isValid()); 74 QVERIFY(cert.expiryDate() > QDateTime::currentDateTime()); 75 QVERIFY(cert.effectiveDate() <= QDateTime::currentDateTime()); 76 } 77 78 multiCertificate()79 void multiCertificate() 80 { 81 const KeyPair pair1 = KeyPair::generate(); 82 QVERIFY(!pair1.getCertificate().isNull()); 83 84 const KeyPair pair2 = KeyPair::generate(); 85 QVERIFY(!pair2.getCertificate().isNull()); 86 87 QVERIFY(pair1.getCertificate() != pair2.getCertificate()); 88 } 89 90 91 }; 92 93 QTEST_GUILESS_MAIN(test_KeyPair) 94 #include "test_KeyPair.moc" 95