/*! * \brief Unit tests for \ref SignatureChecker * * \copyright Copyright (c) 2014-2018 Governikus GmbH & Co. KG, Germany */ #include #include #include #include #include #include #include #include "asn1/CVCertificate.h" #include "asn1/SignatureChecker.h" #include "TestFileHelper.h" #include #include "pace/ec/EcUtil.h" using namespace governikus; class test_SignatureChecker : public QObject { Q_OBJECT QVector > cvcs; static QSharedPointer load(const QString& pName) { QByteArray bytes = TestFileHelper::readFile(pName); return CVCertificate::fromHex(bytes); } private Q_SLOTS: void init() { cvcs.clear(); cvcs.append(load(":/card/cvca-DETESTeID00001.hex")); cvcs.append(load(":/card/cvca-DETESTeID00002_DETESTeID00001.hex")); cvcs.append(load(":/card/cvca-DETESTeID00004_DETESTeID00002.hex")); cvcs.append(load(":/card/cvdv-DEDVeIDDPST00035.hex")); cvcs.append(load(":/card/cvat-DEDEMODEV00038.hex")); ERR_clear_error(); } void cleanup() { QCOMPARE(ERR_get_error(), 0); } void verifyEmptyList() { QVector > certs; SignatureChecker checker(certs); QVERIFY(!checker.check()); } void verifyNotSelfSigned() { QVector > certs(cvcs); certs.removeAt(0); SignatureChecker checker(certs); QVERIFY(!checker.check()); } void verifyNoCertificateWithCurveParameters() { QVector > certs(cvcs); certs.removeAt(2); certs.removeAt(1); certs.removeAt(0); SignatureChecker checker(certs); QVERIFY(!checker.check()); } void verifyNoValidChain() { QVector > certs(cvcs); certs.removeAt(2); SignatureChecker checker(certs); QVERIFY(!checker.check()); } void verifyValidChain() { qDebug() << cvcs.size(); SignatureChecker checker(cvcs); QVERIFY(checker.check()); } }; QTEST_GUILESS_MAIN(test_SignatureChecker) #include "test_SignatureChecker.moc"