diff --git a/unittest/certunittest/CMakeLists.txt b/unittest/certunittest/CMakeLists.txt new file mode 100644 index 00000000..97ca3838 --- /dev/null +++ b/unittest/certunittest/CMakeLists.txt @@ -0,0 +1,14 @@ +set(certunittest_bin_SRCS certunittest.cpp) + +MY_AUTOMOC( certunittest_bin_SRCS ) + +add_executable(certunittest ${certunittest_bin_SRCS} ) + +target_link_libraries( certunittest qca ${QT_QTTEST_LIBRARY}) + +FOREACH( testFileName RootCAcert.pem 76.pem altname.pem csr1.pem + GoodCACRL.pem ov-root-ca-cert.crt User.pem user2goodcert.pem xmppcert.pem + Server.pem servergood2cert.pem xmppcert.pem newreq.pem + QualitySSLIntermediateCA.crt RootCA2cert.pem Test_CRL.crl ) + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/certs/${testFileName} ${CMAKE_CURRENT_BINARY_DIR}/certs/${testFileName} COPYONLY) +ENDFOREACH( testFileName ) diff --git a/unittest/certunittest/certunittest.cpp b/unittest/certunittest/certunittest.cpp index 16c5a44f..47d2f541 100644 --- a/unittest/certunittest/certunittest.cpp +++ b/unittest/certunittest/certunittest.cpp @@ -32,8 +32,9 @@ class CertUnitTest : public QObject private slots: void initTestCase(); - void checkSystemStore(); + void checkSystemStore(); void nullCert(); + void noSuchFile(); void CAcertstest(); void derCAcertstest(); void qualitysslcatest(); @@ -83,6 +84,24 @@ void CertUnitTest::nullCert() } } +void CertUnitTest::noSuchFile() +{ + QStringList providersToTest; + providersToTest.append("qca-openssl"); + // providersToTest.append("qca-botan"); + + foreach(const QString provider, providersToTest) { + if( !QCA::isSupported( "cert", provider ) ) + QWARN( QString( "Certificate handling not supported for "+provider).toLocal8Bit() ); + else { + QCA::ConvertResult resultNoFile; + QCA::Certificate cert = QCA::Certificate::fromPEMFile( "thisIsJustaFileNameThatWeDontHave", &resultNoFile, provider); + QCOMPARE( resultNoFile, QCA::ErrorFile ); + QVERIFY( cert.isNull() ); + } + } +} + void CertUnitTest::CAcertstest() { QStringList providersToTest; @@ -97,19 +116,19 @@ void CertUnitTest::CAcertstest() QCA::Certificate ca1 = QCA::Certificate::fromPEMFile( "certs/RootCAcert.pem", &resultca1, provider); QCOMPARE( ca1.pathLimit(), 0 ); - + QCOMPARE( resultca1, QCA::ConvertGood ); QCOMPARE( ca1.isNull(), false ); QCOMPARE( ca1.isCA(), true ); QCOMPARE( ca1.isSelfSigned(), true ); - + QCOMPARE( ca1.serialNumber(), QBigInteger(0) ); - + QCOMPARE( ca1.commonName(), QString("For Tests Only") ); - + QCOMPARE( ca1.notValidBefore().toString(), QDateTime( QDate( 2001, 8, 17 ), QTime( 8, 30, 39 ), Qt::UTC ).toString() ); QCOMPARE( ca1.notValidAfter().toString(), QDateTime( QDate( 2011, 8, 15 ), QTime( 8, 30, 39 ), Qt::UTC ).toString() ); - + QCOMPARE( ca1.constraints().contains(QCA::DigitalSignature), (QBool)true ); QCOMPARE( ca1.constraints().contains(QCA::NonRepudiation), (QBool)true ); QCOMPARE( ca1.constraints().contains(QCA::KeyEncipherment), (QBool)true ); @@ -147,7 +166,7 @@ void CertUnitTest::qualitysslcatest() else { QCA::ConvertResult resultca1; QCA::Certificate ca1 = QCA::Certificate::fromPEMFile( "certs/QualitySSLIntermediateCA.crt", &resultca1, provider); - + QCOMPARE( resultca1, QCA::ConvertGood ); QCOMPARE( ca1.isNull(), false ); QCOMPARE( ca1.isCA(), true ); @@ -156,12 +175,12 @@ void CertUnitTest::qualitysslcatest() QCOMPARE( ca1.signatureAlgorithm(), QCA::EMSA3_SHA1 ); QCOMPARE( ca1.serialNumber(), QBigInteger("33555098") ); - + QCOMPARE( ca1.commonName(), QString("Comodo Class 3 Security Services CA") ); - + QCOMPARE( ca1.notValidBefore().toString(), QDateTime( QDate( 2002, 8, 27 ), QTime( 19, 02, 00 ), Qt::UTC ).toString() ); QCOMPARE( ca1.notValidAfter().toString(), QDateTime( QDate( 2012, 8, 27 ), QTime( 23, 59, 00 ), Qt::UTC ).toString() ); - + QCOMPARE( ca1.pathLimit(), 0 ); @@ -203,14 +222,14 @@ void CertUnitTest::checkExpiredClientCerts() QCOMPARE( client1.isNull(), false ); QCOMPARE( client1.isCA(), false ); QCOMPARE( client1.isSelfSigned(), false ); - + QCOMPARE( client1.serialNumber(), QBigInteger(2) ); - + QCOMPARE( client1.commonName(), QString("Insecure User Test Cert") ); QCOMPARE( client1.notValidBefore().toString(), QDateTime( QDate( 2001, 8, 17 ), QTime( 8, 32, 38 ), Qt::UTC ).toString() ); QCOMPARE( client1.notValidAfter().toString(), QDateTime( QDate( 2006, 8, 16 ), QTime( 8, 32, 38 ), Qt::UTC ).toString() ); - + QCOMPARE( client1.constraints().contains(QCA::DigitalSignature), (QBool)true ); QCOMPARE( client1.constraints().contains(QCA::NonRepudiation), (QBool)true ); QCOMPARE( client1.constraints().contains(QCA::KeyEncipherment), (QBool)true ); @@ -232,13 +251,13 @@ void CertUnitTest::checkExpiredClientCerts() // no policies on this cert QCOMPARE( client1.policies().count(), 0 ); - + QCA::CertificateInfo subject1 = client1.subjectInfo(); QCOMPARE( subject1.isEmpty(), false ); QCOMPARE( subject1.values(QCA::Country).contains("de"), (QBool)true ); QCOMPARE( subject1.values(QCA::Organization).contains("InsecureTestCertificate"), (QBool)true ); QCOMPARE( subject1.values(QCA::CommonName).contains("Insecure User Test Cert"), (QBool)true ); - + QCA::CertificateInfo issuer1 = client1.issuerInfo(); QCOMPARE( issuer1.isEmpty(), false ); QCOMPARE( issuer1.values(QCA::Country).contains("de"), (QBool)true ); @@ -248,7 +267,7 @@ void CertUnitTest::checkExpiredClientCerts() QByteArray subjectKeyID = QCA::Hex().stringToArray("889E7EF729719D7B280F361AAE6D00D39DE1AADB").toByteArray(); QCOMPARE( client1.subjectKeyId(), subjectKeyID ); QCOMPARE( QCA::Hex().arrayToString(client1.issuerKeyId()), QString("bf53438278d09ec380e51b67ca0500dfb94883a5") ); - + QCA::PublicKey pubkey1 = client1.subjectPublicKey(); QCOMPARE( pubkey1.isNull(), false ); QCOMPARE( pubkey1.isRSA(), true ); @@ -257,15 +276,15 @@ void CertUnitTest::checkExpiredClientCerts() QCOMPARE( pubkey1.isPublic(), true ); QCOMPARE( pubkey1.isPrivate(), false ); QCOMPARE( pubkey1.bitSize(), 1024 ); - + QCOMPARE( client1.pathLimit(), 0 ); QCOMPARE( client1.signatureAlgorithm(), QCA::EMSA3_MD5 ); - + QCA::CertificateCollection trusted; QCA::CertificateCollection untrusted; QCOMPARE( client1.validate( trusted, untrusted ), QCA::ErrorInvalidCA ); - + QCA::ConvertResult resultca1; QCA::Certificate ca1 = QCA::Certificate::fromPEMFile( "certs/RootCAcert.pem", &resultca1, provider); QCOMPARE( resultca1, QCA::ConvertGood ); @@ -311,14 +330,14 @@ void CertUnitTest::checkClientCerts() QCOMPARE( client2.isNull(), false ); QCOMPARE( client2.isCA(), false ); QCOMPARE( client2.isSelfSigned(), false ); - + QCOMPARE( client2.serialNumber(), QBigInteger(4) ); - + QCOMPARE( client2.commonName(), QString("Insecure User Test Cert") ); QCOMPARE( client2.notValidBefore().toString(), QDateTime( QDate( 2002, 7, 1 ), QTime( 9, 58, 50 ), Qt::UTC ).toString() ); QCOMPARE( client2.notValidAfter().toString(), QDateTime( QDate( 2007, 6, 30 ), QTime( 9, 58, 50 ), Qt::UTC ).toString() ); - + QCOMPARE( client2.constraints().contains(QCA::DigitalSignature), (QBool)true ); QCOMPARE( client2.constraints().contains(QCA::NonRepudiation), (QBool)true ); QCOMPARE( client2.constraints().contains(QCA::KeyEncipherment), (QBool)true ); @@ -340,13 +359,13 @@ void CertUnitTest::checkClientCerts() // no policies on this cert QCOMPARE( client2.policies().count(), 0 ); - + QCA::CertificateInfo subject2 = client2.subjectInfo(); QCOMPARE( subject2.isEmpty(), false ); QCOMPARE( subject2.values(QCA::Country).contains("de"), (QBool)true ); QCOMPARE( subject2.values(QCA::Organization).contains("InsecureTestCertificate"), (QBool)true ); QCOMPARE( subject2.values(QCA::CommonName).contains("Insecure User Test Cert"), (QBool)true ); - + QCA::CertificateInfo issuer2 = client2.issuerInfo(); QCOMPARE( issuer2.isEmpty(), false ); QCOMPARE( issuer2.values(QCA::Country).contains("de"), (QBool)true ); @@ -356,7 +375,7 @@ void CertUnitTest::checkClientCerts() QByteArray subjectKeyID = QCA::Hex().stringToArray("7b5c26f014e47d3c5c9d5cb486a5e76cbe8e77fb").toByteArray(); QCOMPARE( client2.subjectKeyId(), subjectKeyID ); QCOMPARE( QCA::Hex().arrayToString(client2.issuerKeyId()), QString("8f084f9c53c15cc8e60cd7132ecb523c23960214") ); - + QCA::PublicKey pubkey2 = client2.subjectPublicKey(); QCOMPARE( pubkey2.isNull(), false ); QCOMPARE( pubkey2.isRSA(), true ); @@ -365,15 +384,15 @@ void CertUnitTest::checkClientCerts() QCOMPARE( pubkey2.isPublic(), true ); QCOMPARE( pubkey2.isPrivate(), false ); QCOMPARE( pubkey2.bitSize(), 1024 ); - + QCOMPARE( client2.pathLimit(), 0 ); QCOMPARE( client2.signatureAlgorithm(), QCA::EMSA3_MD5 ); - + QCA::CertificateCollection trusted; QCA::CertificateCollection untrusted; QCOMPARE( client2.validate( trusted, untrusted ), QCA::ErrorInvalidCA ); - + QCA::ConvertResult resultca2; QCA::Certificate ca2 = QCA::Certificate::fromPEMFile( "certs/RootCA2cert.pem", &resultca2, provider); QCOMPARE( resultca2, QCA::ConvertGood ); @@ -381,12 +400,12 @@ void CertUnitTest::checkClientCerts() QCOMPARE( client2.validate( trusted, untrusted ), QCA::ValidityGood ); QCOMPARE( client2.validate( trusted, untrusted, QCA::UsageAny ), QCA::ValidityGood ); - QCOMPARE( client2.validate( trusted, untrusted, QCA::UsageTLSServer ), QCA::ErrorInvalidPurpose ); + QCOMPARE( client2.validate( trusted, untrusted, QCA::UsageTLSServer ), QCA::ErrorInvalidPurpose ); QCOMPARE( client2.validate( trusted, untrusted, QCA::UsageTLSClient ), QCA::ValidityGood ); - QCOMPARE( client2.validate( trusted, untrusted, QCA::UsageCodeSigning ), QCA::ErrorInvalidPurpose ); - QCOMPARE( client2.validate( trusted, untrusted, QCA::UsageTimeStamping ), QCA::ErrorInvalidPurpose ); - QCOMPARE( client2.validate( trusted, untrusted, QCA::UsageEmailProtection ), QCA::ValidityGood ); - QCOMPARE( client2.validate( trusted, untrusted, QCA::UsageCRLSigning ), QCA::ErrorInvalidPurpose ); + QCOMPARE( client2.validate( trusted, untrusted, QCA::UsageCodeSigning ), QCA::ErrorInvalidPurpose ); + QCOMPARE( client2.validate( trusted, untrusted, QCA::UsageTimeStamping ), QCA::ErrorInvalidPurpose ); + QCOMPARE( client2.validate( trusted, untrusted, QCA::UsageEmailProtection ), QCA::ValidityGood ); + QCOMPARE( client2.validate( trusted, untrusted, QCA::UsageCRLSigning ), QCA::ErrorInvalidPurpose ); QSecureArray derClient2 = client2.toDER(); QCOMPARE( derClient2.isEmpty(), false ); QCA::Certificate fromDer2 = QCA::Certificate::fromDER( derClient2, &resultClient2, provider ); @@ -493,9 +512,9 @@ void CertUnitTest::altName() QCOMPARE( client1.isNull(), false ); QCOMPARE( client1.isCA(), false ); QCOMPARE( client1.isSelfSigned(), false ); - + QCOMPARE( client1.serialNumber(), QBigInteger(1) ); - + QCOMPARE( client1.commonName(), QString("Valid RFC822 nameConstraints EE Certificate Test21") ); QCOMPARE( client1.constraints().contains(QCA::DigitalSignature), (QBool)true ); @@ -526,7 +545,7 @@ void CertUnitTest::altName() QVERIFY( subject1.values(QCA::Organization).contains("Test Certificates") ); QVERIFY( subject1.values(QCA::CommonName).contains("Valid RFC822 nameConstraints EE Certificate Test21") ); QVERIFY( subject1.values(QCA::Email).contains("Test21EE@mailserver.testcertificates.gov") ); - + QCA::CertificateInfo issuer1 = client1.issuerInfo(); QCOMPARE( issuer1.isEmpty(), false ); QVERIFY( issuer1.values(QCA::Country).contains("US") ); @@ -536,7 +555,7 @@ void CertUnitTest::altName() QByteArray subjectKeyID = QCA::Hex().stringToArray("b4200d42cd95ea87d463d54f0ed6d10fe5b73bfb").toByteArray(); QCOMPARE( client1.subjectKeyId(), subjectKeyID ); QCOMPARE( QCA::Hex().arrayToString(client1.issuerKeyId()), QString("e37f857a8ea23b9eeeb8121d7913aac4bd2e59ad") ); - + QCA::PublicKey pubkey1 = client1.subjectPublicKey(); QCOMPARE( pubkey1.isNull(), false ); QCOMPARE( pubkey1.isRSA(), true ); @@ -545,7 +564,7 @@ void CertUnitTest::altName() QCOMPARE( pubkey1.isPublic(), true ); QCOMPARE( pubkey1.isPrivate(), false ); QCOMPARE( pubkey1.bitSize(), 1024 ); - + QCOMPARE( client1.pathLimit(), 0 ); QCOMPARE( client1.signatureAlgorithm(), QCA::EMSA3_SHA1 ); @@ -569,9 +588,9 @@ void CertUnitTest::extXMPP() QCOMPARE( client1.isNull(), false ); QCOMPARE( client1.isCA(), false ); QCOMPARE( client1.isSelfSigned(), true ); - + QCOMPARE( client1.serialNumber(), QBigInteger("9635301556349760241") ); - + QCOMPARE( client1.commonName(), QString("demo.jabber.com") ); QCA::CertificateInfo subject1 = client1.subjectInfo(); @@ -706,14 +725,14 @@ void CertUnitTest::checkExpiredServerCerts() QCOMPARE( server1.isNull(), false ); QCOMPARE( server1.isCA(), false ); QCOMPARE( server1.isSelfSigned(), false ); - + QCOMPARE( server1.serialNumber(), QBigInteger(4) ); QCOMPARE( server1.commonName(), QString("Insecure Server Cert") ); - + QCOMPARE( server1.notValidBefore().toString(), QDateTime( QDate( 2001, 8, 17 ), QTime( 8, 46, 24 ), Qt::UTC ).toString() ); QCOMPARE( server1.notValidAfter().toString(), QDateTime( QDate( 2006, 8, 16 ), QTime( 8, 46, 24 ), Qt::UTC ).toString() ); - + QCOMPARE( server1.constraints().contains(QCA::DigitalSignature), (QBool)true ); QCOMPARE( server1.constraints().contains(QCA::NonRepudiation), (QBool)false ); QCOMPARE( server1.constraints().contains(QCA::KeyEncipherment), (QBool)true ); @@ -732,27 +751,27 @@ void CertUnitTest::checkExpiredServerCerts() QCOMPARE( server1.constraints().contains(QCA::IPSecUser), (QBool)false ); QCOMPARE( server1.constraints().contains(QCA::TimeStamping), (QBool)false ); QCOMPARE( server1.constraints().contains(QCA::OCSPSigning), (QBool)false ); - + // no policies on this cert QCOMPARE( server1.policies().count(), 0 ); - + QCA::CertificateInfo subject1 = server1.subjectInfo(); QCOMPARE( subject1.isEmpty(), false ); QCOMPARE( subject1.values(QCA::Country).contains("de"), (QBool)true ); QCOMPARE( subject1.values(QCA::Organization).contains("InsecureTestCertificate"), (QBool)true ); QCOMPARE( subject1.values(QCA::CommonName).contains("Insecure Server Cert"), (QBool)true ); - + QCA::CertificateInfo issuer1 = server1.issuerInfo(); QCOMPARE( issuer1.isEmpty(), false ); QCOMPARE( issuer1.values(QCA::Country).contains("de"), (QBool)true ); QCOMPARE( issuer1.values(QCA::Organization).contains("InsecureTestCertificate"), (QBool)true ); QCOMPARE( issuer1.values(QCA::CommonName).contains("For Tests Only"), (QBool)true ); - + QByteArray subjectKeyID = QCA::Hex().stringToArray("0234E2C906F6E0B44253BE04C0CBA7823A6DB509").toByteArray(); QCOMPARE( server1.subjectKeyId(), subjectKeyID ); QByteArray authorityKeyID = QCA::Hex().stringToArray("BF53438278D09EC380E51B67CA0500DFB94883A5").toByteArray(); QCOMPARE( server1.issuerKeyId(), authorityKeyID ); - + QCA::PublicKey pubkey1 = server1.subjectPublicKey(); QCOMPARE( pubkey1.isNull(), false ); QCOMPARE( pubkey1.isRSA(), true ); @@ -761,28 +780,28 @@ void CertUnitTest::checkExpiredServerCerts() QCOMPARE( pubkey1.isPublic(), true ); QCOMPARE( pubkey1.isPrivate(), false ); QCOMPARE( pubkey1.bitSize(), 1024 ); - + QCOMPARE( server1.pathLimit(), 0 ); - + QCOMPARE( server1.signatureAlgorithm(), QCA::EMSA3_MD5 ); - + QCA::CertificateCollection trusted; QCA::CertificateCollection untrusted; QCOMPARE( server1.validate( trusted, untrusted ), QCA::ErrorInvalidCA ); - + QCA::ConvertResult resultca1; QCA::Certificate ca1 = QCA::Certificate::fromPEMFile( "certs/RootCAcert.pem", &resultca1, provider); QCOMPARE( resultca1, QCA::ConvertGood ); trusted.addCertificate( ca1 ); QCOMPARE( server1.validate( trusted, untrusted ), QCA::ErrorExpired ); QCOMPARE( server1.validate( trusted, untrusted, QCA::UsageAny ), QCA::ErrorExpired ); - QCOMPARE( server1.validate( trusted, untrusted, QCA::UsageTLSServer ), QCA::ErrorExpired ); + QCOMPARE( server1.validate( trusted, untrusted, QCA::UsageTLSServer ), QCA::ErrorExpired ); QCOMPARE( server1.validate( trusted, untrusted, QCA::UsageTLSClient ), QCA::ErrorExpired ); QCOMPARE( server1.validate( trusted, untrusted, QCA::UsageCodeSigning ), QCA::ErrorExpired ); QCOMPARE( server1.validate( trusted, untrusted, QCA::UsageTimeStamping ), QCA::ErrorExpired ); QCOMPARE( server1.validate( trusted, untrusted, QCA::UsageEmailProtection ), QCA::ErrorExpired ); QCOMPARE( server1.validate( trusted, untrusted, QCA::UsageCRLSigning ), QCA::ErrorExpired ); - + QSecureArray derServer1 = server1.toDER(); QCOMPARE( derServer1.isEmpty(), false ); QCA::Certificate fromDer1 = QCA::Certificate::fromDER( derServer1, &resultServer1, provider ); @@ -809,14 +828,14 @@ void CertUnitTest::checkServerCerts() QCOMPARE( server1.isNull(), false ); QCOMPARE( server1.isCA(), false ); QCOMPARE( server1.isSelfSigned(), false ); - + QCOMPARE( server1.serialNumber(), QBigInteger(6) ); QCOMPARE( server1.commonName(), QString("Insecure Server Cert") ); - + QCOMPARE( server1.notValidBefore().toString(), QDateTime( QDate( 2002, 7, 1 ), QTime( 10, 21, 49 ), Qt::UTC ).toString() ); QCOMPARE( server1.notValidAfter().toString(), QDateTime( QDate( 2007, 6, 30 ), QTime( 10, 21, 49 ), Qt::UTC ).toString() ); - + QCOMPARE( server1.constraints().contains(QCA::DigitalSignature), (QBool)true ); QCOMPARE( server1.constraints().contains(QCA::NonRepudiation), (QBool)false ); QCOMPARE( server1.constraints().contains(QCA::KeyEncipherment), (QBool)true ); @@ -835,27 +854,27 @@ void CertUnitTest::checkServerCerts() QCOMPARE( server1.constraints().contains(QCA::IPSecUser), (QBool)false ); QCOMPARE( server1.constraints().contains(QCA::TimeStamping), (QBool)false ); QCOMPARE( server1.constraints().contains(QCA::OCSPSigning), (QBool)false ); - + // no policies on this cert QCOMPARE( server1.policies().count(), 0 ); - + QCA::CertificateInfo subject1 = server1.subjectInfo(); QCOMPARE( subject1.isEmpty(), false ); QCOMPARE( subject1.values(QCA::Country).contains("de"), (QBool)true ); QCOMPARE( subject1.values(QCA::Organization).contains("InsecureTestCertificate"), (QBool)true ); QCOMPARE( subject1.values(QCA::CommonName).contains("Insecure Server Cert"), (QBool)true ); - + QCA::CertificateInfo issuer1 = server1.issuerInfo(); QCOMPARE( issuer1.isEmpty(), false ); QCOMPARE( issuer1.values(QCA::Country).contains("de"), (QBool)true ); QCOMPARE( issuer1.values(QCA::Organization).contains("InsecureTestCertificate"), (QBool)true ); QCOMPARE( issuer1.values(QCA::CommonName).contains("For Tests Only next generation"), (QBool)true ); - + QByteArray subjectKeyID = QCA::Hex().stringToArray("f5f1298acd3198962b005b7855f6cc6955eef318").toByteArray(); QCOMPARE( server1.subjectKeyId(), subjectKeyID ); QByteArray authorityKeyID = QCA::Hex().stringToArray("8f084f9c53c15cc8e60cd7132ecb523c23960214").toByteArray(); QCOMPARE( server1.issuerKeyId(), authorityKeyID ); - + QCA::PublicKey pubkey1 = server1.subjectPublicKey(); QCOMPARE( pubkey1.isNull(), false ); QCOMPARE( pubkey1.isRSA(), true ); @@ -864,15 +883,15 @@ void CertUnitTest::checkServerCerts() QCOMPARE( pubkey1.isPublic(), true ); QCOMPARE( pubkey1.isPrivate(), false ); QCOMPARE( pubkey1.bitSize(), 1024 ); - + QCOMPARE( server1.pathLimit(), 0 ); - + QCOMPARE( server1.signatureAlgorithm(), QCA::EMSA3_MD5 ); - + QCA::CertificateCollection trusted; QCA::CertificateCollection untrusted; QCOMPARE( server1.validate( trusted, untrusted ), QCA::ErrorInvalidCA ); - + QCA::ConvertResult resultca1; QCA::Certificate ca1 = QCA::Certificate::fromPEMFile( "certs/RootCA2cert.pem", &resultca1, provider); QCOMPARE( resultca1, QCA::ConvertGood ); @@ -885,7 +904,7 @@ void CertUnitTest::checkServerCerts() QCOMPARE( server1.validate( trusted, untrusted, QCA::UsageTimeStamping ), QCA::ErrorInvalidPurpose ); QCOMPARE( server1.validate( trusted, untrusted, QCA::UsageEmailProtection ), QCA::ErrorInvalidPurpose ); QCOMPARE( server1.validate( trusted, untrusted, QCA::UsageCRLSigning ), QCA::ErrorInvalidPurpose ); - + QSecureArray derServer1 = server1.toDER(); QCOMPARE( derServer1.isEmpty(), false ); QCA::Certificate fromDer1 = QCA::Certificate::fromDER( derServer1, &resultServer1, provider );