1 /*! 2 * \brief Unit tests for \ref SignatureChecker 3 * 4 * \copyright Copyright (c) 2014-2021 Governikus GmbH & Co. KG, Germany 5 */ 6 7 #include <QtCore> 8 #include <QtTest> 9 10 #include <openssl/bn.h> 11 #include <openssl/ec.h> 12 #include <openssl/ecdsa.h> 13 #include <openssl/err.h> 14 #include <openssl/obj_mac.h> 15 16 #include "asn1/CVCertificate.h" 17 #include "asn1/SignatureChecker.h" 18 #include "TestFileHelper.h" 19 #include <QDebug> 20 21 #include "pace/ec/EcUtil.h" 22 23 24 using namespace governikus; 25 26 27 class test_SignatureChecker 28 : public QObject 29 { 30 Q_OBJECT 31 32 QVector<QSharedPointer<const CVCertificate> > cvcs; 33 load(const QString & pName)34 static QSharedPointer<const CVCertificate> load(const QString& pName) 35 { 36 QByteArray bytes = TestFileHelper::readFile(pName); 37 return CVCertificate::fromHex(bytes); 38 } 39 40 private Q_SLOTS: init()41 void init() 42 { 43 cvcs.clear(); 44 cvcs.append(load(":/card/cvca-DETESTeID00001.hex")); 45 cvcs.append(load(":/card/cvca-DETESTeID00002_DETESTeID00001.hex")); 46 cvcs.append(load(":/card/cvca-DETESTeID00004_DETESTeID00002.hex")); 47 cvcs.append(load(":/card/cvdv-DEDVeIDDPST00035.hex")); 48 cvcs.append(load(":/card/cvat-DEDEMODEV00038.hex")); 49 ERR_clear_error(); 50 } 51 52 cleanup()53 void cleanup() 54 { 55 QCOMPARE(ERR_get_error(), 0); 56 } 57 58 verifyEmptyList()59 void verifyEmptyList() 60 { 61 QVector<QSharedPointer<const CVCertificate> > certs; 62 SignatureChecker checker(certs); 63 64 QVERIFY(!checker.check()); 65 } 66 67 verifyNotSelfSigned()68 void verifyNotSelfSigned() 69 { 70 QVector<QSharedPointer<const CVCertificate> > certs(cvcs); 71 certs.removeAt(0); 72 SignatureChecker checker(certs); 73 74 QVERIFY(!checker.check()); 75 } 76 77 verifyNoCertificateWithCurveParameters()78 void verifyNoCertificateWithCurveParameters() 79 { 80 QVector<QSharedPointer<const CVCertificate> > certs(cvcs); 81 certs.removeAt(2); 82 certs.removeAt(1); 83 certs.removeAt(0); 84 SignatureChecker checker(certs); 85 86 QVERIFY(!checker.check()); 87 } 88 89 verifyNoValidChain()90 void verifyNoValidChain() 91 { 92 QVector<QSharedPointer<const CVCertificate> > certs(cvcs); 93 certs.removeAt(2); 94 SignatureChecker checker(certs); 95 96 QVERIFY(!checker.check()); 97 } 98 99 verifyValidChain()100 void verifyValidChain() 101 { 102 qDebug() << cvcs.size(); 103 SignatureChecker checker(cvcs); 104 105 QVERIFY(checker.check()); 106 } 107 108 109 }; 110 111 QTEST_GUILESS_MAIN(test_SignatureChecker) 112 #include "test_SignatureChecker.moc" 113