diff --git a/unittest/certunittest/certs/QualitySSLIntermediateCA.crt b/unittest/certunittest/certs/QualitySSLIntermediateCA.crt new file mode 100644 index 00000000..961dfaa7 --- /dev/null +++ b/unittest/certunittest/certs/QualitySSLIntermediateCA.crt @@ -0,0 +1,30 @@ +-----BEGIN CERTIFICATE----- +MIIFKjCCBJOgAwIBAgIEAgACmjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJV +UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU +cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds +b2JhbCBSb290MB4XDTAyMDgyNzE5MDIwMFoXDTEyMDgyNzIzNTkwMFowgdwxCzAJ +BgNVBAYTAkdCMRcwFQYDVQQKEw5Db21vZG8gTGltaXRlZDEdMBsGA1UECxMUQ29t +b2RvIFRydXN0IE5ldHdvcmsxRjBEBgNVBAsTPVRlcm1zIGFuZCBDb25kaXRpb25z +IG9mIHVzZTogaHR0cDovL3d3dy5jb21vZG8ubmV0L3JlcG9zaXRvcnkxHzAdBgNV +BAsTFihjKTIwMDIgQ29tb2RvIExpbWl0ZWQxLDAqBgNVBAMTI0NvbW9kbyBDbGFz +cyAzIFNlY3VyaXR5IFNlcnZpY2VzIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEA8gy2z4eE6gpxFFIt6FdcSVI6z8PwQm1i8v6m6T48eGQDDiB+a2tp +h4lUOAX02scFQAUYd378a4sOHKKCzKyFmznpy0tIGEhrKOTC0VuuA6l+mC9ME3Hf +sCkMTqqmNyY4udBEUoKQPnBI1nqbCQe8lOT0VSzytyq+HJEcaouDTTVsEOFz2iHZ +YtjxGbDx5yCNtZdHI0tqgTUbr0jgNqiQTE1M7PWIzsax0C//eZAB2FFk5y+xCI1d +z636soCWq6yLtUy0dMJHE+3oIzH0KrlhG73OpFs3Mb3lnJz7sg/XxTu/zFqrD8iG +QIkippAg07NsvhLz4yAsu8GuQ1raFnboHwIDAQABo4IB2TCCAdUwRQYDVR0fBD4w +PDA6oDigNoY0aHR0cDovL3d3dy5wdWJsaWMtdHJ1c3QuY29tL2NnaS1iaW4vQ1JM +LzIwMTgvY2RwLmNybDAdBgNVHQ4EFgQUNuDofG2dRZHumeVCdk1ws1AwrF4wgZIG +A1UdIASBijCBhzBJBgoqhkiG+GMBAgEFMDswOQYIKwYBBQUHAgEWLWh0dHA6Ly93 +d3cucHVibGljLXRydXN0LmNvbS9DUFMvT21uaVJvb3QuaHRtbDA6BgwrBgEEAbIx +AQIBAwEwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9zZWN1cmUuY29tb2RvLm5ldC9D +UDCBiQYDVR0jBIGBMH+heaR3MHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg +Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywg +SW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3SCAgGlMCsG +A1UdEAQkMCKADzIwMDIwODI3MTkwMjI0WoEPMjAwOTA4MjcyMzU5MDBaMA4GA1Ud +DwEB/wQEAwIB5jAPBgNVHRMECDAGAQH/AgEAMA0GCSqGSIb3DQEBBQUAA4GBADoe +JG/a2zZs/jpzOd3NahxpoQAfb9Su1R/UiCmlIcJX9lV7MOfSZNYOxKpwPHZ04iqu +x0ZnMpLJS/Gn1+BWvPZyEJ1/sHXWnVe1cYWqxDqnS7jsD+bS+P+1zdRFJazqBqeK +tc0yIuQhkhvvzjSuMEQa7pt/8JQRhoqHGQEoOs+z +-----END CERTIFICATE----- diff --git a/unittest/certunittest/certunittest.cpp b/unittest/certunittest/certunittest.cpp index 33d5f1a5..4a7ec32a 100644 --- a/unittest/certunittest/certunittest.cpp +++ b/unittest/certunittest/certunittest.cpp @@ -81,7 +81,55 @@ void CertUnitTest::CAcertstest() QCOMPARE( ca1.constraints().contains(QCA::OCSPSigning), (QBool)false ); // no policies on this cert - QCOMPARE( ca1.policies().count(), 0 ); + QCOMPARE( ca1.policies().count(), 0 ); + } + } +} + +void CertUnitTest::qualitysslcatest() +{ + QStringList providersToTest; + providersToTest.append("qca-openssl"); + providersToTest.append("qca-gcrypt"); + 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 resultca1; + QCA::Certificate ca1 = QCA::Certificate::fromPEMFile( "certs/QualitySSLIntermediateCA.crt", &resultca1, provider); + + QCOMPARE( resultca1, QCA::ConvertGood ); + QCOMPARE( ca1.isNull(), false ); + QCOMPARE( ca1.isCA(), true ); + QCOMPARE( ca1.isSelfSigned(), false ); + + 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.constraints().contains(QCA::DigitalSignature), (QBool)true ); + QCOMPARE( ca1.constraints().contains(QCA::NonRepudiation), (QBool)true ); + QCOMPARE( ca1.constraints().contains(QCA::KeyEncipherment), (QBool)true ); + QCOMPARE( ca1.constraints().contains(QCA::DataEncipherment), (QBool)false ); + QCOMPARE( ca1.constraints().contains(QCA::KeyAgreement), (QBool)false ); + QCOMPARE( ca1.constraints().contains(QCA::KeyCertificateSign), (QBool)true ); + QCOMPARE( ca1.constraints().contains(QCA::CRLSign), (QBool)true ); + QCOMPARE( ca1.constraints().contains(QCA::EncipherOnly), (QBool)false ); + QCOMPARE( ca1.constraints().contains(QCA::DecipherOnly), (QBool)false ); + QCOMPARE( ca1.constraints().contains(QCA::ServerAuth), (QBool)false ); + QCOMPARE( ca1.constraints().contains(QCA::ClientAuth), (QBool)false ); + QCOMPARE( ca1.constraints().contains(QCA::CodeSigning), (QBool)false ); + QCOMPARE( ca1.constraints().contains(QCA::EmailProtection), (QBool)false ); + QCOMPARE( ca1.constraints().contains(QCA::IPSecEndSystem), (QBool)false ); + QCOMPARE( ca1.constraints().contains(QCA::IPSecTunnel), (QBool)false); + QCOMPARE( ca1.constraints().contains(QCA::IPSecUser), (QBool)false ); + QCOMPARE( ca1.constraints().contains(QCA::TimeStamping), (QBool)false ); + QCOMPARE( ca1.constraints().contains(QCA::OCSPSigning), (QBool)false ); } } } diff --git a/unittest/certunittest/certunittest.h b/unittest/certunittest/certunittest.h index 66b37e40..c622d0cc 100644 --- a/unittest/certunittest/certunittest.h +++ b/unittest/certunittest/certunittest.h @@ -36,6 +36,7 @@ private slots: void initTestCase(); void checkSystemStore(); void CAcertstest(); + void qualitysslcatest(); void checkClientCerts(); void checkServerCerts(); void cleanupTestCase();