mirror of
https://github.com/QuasarApp/qca.git
synced 2025-05-09 01:09:34 +00:00
Switch the certificate handling unit test over to
the QTestLib framework. svn path=/trunk/kdesupport/qca/; revision=503466
This commit is contained in:
parent
0421e0c4b2
commit
a68a9ea320
unittest
certunittest.cpp
certunittest
certs
OCSPServer.crtOCSPServer.pemOCSPServer.txtRootCA.txtRootCAcert.crtRootCAcert.pemServer.crtServer.p12Server.pemServer.txtServerkey.pemServerrev.crtServerrev.p12Serverrev.pemServerrevkey.pemSeverrev.txtTest_CRL.crlUser.crtUser.p12User.pemUser.txtUserkey.pemUserrev.crtUserrev.p12Userrev.pemUserrev.txtUserrevkey.pemcrl.txt
certunittest.cppcertunittest.hcertunittest.pro@ -1,277 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2004-2005 Brad Hards <bradh@frogmouth.net>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#include "certunittest.h"
|
||||
#include <QtCrypto>
|
||||
|
||||
#include <iostream>
|
||||
CertUnitTest::CertUnitTest()
|
||||
: Tester()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void CertUnitTest::checkCAcerts(const QString &provider)
|
||||
{
|
||||
QCA::ConvertResult resultca1;
|
||||
QCA::Certificate ca1 = QCA::Certificate::fromPEMFile( "certs/RootCAcert.pem", &resultca1, provider);
|
||||
|
||||
CHECK( resultca1, QCA::ConvertGood );
|
||||
CHECK( ca1.isNull(), false );
|
||||
CHECK( ca1.isCA(), true );
|
||||
CHECK( ca1.isSelfSigned(), true );
|
||||
|
||||
CHECK( ca1.serialNumber(), QBigInteger(0) );
|
||||
|
||||
CHECK( ca1.commonName(), QString("For Tests Only") );
|
||||
|
||||
CHECK( ca1.notValidBefore().toString(), QDateTime( QDate( 2001, 8, 17 ), QTime( 8, 30, 39 ), Qt::UTC ).toString() );
|
||||
CHECK( ca1.notValidAfter().toString(), QDateTime( QDate( 2011, 8, 15 ), QTime( 8, 30, 39 ), Qt::UTC ).toString() );
|
||||
|
||||
CHECK( ca1.constraints().contains(QCA::DigitalSignature), (QBool)true );
|
||||
CHECK( ca1.constraints().contains(QCA::NonRepudiation), (QBool)true );
|
||||
CHECK( ca1.constraints().contains(QCA::KeyEncipherment), (QBool)true );
|
||||
CHECK( ca1.constraints().contains(QCA::DataEncipherment), (QBool)false );
|
||||
CHECK( ca1.constraints().contains(QCA::KeyAgreement), (QBool)false );
|
||||
CHECK( ca1.constraints().contains(QCA::KeyCertificateSign), (QBool)true );
|
||||
CHECK( ca1.constraints().contains(QCA::CRLSign), (QBool)true );
|
||||
CHECK( ca1.constraints().contains(QCA::EncipherOnly), (QBool)false );
|
||||
CHECK( ca1.constraints().contains(QCA::DecipherOnly), (QBool)false );
|
||||
CHECK( ca1.constraints().contains(QCA::ServerAuth), (QBool)false );
|
||||
CHECK( ca1.constraints().contains(QCA::ClientAuth), (QBool)false );
|
||||
CHECK( ca1.constraints().contains(QCA::CodeSigning), (QBool)false );
|
||||
CHECK( ca1.constraints().contains(QCA::EmailProtection), (QBool)false );
|
||||
CHECK( ca1.constraints().contains(QCA::IPSecEndSystem), (QBool)false );
|
||||
CHECK( ca1.constraints().contains(QCA::IPSecTunnel), (QBool)false);
|
||||
CHECK( ca1.constraints().contains(QCA::IPSecUser), (QBool)false );
|
||||
CHECK( ca1.constraints().contains(QCA::TimeStamping), (QBool)false );
|
||||
CHECK( ca1.constraints().contains(QCA::OCSPSigning), (QBool)false );
|
||||
|
||||
// no policies on this cert
|
||||
CHECK( ca1.policies().count(), 0 );
|
||||
}
|
||||
|
||||
void CertUnitTest::checkClientCerts(const QString &provider)
|
||||
{
|
||||
QCA::ConvertResult resultClient1;
|
||||
QCA::Certificate client1 = QCA::Certificate::fromPEMFile( "certs/User.pem", &resultClient1, provider);
|
||||
CHECK( resultClient1, QCA::ConvertGood );
|
||||
CHECK( client1.isNull(), false );
|
||||
CHECK( client1.isCA(), false );
|
||||
CHECK( client1.isSelfSigned(), false );
|
||||
|
||||
CHECK( client1.serialNumber(), QBigInteger(2) );
|
||||
|
||||
CHECK( client1.commonName(), QString("Insecure User Test Cert") );
|
||||
|
||||
CHECK( client1.notValidBefore().toString(), QDateTime( QDate( 2001, 8, 17 ), QTime( 8, 32, 38 ), Qt::UTC ).toString() );
|
||||
CHECK( client1.notValidAfter().toString(), QDateTime( QDate( 2006, 8, 16 ), QTime( 8, 32, 38 ), Qt::UTC ).toString() );
|
||||
|
||||
CHECK( client1.constraints().contains(QCA::DigitalSignature), (QBool)true );
|
||||
CHECK( client1.constraints().contains(QCA::NonRepudiation), (QBool)true );
|
||||
CHECK( client1.constraints().contains(QCA::KeyEncipherment), (QBool)true );
|
||||
CHECK( client1.constraints().contains(QCA::DataEncipherment), (QBool)true );
|
||||
CHECK( client1.constraints().contains(QCA::KeyAgreement), (QBool)false );
|
||||
CHECK( client1.constraints().contains(QCA::KeyCertificateSign), (QBool)false );
|
||||
CHECK( client1.constraints().contains(QCA::CRLSign), (QBool)false );
|
||||
CHECK( client1.constraints().contains(QCA::EncipherOnly), (QBool)false );
|
||||
CHECK( client1.constraints().contains(QCA::DecipherOnly), (QBool)false );
|
||||
CHECK( client1.constraints().contains(QCA::ServerAuth), (QBool)false );
|
||||
CHECK( client1.constraints().contains(QCA::ClientAuth), (QBool)true );
|
||||
CHECK( client1.constraints().contains(QCA::CodeSigning), (QBool)false );
|
||||
CHECK( client1.constraints().contains(QCA::EmailProtection), (QBool)true );
|
||||
CHECK( client1.constraints().contains(QCA::IPSecEndSystem), (QBool)false );
|
||||
CHECK( client1.constraints().contains(QCA::IPSecTunnel), (QBool)false);
|
||||
CHECK( client1.constraints().contains(QCA::IPSecUser), (QBool)false );
|
||||
CHECK( client1.constraints().contains(QCA::TimeStamping), (QBool)false );
|
||||
CHECK( client1.constraints().contains(QCA::OCSPSigning), (QBool)false );
|
||||
|
||||
// no policies on this cert
|
||||
CHECK( client1.policies().count(), 0 );
|
||||
|
||||
QCA::CertificateInfo subject1 = client1.subjectInfo();
|
||||
CHECK( subject1.isEmpty(), false );
|
||||
CHECK( subject1.values(QCA::Country).contains("de"), (QBool)true );
|
||||
CHECK( subject1.values(QCA::Organization).contains("InsecureTestCertificate"), (QBool)true );
|
||||
CHECK( subject1.values(QCA::CommonName).contains("Insecure User Test Cert"), (QBool)true );
|
||||
|
||||
QCA::CertificateInfo issuer1 = client1.issuerInfo();
|
||||
CHECK( issuer1.isEmpty(), false );
|
||||
CHECK( issuer1.values(QCA::Country).contains("de"), (QBool)true );
|
||||
CHECK( issuer1.values(QCA::Organization).contains("InsecureTestCertificate"), (QBool)true );
|
||||
CHECK( issuer1.values(QCA::CommonName).contains("For Tests Only"), (QBool)true );
|
||||
|
||||
QByteArray subjectKeyID = QCA::Hex().stringToArray("889E7EF729719D7B280F361AAE6D00D39DE1AADB").toByteArray();
|
||||
CHECK( client1.subjectKeyId(), subjectKeyID );
|
||||
CHECK( QCA::Hex().arrayToString(client1.issuerKeyId()), QString("BF53438278D09EC380E51B67CA0500DFB94883A5") );
|
||||
|
||||
QCA::PublicKey pubkey1 = client1.subjectPublicKey();
|
||||
CHECK( pubkey1.isNull(), false );
|
||||
CHECK( pubkey1.isRSA(), true );
|
||||
CHECK( pubkey1.isDSA(), false );
|
||||
CHECK( pubkey1.isDH(), false );
|
||||
CHECK( pubkey1.isPublic(), true );
|
||||
CHECK( pubkey1.isPrivate(), false );
|
||||
CHECK( pubkey1.bitSize(), 1024 );
|
||||
|
||||
CHECK( client1.pathLimit(), 0 );
|
||||
|
||||
CHECK( client1.signatureAlgorithm(), QCA::EMSA3_MD5 );
|
||||
|
||||
QCA::CertificateCollection trusted;
|
||||
QCA::CertificateCollection untrusted;
|
||||
CHECK( client1.validate( trusted, untrusted ), QCA::ErrorInvalidCA );
|
||||
|
||||
QCA::ConvertResult resultca1;
|
||||
QCA::Certificate ca1 = QCA::Certificate::fromPEMFile( "certs/RootCAcert.pem", &resultca1, provider);
|
||||
CHECK( resultca1, QCA::ConvertGood );
|
||||
trusted.addCertificate( ca1 );
|
||||
CHECK( client1.validate( trusted, untrusted ), QCA::ValidityGood );
|
||||
CHECK( client1.validate( trusted, untrusted, QCA::UsageAny ), QCA::ValidityGood );
|
||||
CHECK( client1.validate( trusted, untrusted, QCA::UsageTLSServer ), QCA::ErrorInvalidPurpose );
|
||||
CHECK( client1.validate( trusted, untrusted, QCA::UsageTLSClient ), QCA::ValidityGood );
|
||||
CHECK( client1.validate( trusted, untrusted, QCA::UsageCodeSigning ), QCA::ErrorInvalidPurpose );
|
||||
CHECK( client1.validate( trusted, untrusted, QCA::UsageTimeStamping ), QCA::ErrorInvalidPurpose );
|
||||
CHECK( client1.validate( trusted, untrusted, QCA::UsageEmailProtection ), QCA::ValidityGood );
|
||||
CHECK( client1.validate( trusted, untrusted, QCA::UsageCRLSigning ), QCA::ErrorInvalidPurpose );
|
||||
|
||||
QSecureArray derClient1 = client1.toDER();
|
||||
CHECK( derClient1.isEmpty(), false );
|
||||
QCA::Certificate fromDer1 = QCA::Certificate::fromDER( derClient1, &resultClient1, provider );
|
||||
CHECK( resultClient1, QCA::ConvertGood );
|
||||
CHECK( fromDer1 == client1, true );
|
||||
}
|
||||
|
||||
|
||||
void CertUnitTest::checkServerCerts(const QString &provider)
|
||||
{
|
||||
QCA::ConvertResult resultServer1;
|
||||
QCA::Certificate server1 = QCA::Certificate::fromPEMFile( "certs/Server.pem", &resultServer1, provider);
|
||||
CHECK( resultServer1, QCA::ConvertGood );
|
||||
CHECK( server1.isNull(), false );
|
||||
CHECK( server1.isCA(), false );
|
||||
CHECK( server1.isSelfSigned(), false );
|
||||
|
||||
CHECK( server1.serialNumber(), QBigInteger(4) );
|
||||
|
||||
CHECK( server1.commonName(), QString("Insecure Server Cert") );
|
||||
|
||||
CHECK( server1.notValidBefore().toString(), QDateTime( QDate( 2001, 8, 17 ), QTime( 8, 46, 24 ), Qt::UTC ).toString() );
|
||||
CHECK( server1.notValidAfter().toString(), QDateTime( QDate( 2006, 8, 16 ), QTime( 8, 46, 24 ), Qt::UTC ).toString() );
|
||||
|
||||
CHECK( server1.constraints().contains(QCA::DigitalSignature), (QBool)true );
|
||||
CHECK( server1.constraints().contains(QCA::NonRepudiation), (QBool)false );
|
||||
CHECK( server1.constraints().contains(QCA::KeyEncipherment), (QBool)true );
|
||||
CHECK( server1.constraints().contains(QCA::DataEncipherment), (QBool)false );
|
||||
CHECK( server1.constraints().contains(QCA::KeyAgreement), (QBool)true );
|
||||
CHECK( server1.constraints().contains(QCA::KeyCertificateSign), (QBool)false );
|
||||
CHECK( server1.constraints().contains(QCA::CRLSign), (QBool)false );
|
||||
CHECK( server1.constraints().contains(QCA::EncipherOnly), (QBool)false );
|
||||
CHECK( server1.constraints().contains(QCA::DecipherOnly), (QBool)false );
|
||||
CHECK( server1.constraints().contains(QCA::ServerAuth), (QBool)true );
|
||||
CHECK( server1.constraints().contains(QCA::ClientAuth), (QBool)false );
|
||||
CHECK( server1.constraints().contains(QCA::CodeSigning), (QBool)false );
|
||||
CHECK( server1.constraints().contains(QCA::EmailProtection), (QBool)false );
|
||||
CHECK( server1.constraints().contains(QCA::IPSecEndSystem), (QBool)false );
|
||||
CHECK( server1.constraints().contains(QCA::IPSecTunnel), (QBool)false);
|
||||
CHECK( server1.constraints().contains(QCA::IPSecUser), (QBool)false );
|
||||
CHECK( server1.constraints().contains(QCA::TimeStamping), (QBool)false );
|
||||
CHECK( server1.constraints().contains(QCA::OCSPSigning), (QBool)false );
|
||||
|
||||
// no policies on this cert
|
||||
CHECK( server1.policies().count(), 0 );
|
||||
|
||||
QCA::CertificateInfo subject1 = server1.subjectInfo();
|
||||
CHECK( subject1.isEmpty(), false );
|
||||
CHECK( subject1.values(QCA::Country).contains("de"), (QBool)true );
|
||||
CHECK( subject1.values(QCA::Organization).contains("InsecureTestCertificate"), (QBool)true );
|
||||
CHECK( subject1.values(QCA::CommonName).contains("Insecure Server Cert"), (QBool)true );
|
||||
|
||||
QCA::CertificateInfo issuer1 = server1.issuerInfo();
|
||||
CHECK( issuer1.isEmpty(), false );
|
||||
CHECK( issuer1.values(QCA::Country).contains("de"), (QBool)true );
|
||||
CHECK( issuer1.values(QCA::Organization).contains("InsecureTestCertificate"), (QBool)true );
|
||||
CHECK( issuer1.values(QCA::CommonName).contains("For Tests Only"), (QBool)true );
|
||||
|
||||
QByteArray subjectKeyID = QCA::Hex().stringToArray("0234E2C906F6E0B44253BE04C0CBA7823A6DB509").toByteArray();
|
||||
CHECK( server1.subjectKeyId(), subjectKeyID );
|
||||
QByteArray authorityKeyID = QCA::Hex().stringToArray("BF53438278D09EC380E51B67CA0500DFB94883A5").toByteArray();
|
||||
CHECK( server1.issuerKeyId(), authorityKeyID );
|
||||
|
||||
QCA::PublicKey pubkey1 = server1.subjectPublicKey();
|
||||
CHECK( pubkey1.isNull(), false );
|
||||
CHECK( pubkey1.isRSA(), true );
|
||||
CHECK( pubkey1.isDSA(), false );
|
||||
CHECK( pubkey1.isDH(), false );
|
||||
CHECK( pubkey1.isPublic(), true );
|
||||
CHECK( pubkey1.isPrivate(), false );
|
||||
CHECK( pubkey1.bitSize(), 1024 );
|
||||
|
||||
CHECK( server1.pathLimit(), 0 );
|
||||
|
||||
CHECK( server1.signatureAlgorithm(), QCA::EMSA3_MD5 );
|
||||
|
||||
QCA::CertificateCollection trusted;
|
||||
QCA::CertificateCollection untrusted;
|
||||
CHECK( server1.validate( trusted, untrusted ), QCA::ErrorInvalidCA );
|
||||
|
||||
QCA::ConvertResult resultca1;
|
||||
QCA::Certificate ca1 = QCA::Certificate::fromPEMFile( "certs/RootCAcert.pem", &resultca1, provider);
|
||||
CHECK( resultca1, QCA::ConvertGood );
|
||||
trusted.addCertificate( ca1 );
|
||||
CHECK( server1.validate( trusted, untrusted ), QCA::ValidityGood );
|
||||
CHECK( server1.validate( trusted, untrusted, QCA::UsageAny ), QCA::ValidityGood );
|
||||
CHECK( server1.validate( trusted, untrusted, QCA::UsageTLSServer ), QCA::ValidityGood);
|
||||
CHECK( server1.validate( trusted, untrusted, QCA::UsageTLSClient ), QCA::ErrorInvalidPurpose );
|
||||
CHECK( server1.validate( trusted, untrusted, QCA::UsageCodeSigning ), QCA::ErrorInvalidPurpose );
|
||||
CHECK( server1.validate( trusted, untrusted, QCA::UsageTimeStamping ), QCA::ErrorInvalidPurpose );
|
||||
CHECK( server1.validate( trusted, untrusted, QCA::UsageEmailProtection ), QCA::ErrorInvalidPurpose );
|
||||
CHECK( server1.validate( trusted, untrusted, QCA::UsageCRLSigning ), QCA::ErrorInvalidPurpose );
|
||||
|
||||
QSecureArray derServer1 = server1.toDER();
|
||||
CHECK( derServer1.isEmpty(), false );
|
||||
QCA::Certificate fromDer1 = QCA::Certificate::fromDER( derServer1, &resultServer1, provider );
|
||||
CHECK( resultServer1, QCA::ConvertGood );
|
||||
CHECK( fromDer1 == server1, true );
|
||||
}
|
||||
|
||||
|
||||
void CertUnitTest::allTests()
|
||||
{
|
||||
QCA::Initializer init;
|
||||
|
||||
CHECK( QCA::haveSystemStore(), true );
|
||||
|
||||
if ( QCA::haveSystemStore() && QCA::isSupported("cert") ) {
|
||||
QCA::CertificateCollection collection1;
|
||||
collection1 = QCA::systemStore();
|
||||
}
|
||||
|
||||
if ( QCA::isSupported("cert") ) {
|
||||
checkCAcerts(QString());
|
||||
checkClientCerts(QString());
|
||||
checkServerCerts(QString());
|
||||
}
|
||||
}
|
||||
|
BIN
unittest/certunittest/certs/OCSPServer.crt
Normal file
BIN
unittest/certunittest/certs/OCSPServer.crt
Normal file
Binary file not shown.
26
unittest/certunittest/certs/OCSPServer.pem
Normal file
26
unittest/certunittest/certs/OCSPServer.pem
Normal file
@ -0,0 +1,26 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEaTCCA1GgAwIBAgIBATANBgkqhkiG9w0BAQQFADBvMQswCQYDVQQGEwJkZTEg
|
||||
MB4GA1UEChMXSW5zZWN1cmVUZXN0Q2VydGlmaWNhdGUxFzAVBgNVBAMTDkZvciBU
|
||||
ZXN0cyBPbmx5MSUwIwYJKoZIhvcNAQkBFhZpbnNlY3VyZUB0ZXN0Lmluc2VjdXJl
|
||||
MB4XDTAxMDgxNzA4MzEzN1oXDTA2MDgxNjA4MzEzN1owfjELMAkGA1UEBhMCZGUx
|
||||
IDAeBgNVBAoTF0luc2VjdXJlVGVzdENlcnRpZmljYXRlMSYwJAYDVQQDEx1JbnNl
|
||||
Y3VyZSBUZXN0IE9DU1BTZXJ2ZXIgQ2VydDElMCMGCSqGSIb3DQEJARYWaW5zZWN1
|
||||
cmVAdGVzdC5pbnNlY3VyZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAot4r
|
||||
YDfD5d8Gj5HEQMOZaner0dDI2YsmO3tkG+Mq7CoWLtYy0SpP+lsFy7ad9hgnAuSA
|
||||
a+LS160GaBEX6I6Y0iwebaw2zmO5PvPx8Acm2BSsz4LZqZz8XP3Hilt6r6F/qWVk
|
||||
xU5R0lS3RsKUltkxItj5dUT9hNgAo9s1bR3k4LECAwEAAaOCAYMwggF/MAsGA1Ud
|
||||
DwQEAwIDqDAeBgNVHSUEFzAVBggrBgEFBQcDAQYJKwYBBQUHMAEFMB0GA1UdDgQW
|
||||
BBTyS+4wJTKxJTInzevz2OcVO+KjXzCBmQYDVR0jBIGRMIGOgBS/U0OCeNCew4Dl
|
||||
G2fKBQDfuUiDpaFzpHEwbzELMAkGA1UEBhMCZGUxIDAeBgNVBAoTF0luc2VjdXJl
|
||||
VGVzdENlcnRpZmljYXRlMRcwFQYDVQQDEw5Gb3IgVGVzdHMgT25seTElMCMGCSqG
|
||||
SIb3DQEJARYWaW5zZWN1cmVAdGVzdC5pbnNlY3VyZYIBADAhBgNVHREEGjAYgRZp
|
||||
bnNlY3VyZUB0ZXN0Lmluc2VjdXJlMCEGA1UdEgQaMBiBFmluc2VjdXJlQHRlc3Qu
|
||||
aW5zZWN1cmUwEQYJYIZIAYb4QgEBBAQDAgZAMDwGCWCGSAGG+EIBDQQvFi1UaGlz
|
||||
IGNlcnRpZmljYXRlIHdhcyBpc3N1ZWQgZm9yIHRlc3Rpbmcgb25seSEwDQYJKoZI
|
||||
hvcNAQEEBQADggEBAKZVSYg5vuu3NEIb78GgWJdzhujUVAKjA8AYlACKne3JYkIa
|
||||
i8uhLwiLTLToYh5X4X91BtdMKbW92rIpz2KZ5A414+fmF0NSyx3nIt2EfHoULBLw
|
||||
VeJwewznU82PKgtSKB0urm3xf2OT478EN2eZrEVgoROvKFQbbh5zP88SOqamyg96
|
||||
wWpVw1lMq1rDqSc7uISV+xB+ETNbvmBjJ94W81QeCiTfu+2niaxqO2UA4rUR4b0p
|
||||
wPZWUbAFd9aW73715sKIUT0RjmocBhnGbdCMPjBFFHKvgUpv+ERNwqm2MKB/jH0K
|
||||
ueNsbU3JM/R66CyyO/3POk7roApbxwtVxLCmVIc=
|
||||
-----END CERTIFICATE-----
|
63
unittest/certunittest/certs/OCSPServer.txt
Normal file
63
unittest/certunittest/certs/OCSPServer.txt
Normal file
@ -0,0 +1,63 @@
|
||||
Certificate:
|
||||
Data:
|
||||
Version: 3 (0x2)
|
||||
Serial Number: 1 (0x1)
|
||||
Signature Algorithm: md5WithRSAEncryption
|
||||
Issuer: C=de, O=InsecureTestCertificate, CN=For Tests Only/Email=insecur
|
||||
e@test.insecure
|
||||
Validity
|
||||
Not Before: Aug 17 08:31:37 2001 GMT
|
||||
Not After : Aug 16 08:31:37 2006 GMT
|
||||
Subject: C=de, O=InsecureTestCertificate, CN=Insecure Test OCSPServer Ce
|
||||
rt/Email=insecure@test.insecure
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: rsaEncryption
|
||||
RSA Public Key: (1024 bit)
|
||||
Modulus (1024 bit):
|
||||
00:a2:de:2b:60:37:c3:e5:df:06:8f:91:c4:40:c3:
|
||||
99:6a:77:ab:d1:d0:c8:d9:8b:26:3b:7b:64:1b:e3:
|
||||
2a:ec:2a:16:2e:d6:32:d1:2a:4f:fa:5b:05:cb:b6:
|
||||
9d:f6:18:27:02:e4:80:6b:e2:d2:d7:ad:06:68:11:
|
||||
17:e8:8e:98:d2:2c:1e:6d:ac:36:ce:63:b9:3e:f3:
|
||||
f1:f0:07:26:d8:14:ac:cf:82:d9:a9:9c:fc:5c:fd:
|
||||
c7:8a:5b:7a:af:a1:7f:a9:65:64:c5:4e:51:d2:54:
|
||||
b7:46:c2:94:96:d9:31:22:d8:f9:75:44:fd:84:d8:
|
||||
00:a3:db:35:6d:1d:e4:e0:b1
|
||||
Exponent: 65537 (0x10001)
|
||||
X509v3 extensions:
|
||||
X509v3 Key Usage:
|
||||
Digital Signature, Key Encipherment, Key Agreement
|
||||
X509v3 Extended Key Usage:
|
||||
TLS Web Server Authentication, OCSP No Check
|
||||
X509v3 Subject Key Identifier:
|
||||
F2:4B:EE:30:25:32:B1:25:32:27:CD:EB:F3:D8:E7:15:3B:E2:A3:5F
|
||||
X509v3 Authority Key Identifier:
|
||||
keyid:BF:53:43:82:78:D0:9E:C3:80:E5:1B:67:CA:05:00:DF:B9:48:83:A5
|
||||
DirName:/C=de/O=InsecureTestCertificate/CN=For Tests Only/Email=inse
|
||||
cure@test.insecure
|
||||
serial:00
|
||||
|
||||
X509v3 Subject Alternative Name:
|
||||
email:insecure@test.insecure
|
||||
X509v3 Issuer Alternative Name:
|
||||
email:insecure@test.insecure
|
||||
Netscape Cert Type:
|
||||
SSL Server
|
||||
Netscape Comment:
|
||||
This certificate was issued for testing only!
|
||||
Signature Algorithm: md5WithRSAEncryption
|
||||
a6:55:49:88:39:be:eb:b7:34:42:1b:ef:c1:a0:58:97:73:86:
|
||||
e8:d4:54:02:a3:03:c0:18:94:00:8a:9d:ed:c9:62:42:1a:8b:
|
||||
cb:a1:2f:08:8b:4c:b4:e8:62:1e:57:e1:7f:75:06:d7:4c:29:
|
||||
b5:bd:da:b2:29:cf:62:99:e4:0e:35:e3:e7:e6:17:43:52:cb:
|
||||
1d:e7:22:dd:84:7c:7a:14:2c:12:f0:55:e2:70:7b:0c:e7:53:
|
||||
cd:8f:2a:0b:52:28:1d:2e:ae:6d:f1:7f:63:93:e3:bf:04:37:
|
||||
67:99:ac:45:60:a1:13:af:28:54:1b:6e:1e:73:3f:cf:12:3a:
|
||||
a6:a6:ca:0f:7a:c1:6a:55:c3:59:4c:ab:5a:c3:a9:27:3b:b8:
|
||||
84:95:fb:10:7e:11:33:5b:be:60:63:27:de:16:f3:54:1e:0a:
|
||||
24:df:bb:ed:a7:89:ac:6a:3b:65:00:e2:b5:11:e1:bd:29:c0:
|
||||
f6:56:51:b0:05:77:d6:96:ef:7e:f5:e6:c2:88:51:3d:11:8e:
|
||||
6a:1c:06:19:c6:6d:d0:8c:3e:30:45:14:72:af:81:4a:6f:f8:
|
||||
44:4d:c2:a9:b6:30:a0:7f:8c:7d:0a:b9:e3:6c:6d:4d:c9:33:
|
||||
f4:7a:e8:2c:b2:3b:fd:cf:3a:4e:eb:a0:0a:5b:c7:0b:55:c4:
|
||||
b0:a6:54:87
|
69
unittest/certunittest/certs/RootCA.txt
Normal file
69
unittest/certunittest/certs/RootCA.txt
Normal file
@ -0,0 +1,69 @@
|
||||
Certificate:
|
||||
Data:
|
||||
Version: 3 (0x2)
|
||||
Serial Number: 0 (0x0)
|
||||
Signature Algorithm: md5WithRSAEncryption
|
||||
Issuer: C=de, O=InsecureTestCertificate, CN=For Tests Only/Email=insecure@test.insecure
|
||||
Validity
|
||||
Not Before: Aug 17 08:30:39 2001 GMT
|
||||
Not After : Aug 15 08:30:39 2011 GMT
|
||||
Subject: C=de, O=InsecureTestCertificate, CN=For Tests Only/Email=insecure@test.insecure
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: rsaEncryption
|
||||
RSA Public Key: (2048 bit)
|
||||
Modulus (2048 bit):
|
||||
00:b2:45:99:89:0c:30:32:fa:c5:25:cb:4d:00:79:
|
||||
2f:85:a4:e3:e6:d3:08:6f:00:8a:88:42:95:9d:50:
|
||||
3d:56:af:40:bb:67:39:62:76:ac:e2:61:13:5a:7e:
|
||||
bf:e6:29:dc:95:e2:2c:b5:a1:ea:f2:b4:6d:8d:ba:
|
||||
b7:66:9c:04:06:71:54:ac:be:0a:b6:9e:ab:32:cf:
|
||||
2d:c4:14:64:a3:25:0e:2a:53:d5:d7:b0:86:a5:b3:
|
||||
fd:bc:4f:9a:ed:23:f8:c2:0f:af:69:c2:13:3f:a9:
|
||||
93:29:60:aa:a8:5e:fc:d3:f2:d8:6e:af:72:54:c7:
|
||||
80:91:45:f3:29:00:7a:c0:66:5a:7f:ae:aa:2e:91:
|
||||
f1:17:5b:dd:34:b6:13:6d:2f:6a:28:f6:2a:7e:05:
|
||||
f7:f8:70:5d:cf:c0:f8:fe:e5:9c:1e:44:b6:e6:21:
|
||||
80:91:2f:f9:5c:94:05:71:3e:06:de:50:b5:b4:c8:
|
||||
3e:48:0f:a6:b8:b8:21:c8:72:8b:44:3b:14:c1:95:
|
||||
52:7b:9e:af:69:e7:94:76:01:32:37:73:37:3a:e3:
|
||||
ba:78:f4:f4:95:af:65:a1:77:47:fe:74:4b:db:3b:
|
||||
39:1d:ed:af:61:be:66:27:7f:14:61:d0:4f:62:e0:
|
||||
4a:bf:f4:75:13:43:14:86:5c:8b:d1:20:f2:d2:1c:
|
||||
fe:03
|
||||
Exponent: 65537 (0x10001)
|
||||
X509v3 extensions:
|
||||
X509v3 Basic Constraints: critical
|
||||
CA:TRUE
|
||||
X509v3 Key Usage:
|
||||
Digital Signature, Non Repudiation, Key Encipherment, Certificate Sign, CRL Sign
|
||||
X509v3 Subject Key Identifier:
|
||||
BF:53:43:82:78:D0:9E:C3:80:E5:1B:67:CA:05:00:DF:B9:48:83:A5
|
||||
X509v3 Authority Key Identifier:
|
||||
keyid:BF:53:43:82:78:D0:9E:C3:80:E5:1B:67:CA:05:00:DF:B9:48:83:A5
|
||||
DirName:/C=de/O=InsecureTestCertificate/CN=For Tests Only/Email=insecure@test.insecure
|
||||
serial:00
|
||||
|
||||
X509v3 Subject Alternative Name:
|
||||
email:insecure@test.insecure
|
||||
X509v3 Issuer Alternative Name:
|
||||
email:insecure@test.insecure
|
||||
Netscape Cert Type:
|
||||
SSL CA, S/MIME CA, Object Signing CA
|
||||
Netscape Comment:
|
||||
This certificate was issued for testing only!
|
||||
Signature Algorithm: md5WithRSAEncryption
|
||||
16:94:25:0c:4f:64:60:e7:03:2a:28:3b:68:ec:70:5a:19:f2:
|
||||
e4:97:c2:14:08:38:4a:0b:ec:a4:57:9c:83:41:2c:09:14:e2:
|
||||
3b:db:14:c2:44:74:c4:ca:ef:f1:4c:30:4f:a7:37:d9:0a:a5:
|
||||
08:34:27:39:b1:a6:3e:81:e8:e4:76:70:22:7a:c6:39:46:63:
|
||||
cb:0f:26:dd:f6:d0:c3:15:67:5a:d7:82:bd:b0:11:7a:00:f9:
|
||||
c6:d2:d2:b8:a2:1a:cf:7b:05:d8:ad:5a:87:67:1a:cc:d6:54:
|
||||
a4:12:bc:f5:29:36:ca:0f:d8:c1:2a:97:d1:f1:4e:6f:7b:74:
|
||||
93:8d:a3:fb:00:85:4d:91:50:80:c2:df:e5:2a:c9:7e:59:ab:
|
||||
a2:ea:62:06:3e:79:49:e0:74:9a:99:01:6c:1c:10:ef:79:1d:
|
||||
e7:2c:04:35:7a:52:0f:30:17:07:a3:7d:de:d7:27:2b:a3:da:
|
||||
36:47:02:70:54:13:f3:e0:fa:50:81:27:91:06:cd:9e:ef:3d:
|
||||
34:83:68:71:3b:09:b5:4c:f1:12:9d:ec:44:8f:7e:31:2b:08:
|
||||
10:7f:81:57:18:c4:2e:b5:c7:2b:5a:ab:63:5e:7a:00:9f:21:
|
||||
ae:d3:f7:5c:93:21:fd:fe:37:94:07:48:e2:98:21:59:1b:21:
|
||||
ae:19:75:f2
|
BIN
unittest/certunittest/certs/RootCAcert.crt
Normal file
BIN
unittest/certunittest/certs/RootCAcert.crt
Normal file
Binary file not shown.
28
unittest/certunittest/certs/RootCAcert.pem
Normal file
28
unittest/certunittest/certs/RootCAcert.pem
Normal file
@ -0,0 +1,28 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEzzCCA7egAwIBAgIBADANBgkqhkiG9w0BAQQFADBvMQswCQYDVQQGEwJkZTEg
|
||||
MB4GA1UEChMXSW5zZWN1cmVUZXN0Q2VydGlmaWNhdGUxFzAVBgNVBAMTDkZvciBU
|
||||
ZXN0cyBPbmx5MSUwIwYJKoZIhvcNAQkBFhZpbnNlY3VyZUB0ZXN0Lmluc2VjdXJl
|
||||
MB4XDTAxMDgxNzA4MzAzOVoXDTExMDgxNTA4MzAzOVowbzELMAkGA1UEBhMCZGUx
|
||||
IDAeBgNVBAoTF0luc2VjdXJlVGVzdENlcnRpZmljYXRlMRcwFQYDVQQDEw5Gb3Ig
|
||||
VGVzdHMgT25seTElMCMGCSqGSIb3DQEJARYWaW5zZWN1cmVAdGVzdC5pbnNlY3Vy
|
||||
ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJFmYkMMDL6xSXLTQB5
|
||||
L4Wk4+bTCG8AiohClZ1QPVavQLtnOWJ2rOJhE1p+v+Yp3JXiLLWh6vK0bY26t2ac
|
||||
BAZxVKy+CraeqzLPLcQUZKMlDipT1dewhqWz/bxPmu0j+MIPr2nCEz+pkylgqqhe
|
||||
/NPy2G6vclTHgJFF8ykAesBmWn+uqi6R8Rdb3TS2E20vaij2Kn4F9/hwXc/A+P7l
|
||||
nB5EtuYhgJEv+VyUBXE+Bt5QtbTIPkgPpri4Ichyi0Q7FMGVUnuer2nnlHYBMjdz
|
||||
Nzrjunj09JWvZaF3R/50S9s7OR3tr2G+Zid/FGHQT2LgSr/0dRNDFIZci9Eg8tIc
|
||||
/gMCAwEAAaOCAXQwggFwMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgHmMB0G
|
||||
A1UdDgQWBBS/U0OCeNCew4DlG2fKBQDfuUiDpTCBmQYDVR0jBIGRMIGOgBS/U0OC
|
||||
eNCew4DlG2fKBQDfuUiDpaFzpHEwbzELMAkGA1UEBhMCZGUxIDAeBgNVBAoTF0lu
|
||||
c2VjdXJlVGVzdENlcnRpZmljYXRlMRcwFQYDVQQDEw5Gb3IgVGVzdHMgT25seTEl
|
||||
MCMGCSqGSIb3DQEJARYWaW5zZWN1cmVAdGVzdC5pbnNlY3VyZYIBADAhBgNVHREE
|
||||
GjAYgRZpbnNlY3VyZUB0ZXN0Lmluc2VjdXJlMCEGA1UdEgQaMBiBFmluc2VjdXJl
|
||||
QHRlc3QuaW5zZWN1cmUwEQYJYIZIAYb4QgEBBAQDAgAHMDwGCWCGSAGG+EIBDQQv
|
||||
Fi1UaGlzIGNlcnRpZmljYXRlIHdhcyBpc3N1ZWQgZm9yIHRlc3Rpbmcgb25seSEw
|
||||
DQYJKoZIhvcNAQEEBQADggEBABaUJQxPZGDnAyooO2jscFoZ8uSXwhQIOEoL7KRX
|
||||
nINBLAkU4jvbFMJEdMTK7/FMME+nN9kKpQg0Jzmxpj6B6OR2cCJ6xjlGY8sPJt32
|
||||
0MMVZ1rXgr2wEXoA+cbS0riiGs97BditWodnGszWVKQSvPUpNsoP2MEql9HxTm97
|
||||
dJONo/sAhU2RUIDC3+UqyX5Zq6LqYgY+eUngdJqZAWwcEO95HecsBDV6Ug8wFwej
|
||||
fd7XJyuj2jZHAnBUE/Pg+lCBJ5EGzZ7vPTSDaHE7CbVM8RKd7ESPfjErCBB/gVcY
|
||||
xC61xytaq2NeegCfIa7T91yTIf3+N5QHSOKYIVkbIa4ZdfI=
|
||||
-----END CERTIFICATE-----
|
BIN
unittest/certunittest/certs/Server.crt
Normal file
BIN
unittest/certunittest/certs/Server.crt
Normal file
Binary file not shown.
BIN
unittest/certunittest/certs/Server.p12
Normal file
BIN
unittest/certunittest/certs/Server.p12
Normal file
Binary file not shown.
26
unittest/certunittest/certs/Server.pem
Normal file
26
unittest/certunittest/certs/Server.pem
Normal file
@ -0,0 +1,26 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEVTCCAz2gAwIBAgIBBDANBgkqhkiG9w0BAQQFADBvMQswCQYDVQQGEwJkZTEg
|
||||
MB4GA1UEChMXSW5zZWN1cmVUZXN0Q2VydGlmaWNhdGUxFzAVBgNVBAMTDkZvciBU
|
||||
ZXN0cyBPbmx5MSUwIwYJKoZIhvcNAQkBFhZpbnNlY3VyZUB0ZXN0Lmluc2VjdXJl
|
||||
MB4XDTAxMDgxNzA4NDYyNFoXDTA2MDgxNjA4NDYyNFowdTELMAkGA1UEBhMCZGUx
|
||||
IDAeBgNVBAoTF0luc2VjdXJlVGVzdENlcnRpZmljYXRlMR0wGwYDVQQDExRJbnNl
|
||||
Y3VyZSBTZXJ2ZXIgQ2VydDElMCMGCSqGSIb3DQEJARYWaW5zZWN1cmVAdGVzdC5p
|
||||
bnNlY3VyZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1b8Mn6p8N+N6rxIk
|
||||
ieA2g4xTUuK/U4Pu6JyGfl+8Jcb56oYhrAb/85S4Pje05wV++CezIot0uqXZqoAP
|
||||
it2hcoQ07nSD34Lq7qYTa8LrtxJWrJIHRBSQCWuii1iM2tjoki93Sx80mlIYj0cR
|
||||
Ku5AbQatySDWtbozUarWpB0VOwUCAwEAAaOCAXgwggF0MAsGA1UdDwQEAwIDqDAT
|
||||
BgNVHSUEDDAKBggrBgEFBQcDATAdBgNVHQ4EFgQUAjTiyQb24LRCU74EwMungjpt
|
||||
tQkwgZkGA1UdIwSBkTCBjoAUv1NDgnjQnsOA5RtnygUA37lIg6Whc6RxMG8xCzAJ
|
||||
BgNVBAYTAmRlMSAwHgYDVQQKExdJbnNlY3VyZVRlc3RDZXJ0aWZpY2F0ZTEXMBUG
|
||||
A1UEAxMORm9yIFRlc3RzIE9ubHkxJTAjBgkqhkiG9w0BCQEWFmluc2VjdXJlQHRl
|
||||
c3QuaW5zZWN1cmWCAQAwIQYDVR0RBBowGIEWaW5zZWN1cmVAdGVzdC5pbnNlY3Vy
|
||||
ZTAhBgNVHRIEGjAYgRZpbnNlY3VyZUB0ZXN0Lmluc2VjdXJlMBEGCWCGSAGG+EIB
|
||||
AQQEAwIGQDA8BglghkgBhvhCAQ0ELxYtVGhpcyBjZXJ0aWZpY2F0ZSB3YXMgaXNz
|
||||
dWVkIGZvciB0ZXN0aW5nIG9ubHkhMA0GCSqGSIb3DQEBBAUAA4IBAQBD54lkQ7f/
|
||||
tNV53P7xVm3juHHZvez2fBsBf/pvQRkvqPgSgm5TBfX/TyZe/UcfQ9LPZhZHbs7u
|
||||
udmiuf/zKvbswwGyC5kMZN5l3ZvWag4NQZEraAWcbZTmMkAlurw7i4DfhDbfys70
|
||||
OpGKBlWmcw+7oT7woSGX3clS02E/EFbA+g7nF8vx3vLTCbdTj5ZD+xLCV462AHfL
|
||||
Zyfgdwnihdlo5+V1qUJU6oEszDopNsYyLdAVPYnSaqyG7EtBLTrQMUHDf8vTqB16
|
||||
XBpr3+U5RBki8G12LwfZ5rSM5l9A50DST9Qp3+On1J6vkAH4dlUPaaHBPxhSEz9k
|
||||
9H+4GzzMaogS
|
||||
-----END CERTIFICATE-----
|
60
unittest/certunittest/certs/Server.txt
Normal file
60
unittest/certunittest/certs/Server.txt
Normal file
@ -0,0 +1,60 @@
|
||||
Certificate:
|
||||
Data:
|
||||
Version: 3 (0x2)
|
||||
Serial Number: 4 (0x4)
|
||||
Signature Algorithm: md5WithRSAEncryption
|
||||
Issuer: C=de, O=InsecureTestCertificate, CN=For Tests Only/Email=insecure@test.insecure
|
||||
Validity
|
||||
Not Before: Aug 17 08:46:24 2001 GMT
|
||||
Not After : Aug 16 08:46:24 2006 GMT
|
||||
Subject: C=de, O=InsecureTestCertificate, CN=Insecure Server Cert/Email=insecure@test.insecure
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: rsaEncryption
|
||||
RSA Public Key: (1024 bit)
|
||||
Modulus (1024 bit):
|
||||
00:d5:bf:0c:9f:aa:7c:37:e3:7a:af:12:24:89:e0:
|
||||
36:83:8c:53:52:e2:bf:53:83:ee:e8:9c:86:7e:5f:
|
||||
bc:25:c6:f9:ea:86:21:ac:06:ff:f3:94:b8:3e:37:
|
||||
b4:e7:05:7e:f8:27:b3:22:8b:74:ba:a5:d9:aa:80:
|
||||
0f:8a:dd:a1:72:84:34:ee:74:83:df:82:ea:ee:a6:
|
||||
13:6b:c2:eb:b7:12:56:ac:92:07:44:14:90:09:6b:
|
||||
a2:8b:58:8c:da:d8:e8:92:2f:77:4b:1f:34:9a:52:
|
||||
18:8f:47:11:2a:ee:40:6d:06:ad:c9:20:d6:b5:ba:
|
||||
33:51:aa:d6:a4:1d:15:3b:05
|
||||
Exponent: 65537 (0x10001)
|
||||
X509v3 extensions:
|
||||
X509v3 Key Usage:
|
||||
Digital Signature, Key Encipherment, Key Agreement
|
||||
X509v3 Extended Key Usage:
|
||||
TLS Web Server Authentication
|
||||
X509v3 Subject Key Identifier:
|
||||
02:34:E2:C9:06:F6:E0:B4:42:53:BE:04:C0:CB:A7:82:3A:6D:B5:09
|
||||
X509v3 Authority Key Identifier:
|
||||
keyid:BF:53:43:82:78:D0:9E:C3:80:E5:1B:67:CA:05:00:DF:B9:48:83:A5
|
||||
DirName:/C=de/O=InsecureTestCertificate/CN=For Tests Only/Email=insecure@test.insecure
|
||||
serial:00
|
||||
|
||||
X509v3 Subject Alternative Name:
|
||||
email:insecure@test.insecure
|
||||
X509v3 Issuer Alternative Name:
|
||||
email:insecure@test.insecure
|
||||
Netscape Cert Type:
|
||||
SSL Server
|
||||
Netscape Comment:
|
||||
This certificate was issued for testing only!
|
||||
Signature Algorithm: md5WithRSAEncryption
|
||||
43:e7:89:64:43:b7:ff:b4:d5:79:dc:fe:f1:56:6d:e3:b8:71:
|
||||
d9:bd:ec:f6:7c:1b:01:7f:fa:6f:41:19:2f:a8:f8:12:82:6e:
|
||||
53:05:f5:ff:4f:26:5e:fd:47:1f:43:d2:cf:66:16:47:6e:ce:
|
||||
ee:b9:d9:a2:b9:ff:f3:2a:f6:ec:c3:01:b2:0b:99:0c:64:de:
|
||||
65:dd:9b:d6:6a:0e:0d:41:91:2b:68:05:9c:6d:94:e6:32:40:
|
||||
25:ba:bc:3b:8b:80:df:84:36:df:ca:ce:f4:3a:91:8a:06:55:
|
||||
a6:73:0f:bb:a1:3e:f0:a1:21:97:dd:c9:52:d3:61:3f:10:56:
|
||||
c0:fa:0e:e7:17:cb:f1:de:f2:d3:09:b7:53:8f:96:43:fb:12:
|
||||
c2:57:8e:b6:00:77:cb:67:27:e0:77:09:e2:85:d9:68:e7:e5:
|
||||
75:a9:42:54:ea:81:2c:cc:3a:29:36:c6:32:2d:d0:15:3d:89:
|
||||
d2:6a:ac:86:ec:4b:41:2d:3a:d0:31:41:c3:7f:cb:d3:a8:1d:
|
||||
7a:5c:1a:6b:df:e5:39:44:19:22:f0:6d:76:2f:07:d9:e6:b4:
|
||||
8c:e6:5f:40:e7:40:d2:4f:d4:29:df:e3:a7:d4:9e:af:90:01:
|
||||
f8:76:55:0f:69:a1:c1:3f:18:52:13:3f:64:f4:7f:b8:1b:3c:
|
||||
cc:6a:88:12
|
15
unittest/certunittest/certs/Serverkey.pem
Normal file
15
unittest/certunittest/certs/Serverkey.pem
Normal file
@ -0,0 +1,15 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIICXAIBAAKBgQDVvwyfqnw343qvEiSJ4DaDjFNS4r9Tg+7onIZ+X7wlxvnqhiGs
|
||||
Bv/zlLg+N7TnBX74J7Mii3S6pdmqgA+K3aFyhDTudIPfguruphNrwuu3ElaskgdE
|
||||
FJAJa6KLWIza2OiSL3dLHzSaUhiPRxEq7kBtBq3JINa1ujNRqtakHRU7BQIDAQAB
|
||||
AoGAB9CASaYV/IUYiyYCp/fGhnCu6yzXCdqc9WwjjqM5Ybgwkt5shLmMyf757Wxj
|
||||
9L5CshfheLXYgqplltIvv0fzCweeQCLFKrFVSdxI8N01VAdVGmAZvqUSBfChkkag
|
||||
lhMJ3bEqmsr2G1WsPJQXUuA+audFm4MC0ki6shNh+s39twECQQD5vovoKWL4Ib08
|
||||
PSKBq2N/i1XZlhlu1b1QXmNjlk2ar3B/+sdv0Hbw3sKDeZpoKsybfoPyea45faX5
|
||||
eaiZ3yF1AkEA2xmrhWBQQUdbIOIhR21/GHFoHUpovnG/pIHQwBb1IuCWCTRKrSh8
|
||||
ub0xKb7+aAedPxwrC38UzK2tm4+bWvtxUQJALRLKxVfS2N2d/aU6+RQpnPdUwzRn
|
||||
2q0QwdSHM44I64YGU9K689832Dkb+gaUa4Bt9RJcVgLIAvA+aEwgtcSjkQJAdgiM
|
||||
OJw8YA5672ojF4HLmHVv62esqfxJi+xLc1Bq21E2Qtsi58oJ914O4Dh+gbioY9le
|
||||
7yCVKfbeshFZVlhjIQJBALvRAEi256ZCKfA91IqurT/kvJa6M2KC8Y6vj9OMY+cP
|
||||
UZZSFM/pZRBoL+eh0HGILDlDCrObyA7bU2a4imvTsw8=
|
||||
-----END RSA PRIVATE KEY-----
|
BIN
unittest/certunittest/certs/Serverrev.crt
Normal file
BIN
unittest/certunittest/certs/Serverrev.crt
Normal file
Binary file not shown.
BIN
unittest/certunittest/certs/Serverrev.p12
Normal file
BIN
unittest/certunittest/certs/Serverrev.p12
Normal file
Binary file not shown.
26
unittest/certunittest/certs/Serverrev.pem
Normal file
26
unittest/certunittest/certs/Serverrev.pem
Normal file
@ -0,0 +1,26 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEXTCCA0WgAwIBAgIBBTANBgkqhkiG9w0BAQQFADBvMQswCQYDVQQGEwJkZTEg
|
||||
MB4GA1UEChMXSW5zZWN1cmVUZXN0Q2VydGlmaWNhdGUxFzAVBgNVBAMTDkZvciBU
|
||||
ZXN0cyBPbmx5MSUwIwYJKoZIhvcNAQkBFhZpbnNlY3VyZUB0ZXN0Lmluc2VjdXJl
|
||||
MB4XDTAxMDgxNzA4NDcwMloXDTA2MDgxNjA4NDcwMlowfTELMAkGA1UEBhMCZGUx
|
||||
IDAeBgNVBAoTF0luc2VjdXJlVGVzdENlcnRpZmljYXRlMSUwIwYDVQQDExxJbnNl
|
||||
Y3VyZSBTZXJ2ZXIgQ2VydCByZXZva2VkMSUwIwYJKoZIhvcNAQkBFhZpbnNlY3Vy
|
||||
ZUB0ZXN0Lmluc2VjdXJlMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJOp6M
|
||||
tXs2lajdgmS9j+rVCGI5SehsOVOovm7MeWD+777+MYk7t0lBrfDYFRUYMxJomlfI
|
||||
+Lx/vJdFNdXEyoyC+7UUnv+pmOv5QhbCEkL21Fz0Nqy834cAy39M/uPkJTbo2U3X
|
||||
k92alVLSsw5La9Dbnj3wN4Xa8c2bnUrg+LNWJwIDAQABo4IBeDCCAXQwCwYDVR0P
|
||||
BAQDAgOoMBMGA1UdJQQMMAoGCCsGAQUFBwMBMB0GA1UdDgQWBBTxWO4/rkl8BTNv
|
||||
Ewno1nb7qS/6jTCBmQYDVR0jBIGRMIGOgBS/U0OCeNCew4DlG2fKBQDfuUiDpaFz
|
||||
pHEwbzELMAkGA1UEBhMCZGUxIDAeBgNVBAoTF0luc2VjdXJlVGVzdENlcnRpZmlj
|
||||
YXRlMRcwFQYDVQQDEw5Gb3IgVGVzdHMgT25seTElMCMGCSqGSIb3DQEJARYWaW5z
|
||||
ZWN1cmVAdGVzdC5pbnNlY3VyZYIBADAhBgNVHREEGjAYgRZpbnNlY3VyZUB0ZXN0
|
||||
Lmluc2VjdXJlMCEGA1UdEgQaMBiBFmluc2VjdXJlQHRlc3QuaW5zZWN1cmUwEQYJ
|
||||
YIZIAYb4QgEBBAQDAgZAMDwGCWCGSAGG+EIBDQQvFi1UaGlzIGNlcnRpZmljYXRl
|
||||
IHdhcyBpc3N1ZWQgZm9yIHRlc3Rpbmcgb25seSEwDQYJKoZIhvcNAQEEBQADggEB
|
||||
AGqiwh7B17OigTMvi1wzmRxhaB8lWUcwruVzjjjBL9g6flRey1n9IZjE1jnfAtwe
|
||||
j3ciMD9fCTSlw5XdOBQ3WItwHnk4oZ5pc4zObZfWrmATshTZKNnvQEVUOvcEEngu
|
||||
m5uyq3H5lGAHEpGVr6xf5e45L3KYYj7K/CrkSz9h9cmBhLCqnQfVzq1cXTSYon+0
|
||||
opRNqoQnm+UeOIi5TOSKzUiuXDkmxSZy9PntGSW/21cTz7ariuCuDdRT1OY94wI8
|
||||
yO1oxhOoGT9jdVLFD1zjFZCwybI+vkXFXn67dlWB0pPwnp8BAm03NMTrGZl55nfr
|
||||
s3NMp2KqAx837lP1yHEfU5s=
|
||||
-----END CERTIFICATE-----
|
15
unittest/certunittest/certs/Serverrevkey.pem
Normal file
15
unittest/certunittest/certs/Serverrevkey.pem
Normal file
@ -0,0 +1,15 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIICXAIBAAKBgQDJOp6MtXs2lajdgmS9j+rVCGI5SehsOVOovm7MeWD+777+MYk7
|
||||
t0lBrfDYFRUYMxJomlfI+Lx/vJdFNdXEyoyC+7UUnv+pmOv5QhbCEkL21Fz0Nqy8
|
||||
34cAy39M/uPkJTbo2U3Xk92alVLSsw5La9Dbnj3wN4Xa8c2bnUrg+LNWJwIDAQAB
|
||||
AoGAXg3wHYSV2qWJED/qJlAmSvxoLK7G3A7Pc4fO8fOpyn70nos4wZihvPk4IUd5
|
||||
XJ5CdHHvphfcwze63LaU/C5QDfNO5uHCOjLWc/jxCPxQ7DRJkAQXUfZc56rBOsei
|
||||
JQ+jgjqzMEfVtgOXuz7hOqvyN+IZ21qmWitoP7bbjJ9ME0ECQQD+2yt/7xxwirPc
|
||||
XJAO8gcpWu0pF3u7pLYWD6modFKFa1Z8TGHiu4EePNBut39i3ym2U7YWJkoh4M/C
|
||||
F+Rh1H9LAkEAyiHU7LYPJ5J9GGW8xA1ns6a669M/jhBwwP68M6De9tb9JprOuMWV
|
||||
8bkE0bTrnZiKfYduk42GGaY8Hl1HYT6PFQJAFXZBiImLXJLhqKoG26tYHQxyMmau
|
||||
3dN2Hg99mxkIpgGvC9Km36AotHIsn1ZGnP3sFlWgXOcmkQnMlSzL580sVwJAOlN+
|
||||
3HtAbjvQCx04Vh5EIUvoPipr+XN3Bcm7xu4RyIqK6/vZ0Ol69hBceqLJJmWg+M3+
|
||||
s2cwHfChAmYKNd5WbQJBAMfbNRhKGXK/M6bbKD92FMhpjEMaY4++WmqQ+yCGjLGD
|
||||
OiSYAsHiDtcgtHhTvPp8ULzcsbbgbMiECTwh7h6Gw4c=
|
||||
-----END RSA PRIVATE KEY-----
|
60
unittest/certunittest/certs/Severrev.txt
Normal file
60
unittest/certunittest/certs/Severrev.txt
Normal file
@ -0,0 +1,60 @@
|
||||
Certificate:
|
||||
Data:
|
||||
Version: 3 (0x2)
|
||||
Serial Number: 5 (0x5)
|
||||
Signature Algorithm: md5WithRSAEncryption
|
||||
Issuer: C=de, O=InsecureTestCertificate, CN=For Tests Only/Email=insecure@test.insecure
|
||||
Validity
|
||||
Not Before: Aug 17 08:47:02 2001 GMT
|
||||
Not After : Aug 16 08:47:02 2006 GMT
|
||||
Subject: C=de, O=InsecureTestCertificate, CN=Insecure Server Cert revoked/Email=insecure@test.insecure
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: rsaEncryption
|
||||
RSA Public Key: (1024 bit)
|
||||
Modulus (1024 bit):
|
||||
00:c9:3a:9e:8c:b5:7b:36:95:a8:dd:82:64:bd:8f:
|
||||
ea:d5:08:62:39:49:e8:6c:39:53:a8:be:6e:cc:79:
|
||||
60:fe:ef:be:fe:31:89:3b:b7:49:41:ad:f0:d8:15:
|
||||
15:18:33:12:68:9a:57:c8:f8:bc:7f:bc:97:45:35:
|
||||
d5:c4:ca:8c:82:fb:b5:14:9e:ff:a9:98:eb:f9:42:
|
||||
16:c2:12:42:f6:d4:5c:f4:36:ac:bc:df:87:00:cb:
|
||||
7f:4c:fe:e3:e4:25:36:e8:d9:4d:d7:93:dd:9a:95:
|
||||
52:d2:b3:0e:4b:6b:d0:db:9e:3d:f0:37:85:da:f1:
|
||||
cd:9b:9d:4a:e0:f8:b3:56:27
|
||||
Exponent: 65537 (0x10001)
|
||||
X509v3 extensions:
|
||||
X509v3 Key Usage:
|
||||
Digital Signature, Key Encipherment, Key Agreement
|
||||
X509v3 Extended Key Usage:
|
||||
TLS Web Server Authentication
|
||||
X509v3 Subject Key Identifier:
|
||||
F1:58:EE:3F:AE:49:7C:05:33:6F:13:09:E8:D6:76:FB:A9:2F:FA:8D
|
||||
X509v3 Authority Key Identifier:
|
||||
keyid:BF:53:43:82:78:D0:9E:C3:80:E5:1B:67:CA:05:00:DF:B9:48:83:A5
|
||||
DirName:/C=de/O=InsecureTestCertificate/CN=For Tests Only/Email=insecure@test.insecure
|
||||
serial:00
|
||||
|
||||
X509v3 Subject Alternative Name:
|
||||
email:insecure@test.insecure
|
||||
X509v3 Issuer Alternative Name:
|
||||
email:insecure@test.insecure
|
||||
Netscape Cert Type:
|
||||
SSL Server
|
||||
Netscape Comment:
|
||||
This certificate was issued for testing only!
|
||||
Signature Algorithm: md5WithRSAEncryption
|
||||
6a:a2:c2:1e:c1:d7:b3:a2:81:33:2f:8b:5c:33:99:1c:61:68:
|
||||
1f:25:59:47:30:ae:e5:73:8e:38:c1:2f:d8:3a:7e:54:5e:cb:
|
||||
59:fd:21:98:c4:d6:39:df:02:dc:1e:8f:77:22:30:3f:5f:09:
|
||||
34:a5:c3:95:dd:38:14:37:58:8b:70:1e:79:38:a1:9e:69:73:
|
||||
8c:ce:6d:97:d6:ae:60:13:b2:14:d9:28:d9:ef:40:45:54:3a:
|
||||
f7:04:12:78:2e:9b:9b:b2:ab:71:f9:94:60:07:12:91:95:af:
|
||||
ac:5f:e5:ee:39:2f:72:98:62:3e:ca:fc:2a:e4:4b:3f:61:f5:
|
||||
c9:81:84:b0:aa:9d:07:d5:ce:ad:5c:5d:34:98:a2:7f:b4:a2:
|
||||
94:4d:aa:84:27:9b:e5:1e:38:88:b9:4c:e4:8a:cd:48:ae:5c:
|
||||
39:26:c5:26:72:f4:f9:ed:19:25:bf:db:57:13:cf:b6:ab:8a:
|
||||
e0:ae:0d:d4:53:d4:e6:3d:e3:02:3c:c8:ed:68:c6:13:a8:19:
|
||||
3f:63:75:52:c5:0f:5c:e3:15:90:b0:c9:b2:3e:be:45:c5:5e:
|
||||
7e:bb:76:55:81:d2:93:f0:9e:9f:01:02:6d:37:34:c4:eb:19:
|
||||
99:79:e6:77:eb:b3:73:4c:a7:62:aa:03:1f:37:ee:53:f5:c8:
|
||||
71:1f:53:9b
|
13
unittest/certunittest/certs/Test_CRL.crl
Normal file
13
unittest/certunittest/certs/Test_CRL.crl
Normal file
@ -0,0 +1,13 @@
|
||||
-----BEGIN X509 CRL-----
|
||||
MIIB3zCByDANBgkqhkiG9w0BAQQFADBvMQswCQYDVQQGEwJkZTEgMB4GA1UEChMX
|
||||
SW5zZWN1cmVUZXN0Q2VydGlmaWNhdGUxFzAVBgNVBAMTDkZvciBUZXN0cyBPbmx5
|
||||
MSUwIwYJKoZIhvcNAQkBFhZpbnNlY3VyZUB0ZXN0Lmluc2VjdXJlFw0wMTA4MTcx
|
||||
MTEyMDNaFw0wNjA4MTYxMTEyMDNaMCgwEgIBAxcNMDEwODE3MTExMDM5WjASAgEF
|
||||
Fw0wMTA4MTcxMTExNTlaMA0GCSqGSIb3DQEBBAUAA4IBAQB47lMVCKlPoBAgLway
|
||||
76eNRq1749jt/7g/Ouh06isNM66/CgzVL2xKSC3s2FX4xKg320niWI6Dvm4H3M6I
|
||||
7RvuoCvZBVpu1MA8z2No89g2UPWlSxUAvuvo2GOGRgo+8nc/84g8biLUxTSF8Vs4
|
||||
T1Hngo1qrfePM4ou1uu7LhRnR8tuIVoQT6W3RSlEsQRBRM3y+VkOPAf0GBGyl6WG
|
||||
WiymXHqsqis80WbX50tr859Cltqbu2yaFAX++IEBBDB7JoVi1blumgarqfXYkoUW
|
||||
n9d3F8qySNjsfhOV613fXpmfXFZ33uTFsLSoihP8f6+Cusx2rfuGap7jOPv7j7sj
|
||||
l2Y1
|
||||
-----END X509 CRL-----
|
BIN
unittest/certunittest/certs/User.crt
Normal file
BIN
unittest/certunittest/certs/User.crt
Normal file
Binary file not shown.
BIN
unittest/certunittest/certs/User.p12
Normal file
BIN
unittest/certunittest/certs/User.p12
Normal file
Binary file not shown.
26
unittest/certunittest/certs/User.pem
Normal file
26
unittest/certunittest/certs/User.pem
Normal file
@ -0,0 +1,26 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEYjCCA0qgAwIBAgIBAjANBgkqhkiG9w0BAQQFADBvMQswCQYDVQQGEwJkZTEg
|
||||
MB4GA1UEChMXSW5zZWN1cmVUZXN0Q2VydGlmaWNhdGUxFzAVBgNVBAMTDkZvciBU
|
||||
ZXN0cyBPbmx5MSUwIwYJKoZIhvcNAQkBFhZpbnNlY3VyZUB0ZXN0Lmluc2VjdXJl
|
||||
MB4XDTAxMDgxNzA4MzIzOFoXDTA2MDgxNjA4MzIzOFoweDELMAkGA1UEBhMCZGUx
|
||||
IDAeBgNVBAoTF0luc2VjdXJlVGVzdENlcnRpZmljYXRlMSAwHgYDVQQDExdJbnNl
|
||||
Y3VyZSBVc2VyIFRlc3QgQ2VydDElMCMGCSqGSIb3DQEJARYWaW5zZWN1cmVAdGVz
|
||||
dC5pbnNlY3VyZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArCM8+V7VH46Y
|
||||
+bMtgOaqFc8vCSBpSeL5hnHN3uwEH8/OqwKaO9hMP15lFpzEJOIPMVtOSLCg4dJy
|
||||
+eS3azL3/B+4qDVqbCgKSXDMKhBDKKw0TvfhN4tgfmvy0rpgMHYApfyRdewnvKgV
|
||||
YkI+sDwupmZJo87kuvPM2JzbV/DNAyMCAwEAAaOCAYIwggF+MAsGA1UdDwQEAwIE
|
||||
8DAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwHQYDVR0OBBYEFIiefvcp
|
||||
cZ17KA82Gq5tANOd4arbMIGZBgNVHSMEgZEwgY6AFL9TQ4J40J7DgOUbZ8oFAN+5
|
||||
SIOloXOkcTBvMQswCQYDVQQGEwJkZTEgMB4GA1UEChMXSW5zZWN1cmVUZXN0Q2Vy
|
||||
dGlmaWNhdGUxFzAVBgNVBAMTDkZvciBUZXN0cyBPbmx5MSUwIwYJKoZIhvcNAQkB
|
||||
FhZpbnNlY3VyZUB0ZXN0Lmluc2VjdXJlggEAMCEGA1UdEQQaMBiBFmluc2VjdXJl
|
||||
QHRlc3QuaW5zZWN1cmUwIQYDVR0SBBowGIEWaW5zZWN1cmVAdGVzdC5pbnNlY3Vy
|
||||
ZTARBglghkgBhvhCAQEEBAMCBaAwPAYJYIZIAYb4QgENBC8WLVRoaXMgY2VydGlm
|
||||
aWNhdGUgd2FzIGlzc3VlZCBmb3IgdGVzdGluZyBvbmx5ITANBgkqhkiG9w0BAQQF
|
||||
AAOCAQEAeRBEcR/xp4pLH3VbQmTbZEGjVEBDxNAapsdIDrKB1ecA3JMhZDjweKc4
|
||||
MG5M+FQ5hcCT8kSi+6bL15BJRyyMB4727NRSC1i/2VkZmUGhhk3AR9UjsvrCC00D
|
||||
gPuHdQPrIxl9+CK26ypATizb5VapzmoBc2B/dWeVh+KJbEkgTudfFj98Dqn8kiUn
|
||||
bqbC3OMPa1uiez8oer8h6OAyOinmx0atjTqS5SOLI+2+p1lpMHMhodn4jgmd8Pms
|
||||
KQ0jMyA0ZQ1tozQXOw9VpRYegsm8LMq0emdfybxpwGbrCIIk7BXjBIDrhYbnb3GK
|
||||
blykzt4bqOeDtJuTgyBOS3Ldxqgfzg==
|
||||
-----END CERTIFICATE-----
|
60
unittest/certunittest/certs/User.txt
Normal file
60
unittest/certunittest/certs/User.txt
Normal file
@ -0,0 +1,60 @@
|
||||
Certificate:
|
||||
Data:
|
||||
Version: 3 (0x2)
|
||||
Serial Number: 2 (0x2)
|
||||
Signature Algorithm: md5WithRSAEncryption
|
||||
Issuer: C=de, O=InsecureTestCertificate, CN=For Tests Only/Email=insecure@test.insecure
|
||||
Validity
|
||||
Not Before: Aug 17 08:32:38 2001 GMT
|
||||
Not After : Aug 16 08:32:38 2006 GMT
|
||||
Subject: C=de, O=InsecureTestCertificate, CN=Insecure User Test Cert/Email=insecure@test.insecure
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: rsaEncryption
|
||||
RSA Public Key: (1024 bit)
|
||||
Modulus (1024 bit):
|
||||
00:ac:23:3c:f9:5e:d5:1f:8e:98:f9:b3:2d:80:e6:
|
||||
aa:15:cf:2f:09:20:69:49:e2:f9:86:71:cd:de:ec:
|
||||
04:1f:cf:ce:ab:02:9a:3b:d8:4c:3f:5e:65:16:9c:
|
||||
c4:24:e2:0f:31:5b:4e:48:b0:a0:e1:d2:72:f9:e4:
|
||||
b7:6b:32:f7:fc:1f:b8:a8:35:6a:6c:28:0a:49:70:
|
||||
cc:2a:10:43:28:ac:34:4e:f7:e1:37:8b:60:7e:6b:
|
||||
f2:d2:ba:60:30:76:00:a5:fc:91:75:ec:27:bc:a8:
|
||||
15:62:42:3e:b0:3c:2e:a6:66:49:a3:ce:e4:ba:f3:
|
||||
cc:d8:9c:db:57:f0:cd:03:23
|
||||
Exponent: 65537 (0x10001)
|
||||
X509v3 extensions:
|
||||
X509v3 Key Usage:
|
||||
Digital Signature, Non Repudiation, Key Encipherment, Data Encipherment
|
||||
X509v3 Extended Key Usage:
|
||||
TLS Web Client Authentication, E-mail Protection
|
||||
X509v3 Subject Key Identifier:
|
||||
88:9E:7E:F7:29:71:9D:7B:28:0F:36:1A:AE:6D:00:D3:9D:E1:AA:DB
|
||||
X509v3 Authority Key Identifier:
|
||||
keyid:BF:53:43:82:78:D0:9E:C3:80:E5:1B:67:CA:05:00:DF:B9:48:83:A5
|
||||
DirName:/C=de/O=InsecureTestCertificate/CN=For Tests Only/Email=insecure@test.insecure
|
||||
serial:00
|
||||
|
||||
X509v3 Subject Alternative Name:
|
||||
email:insecure@test.insecure
|
||||
X509v3 Issuer Alternative Name:
|
||||
email:insecure@test.insecure
|
||||
Netscape Cert Type:
|
||||
SSL Client, S/MIME
|
||||
Netscape Comment:
|
||||
This certificate was issued for testing only!
|
||||
Signature Algorithm: md5WithRSAEncryption
|
||||
79:10:44:71:1f:f1:a7:8a:4b:1f:75:5b:42:64:db:64:41:a3:
|
||||
54:40:43:c4:d0:1a:a6:c7:48:0e:b2:81:d5:e7:00:dc:93:21:
|
||||
64:38:f0:78:a7:38:30:6e:4c:f8:54:39:85:c0:93:f2:44:a2:
|
||||
fb:a6:cb:d7:90:49:47:2c:8c:07:8e:f6:ec:d4:52:0b:58:bf:
|
||||
d9:59:19:99:41:a1:86:4d:c0:47:d5:23:b2:fa:c2:0b:4d:03:
|
||||
80:fb:87:75:03:eb:23:19:7d:f8:22:b6:eb:2a:40:4e:2c:db:
|
||||
e5:56:a9:ce:6a:01:73:60:7f:75:67:95:87:e2:89:6c:49:20:
|
||||
4e:e7:5f:16:3f:7c:0e:a9:fc:92:25:27:6e:a6:c2:dc:e3:0f:
|
||||
6b:5b:a2:7b:3f:28:7a:bf:21:e8:e0:32:3a:29:e6:c7:46:ad:
|
||||
8d:3a:92:e5:23:8b:23:ed:be:a7:59:69:30:73:21:a1:d9:f8:
|
||||
8e:09:9d:f0:f9:ac:29:0d:23:33:20:34:65:0d:6d:a3:34:17:
|
||||
3b:0f:55:a5:16:1e:82:c9:bc:2c:ca:b4:7a:67:5f:c9:bc:69:
|
||||
c0:66:eb:08:82:24:ec:15:e3:04:80:eb:85:86:e7:6f:71:8a:
|
||||
6e:5c:a4:ce:de:1b:a8:e7:83:b4:9b:93:83:20:4e:4b:72:dd:
|
||||
c6:a8:1f:ce
|
15
unittest/certunittest/certs/Userkey.pem
Normal file
15
unittest/certunittest/certs/Userkey.pem
Normal file
@ -0,0 +1,15 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIICWwIBAAKBgQCsIzz5XtUfjpj5sy2A5qoVzy8JIGlJ4vmGcc3e7AQfz86rApo7
|
||||
2Ew/XmUWnMQk4g8xW05IsKDh0nL55LdrMvf8H7ioNWpsKApJcMwqEEMorDRO9+E3
|
||||
i2B+a/LSumAwdgCl/JF17Ce8qBViQj6wPC6mZkmjzuS688zYnNtX8M0DIwIDAQAB
|
||||
AoGAUmPrY1BIofoWri1csj21Wwr3cF7bBkplNDx0VSaSMse8G437VHmKxSnhKJmQ
|
||||
KDcrHmydY51m469e6MzYHa8fkfwFiqRhBE7rSw9n0K1sqzU6fJYXgpxdV+GOQcKw
|
||||
v+Lu+o6ej4BGQ7woJZXOiC3GDiWu3rC91UNC9eC74yCGuAECQQDhd36m/M9Bjw+C
|
||||
pNi55oFGdOCaiL+OT9I3Gt2+7MIo4d2YGvhl8Nr3PC6bEq1DzoWiaE+qxE3JFZdp
|
||||
J2+F0fCjAkEAw3LsfrqVZH5HW57csAapmhA+oiCTP3cDDObQ3pKNi3sfYKq8u+aK
|
||||
93XAbw3+sPaWlQbVnQF+2fNxOZB9TqFLgQJALVw+Fdhs1hKzGySRGa1/Oq6O9Wgn
|
||||
qbjzYPS9wgid812lmFFswg2X7/+inL5AL5EgH5F+3atKvvbiFFzDuheHowJAHwiS
|
||||
cJTjv68lWXDiDbkhGOtXZprRhpQ5EcVciNqwSuNj2g+CJDu4+Q3jXj7Un/indEY/
|
||||
iMyB/c1fvwooO2H1AQJAEmlUKcfUMdMKbsnqcBfUcge3POdb06pXDpZ/+X0g2OBE
|
||||
1fTIQgPgP6y+Ucp/WCW6l2pEJtt26KI5kEp31WSbHA==
|
||||
-----END RSA PRIVATE KEY-----
|
BIN
unittest/certunittest/certs/Userrev.crt
Normal file
BIN
unittest/certunittest/certs/Userrev.crt
Normal file
Binary file not shown.
BIN
unittest/certunittest/certs/Userrev.p12
Normal file
BIN
unittest/certunittest/certs/Userrev.p12
Normal file
Binary file not shown.
26
unittest/certunittest/certs/Userrev.pem
Normal file
26
unittest/certunittest/certs/Userrev.pem
Normal file
@ -0,0 +1,26 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEZTCCA02gAwIBAgIBAzANBgkqhkiG9w0BAQQFADBvMQswCQYDVQQGEwJkZTEg
|
||||
MB4GA1UEChMXSW5zZWN1cmVUZXN0Q2VydGlmaWNhdGUxFzAVBgNVBAMTDkZvciBU
|
||||
ZXN0cyBPbmx5MSUwIwYJKoZIhvcNAQkBFhZpbnNlY3VyZUB0ZXN0Lmluc2VjdXJl
|
||||
MB4XDTAxMDgxNzA4MzYzOFoXDTA2MDgxNjA4MzYzOFowezELMAkGA1UEBhMCZGUx
|
||||
IDAeBgNVBAoTF0luc2VjdXJlVGVzdENlcnRpZmljYXRlMSMwIQYDVQQDExpJbnNl
|
||||
Y3VyZSByZXZva2VkIHVzZXIgY2VydDElMCMGCSqGSIb3DQEJARYWaW5zZWN1cmVA
|
||||
dGVzdC5pbnNlY3VyZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAs/qGIhsu
|
||||
mDnsw4E2G6tTUvQ3sCjxInaw4P06LB8Yhnu6zP4D0PltKN2CIDUVefJjXTFcMBRt
|
||||
54UZ+d398XhHK1qAI4F+m4ynkjoc0KRRgw8M50qNyy42MBY7z3dfF+aMQ7RNddwT
|
||||
v2pV30zqjYR9D213MKn6phcU1dFCMYYJUXcCAwEAAaOCAYIwggF+MAsGA1UdDwQE
|
||||
AwIE8DAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwHQYDVR0OBBYEFBw0
|
||||
A/ujVFIdP4lqGXN2TpQbGyiiMIGZBgNVHSMEgZEwgY6AFL9TQ4J40J7DgOUbZ8oF
|
||||
AN+5SIOloXOkcTBvMQswCQYDVQQGEwJkZTEgMB4GA1UEChMXSW5zZWN1cmVUZXN0
|
||||
Q2VydGlmaWNhdGUxFzAVBgNVBAMTDkZvciBUZXN0cyBPbmx5MSUwIwYJKoZIhvcN
|
||||
AQkBFhZpbnNlY3VyZUB0ZXN0Lmluc2VjdXJlggEAMCEGA1UdEQQaMBiBFmluc2Vj
|
||||
dXJlQHRlc3QuaW5zZWN1cmUwIQYDVR0SBBowGIEWaW5zZWN1cmVAdGVzdC5pbnNl
|
||||
Y3VyZTARBglghkgBhvhCAQEEBAMCBaAwPAYJYIZIAYb4QgENBC8WLVRoaXMgY2Vy
|
||||
dGlmaWNhdGUgd2FzIGlzc3VlZCBmb3IgdGVzdGluZyBvbmx5ITANBgkqhkiG9w0B
|
||||
AQQFAAOCAQEAEMLedo94+L7jVQT3KytdhDOaQDrVVd+rMEsHmvqobBNfyJ7ZrXQf
|
||||
3DerytOzckyrbw49E5mmr2iLVg1Pjsn1eimoe0bzv2uDsstLiEGGktji2b4u60QB
|
||||
wwYJZGqUbKjSX0Rao38RkKKd2YjQquvPMD+IE/gdG3Cg1c3XrR9qv0drulesMzYS
|
||||
yOvSbDhaOkc5QFGEM6oYo9WgbVEKFMufCXAdxQlJkm2VOEgs0azN9aa71X8ul3tN
|
||||
d9Vcp3URcPwNcrrnCgMsP1kLHFaIVilXTA4iEkHmqhxGtAcT2C7o2fPiLSCur06k
|
||||
X5iC9aE0S42ZW/MH03L98Qu1YWhdQHFdLA==
|
||||
-----END CERTIFICATE-----
|
60
unittest/certunittest/certs/Userrev.txt
Normal file
60
unittest/certunittest/certs/Userrev.txt
Normal file
@ -0,0 +1,60 @@
|
||||
Certificate:
|
||||
Data:
|
||||
Version: 3 (0x2)
|
||||
Serial Number: 3 (0x3)
|
||||
Signature Algorithm: md5WithRSAEncryption
|
||||
Issuer: C=de, O=InsecureTestCertificate, CN=For Tests Only/Email=insecure@test.insecure
|
||||
Validity
|
||||
Not Before: Aug 17 08:36:38 2001 GMT
|
||||
Not After : Aug 16 08:36:38 2006 GMT
|
||||
Subject: C=de, O=InsecureTestCertificate, CN=Insecure revoked user cert/Email=insecure@test.insecure
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: rsaEncryption
|
||||
RSA Public Key: (1024 bit)
|
||||
Modulus (1024 bit):
|
||||
00:b3:fa:86:22:1b:2e:98:39:ec:c3:81:36:1b:ab:
|
||||
53:52:f4:37:b0:28:f1:22:76:b0:e0:fd:3a:2c:1f:
|
||||
18:86:7b:ba:cc:fe:03:d0:f9:6d:28:dd:82:20:35:
|
||||
15:79:f2:63:5d:31:5c:30:14:6d:e7:85:19:f9:dd:
|
||||
fd:f1:78:47:2b:5a:80:23:81:7e:9b:8c:a7:92:3a:
|
||||
1c:d0:a4:51:83:0f:0c:e7:4a:8d:cb:2e:36:30:16:
|
||||
3b:cf:77:5f:17:e6:8c:43:b4:4d:75:dc:13:bf:6a:
|
||||
55:df:4c:ea:8d:84:7d:0f:6d:77:30:a9:fa:a6:17:
|
||||
14:d5:d1:42:31:86:09:51:77
|
||||
Exponent: 65537 (0x10001)
|
||||
X509v3 extensions:
|
||||
X509v3 Key Usage:
|
||||
Digital Signature, Non Repudiation, Key Encipherment, Data Encipherment
|
||||
X509v3 Extended Key Usage:
|
||||
TLS Web Client Authentication, E-mail Protection
|
||||
X509v3 Subject Key Identifier:
|
||||
1C:34:03:FB:A3:54:52:1D:3F:89:6A:19:73:76:4E:94:1B:1B:28:A2
|
||||
X509v3 Authority Key Identifier:
|
||||
keyid:BF:53:43:82:78:D0:9E:C3:80:E5:1B:67:CA:05:00:DF:B9:48:83:A5
|
||||
DirName:/C=de/O=InsecureTestCertificate/CN=For Tests Only/Email=insecure@test.insecure
|
||||
serial:00
|
||||
|
||||
X509v3 Subject Alternative Name:
|
||||
email:insecure@test.insecure
|
||||
X509v3 Issuer Alternative Name:
|
||||
email:insecure@test.insecure
|
||||
Netscape Cert Type:
|
||||
SSL Client, S/MIME
|
||||
Netscape Comment:
|
||||
This certificate was issued for testing only!
|
||||
Signature Algorithm: md5WithRSAEncryption
|
||||
10:c2:de:76:8f:78:f8:be:e3:55:04:f7:2b:2b:5d:84:33:9a:
|
||||
40:3a:d5:55:df:ab:30:4b:07:9a:fa:a8:6c:13:5f:c8:9e:d9:
|
||||
ad:74:1f:dc:37:ab:ca:d3:b3:72:4c:ab:6f:0e:3d:13:99:a6:
|
||||
af:68:8b:56:0d:4f:8e:c9:f5:7a:29:a8:7b:46:f3:bf:6b:83:
|
||||
b2:cb:4b:88:41:86:92:d8:e2:d9:be:2e:eb:44:01:c3:06:09:
|
||||
64:6a:94:6c:a8:d2:5f:44:5a:a3:7f:11:90:a2:9d:d9:88:d0:
|
||||
aa:eb:cf:30:3f:88:13:f8:1d:1b:70:a0:d5:cd:d7:ad:1f:6a:
|
||||
bf:47:6b:ba:57:ac:33:36:12:c8:eb:d2:6c:38:5a:3a:47:39:
|
||||
40:51:84:33:aa:18:a3:d5:a0:6d:51:0a:14:cb:9f:09:70:1d:
|
||||
c5:09:49:92:6d:95:38:48:2c:d1:ac:cd:f5:a6:bb:d5:7f:2e:
|
||||
97:7b:4d:77:d5:5c:a7:75:11:70:fc:0d:72:ba:e7:0a:03:2c:
|
||||
3f:59:0b:1c:56:88:56:29:57:4c:0e:22:12:41:e6:aa:1c:46:
|
||||
b4:07:13:d8:2e:e8:d9:f3:e2:2d:20:ae:af:4e:a4:5f:98:82:
|
||||
f5:a1:34:4b:8d:99:5b:f3:07:d3:72:fd:f1:0b:b5:61:68:5d:
|
||||
40:71:5d:2c
|
15
unittest/certunittest/certs/Userrevkey.pem
Normal file
15
unittest/certunittest/certs/Userrevkey.pem
Normal file
@ -0,0 +1,15 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIICXgIBAAKBgQCz+oYiGy6YOezDgTYbq1NS9DewKPEidrDg/TosHxiGe7rM/gPQ
|
||||
+W0o3YIgNRV58mNdMVwwFG3nhRn53f3xeEcrWoAjgX6bjKeSOhzQpFGDDwznSo3L
|
||||
LjYwFjvPd18X5oxDtE113BO/alXfTOqNhH0PbXcwqfqmFxTV0UIxhglRdwIDAQAB
|
||||
AoGBAKum71EODbV/4XFhBeMD1teSNp6bncfZ3b7npRi5m6F/1lx2k9s2WMcV5Gql
|
||||
VlNVOzGBx0PP6DZcuraV5AHuTijP49eremn2YMAOQHbVD1W9D0xiIIoXnjl3+94/
|
||||
6sQFSA3ZIJTDfSRCqDkZEqpIh3h753zbLPlOJu1QnLiMb6uJAkEA46Uh6jHWHdgY
|
||||
Q52L5qcVtE9xTt0qt1WUAj91sY1MUDI90FW8Cy/HjGqPgRVPgl3GF/hG6lyWK0oZ
|
||||
uIAj8dt+uwJBAMpldlQidgwbHhv2VFGUi3jv9GDCWQ9M9dieGqz5oD0PxJeq6oJX
|
||||
CYQVLb1PiZwI1HAWzVR7yJYSmX+UaQOZ0nUCQQC3hGtX4n9LpebBs6OR+UbNCnI8
|
||||
8p06GRptyXz2+wL3b9lXN5aVqhoDf/BaTrS/UxucPUHmM2e4VE9x5pOTqbB7AkBb
|
||||
o27dDzFVr92FGZX5zgEMQ9DpEnXSeK0DZCp90RRdMUt4xFkjpJbZZ+Fqyp1quZC+
|
||||
I4TaUKV0VX2Mhzy49aeVAkEAyEJCFOKDZhfrCsa+spUS1f2IAjno7KTOM/c6QaT5
|
||||
5QmQxVxBA/eq/78sXAsti4ECub6lVL2nffA8g7kDdkNJSA==
|
||||
-----END RSA PRIVATE KEY-----
|
27
unittest/certunittest/certs/crl.txt
Normal file
27
unittest/certunittest/certs/crl.txt
Normal file
@ -0,0 +1,27 @@
|
||||
Certificate Revocation List (CRL):
|
||||
Version 1 (0x0)
|
||||
Signature Algorithm: md5WithRSAEncryption
|
||||
Issuer: /C=de/O=InsecureTestCertificate/CN=For Tests Only/Email=insecure@test.insecure
|
||||
Last Update: Aug 17 11:12:03 2001 GMT
|
||||
Next Update: Aug 16 11:12:03 2006 GMT
|
||||
Revoked Certificates:
|
||||
Serial Number: 03
|
||||
Revocation Date: Aug 17 11:10:39 2001 GMT
|
||||
Serial Number: 05
|
||||
Revocation Date: Aug 17 11:11:59 2001 GMT
|
||||
Signature Algorithm: md5WithRSAEncryption
|
||||
78:ee:53:15:08:a9:4f:a0:10:20:2f:06:b2:ef:a7:8d:46:ad:
|
||||
7b:e3:d8:ed:ff:b8:3f:3a:e8:74:ea:2b:0d:33:ae:bf:0a:0c:
|
||||
d5:2f:6c:4a:48:2d:ec:d8:55:f8:c4:a8:37:db:49:e2:58:8e:
|
||||
83:be:6e:07:dc:ce:88:ed:1b:ee:a0:2b:d9:05:5a:6e:d4:c0:
|
||||
3c:cf:63:68:f3:d8:36:50:f5:a5:4b:15:00:be:eb:e8:d8:63:
|
||||
86:46:0a:3e:f2:77:3f:f3:88:3c:6e:22:d4:c5:34:85:f1:5b:
|
||||
38:4f:51:e7:82:8d:6a:ad:f7:8f:33:8a:2e:d6:eb:bb:2e:14:
|
||||
67:47:cb:6e:21:5a:10:4f:a5:b7:45:29:44:b1:04:41:44:cd:
|
||||
f2:f9:59:0e:3c:07:f4:18:11:b2:97:a5:86:5a:2c:a6:5c:7a:
|
||||
ac:aa:2b:3c:d1:66:d7:e7:4b:6b:f3:9f:42:96:da:9b:bb:6c:
|
||||
9a:14:05:fe:f8:81:01:04:30:7b:26:85:62:d5:b9:6e:9a:06:
|
||||
ab:a9:f5:d8:92:85:16:9f:d7:77:17:ca:b2:48:d8:ec:7e:13:
|
||||
95:eb:5d:df:5e:99:9f:5c:56:77:de:e4:c5:b0:b4:a8:8a:13:
|
||||
fc:7f:af:82:ba:cc:76:ad:fb:86:6a:9e:e3:38:fb:fb:8f:bb:
|
||||
23:97:66:35
|
312
unittest/certunittest/certunittest.cpp
Normal file
312
unittest/certunittest/certunittest.cpp
Normal file
@ -0,0 +1,312 @@
|
||||
/**
|
||||
* Copyright (C) 2004-2006 Brad Hards <bradh@frogmouth.net>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#include "certunittest.h"
|
||||
|
||||
void CertUnitTest::initTestCase()
|
||||
{
|
||||
m_init = new QCA::Initializer;
|
||||
#include "../fixpaths.include"
|
||||
}
|
||||
|
||||
void CertUnitTest::cleanupTestCase()
|
||||
{
|
||||
delete m_init;
|
||||
}
|
||||
|
||||
void CertUnitTest::CAcertstest()
|
||||
{
|
||||
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/RootCAcert.pem", &resultca1, provider);
|
||||
|
||||
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 );
|
||||
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 );
|
||||
|
||||
// no policies on this cert
|
||||
QCOMPARE( ca1.policies().count(), 0 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CertUnitTest::checkClientCerts()
|
||||
{
|
||||
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 resultClient1;
|
||||
QCA::Certificate client1 = QCA::Certificate::fromPEMFile( "certs/User.pem", &resultClient1, provider);
|
||||
QCOMPARE( resultClient1, QCA::ConvertGood );
|
||||
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 );
|
||||
QCOMPARE( client1.constraints().contains(QCA::DataEncipherment), (QBool)true );
|
||||
QCOMPARE( client1.constraints().contains(QCA::KeyAgreement), (QBool)false );
|
||||
QCOMPARE( client1.constraints().contains(QCA::KeyCertificateSign), (QBool)false );
|
||||
QCOMPARE( client1.constraints().contains(QCA::CRLSign), (QBool)false );
|
||||
QCOMPARE( client1.constraints().contains(QCA::EncipherOnly), (QBool)false );
|
||||
QCOMPARE( client1.constraints().contains(QCA::DecipherOnly), (QBool)false );
|
||||
QCOMPARE( client1.constraints().contains(QCA::ServerAuth), (QBool)false );
|
||||
QCOMPARE( client1.constraints().contains(QCA::ClientAuth), (QBool)true );
|
||||
QCOMPARE( client1.constraints().contains(QCA::CodeSigning), (QBool)false );
|
||||
QCOMPARE( client1.constraints().contains(QCA::EmailProtection), (QBool)true );
|
||||
QCOMPARE( client1.constraints().contains(QCA::IPSecEndSystem), (QBool)false );
|
||||
QCOMPARE( client1.constraints().contains(QCA::IPSecTunnel), (QBool)false);
|
||||
QCOMPARE( client1.constraints().contains(QCA::IPSecUser), (QBool)false );
|
||||
QCOMPARE( client1.constraints().contains(QCA::TimeStamping), (QBool)false );
|
||||
QCOMPARE( client1.constraints().contains(QCA::OCSPSigning), (QBool)false );
|
||||
|
||||
// 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 );
|
||||
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("889E7EF729719D7B280F361AAE6D00D39DE1AADB").toByteArray();
|
||||
QCOMPARE( client1.subjectKeyId(), subjectKeyID );
|
||||
QEXPECT_FAIL("", "No idea yet", Continue);
|
||||
QCOMPARE( QCA::Hex().arrayToString(client1.issuerKeyId()), QString("BF53438278D09EC380E51B67CA0500DFB94883A5") );
|
||||
|
||||
QCA::PublicKey pubkey1 = client1.subjectPublicKey();
|
||||
QCOMPARE( pubkey1.isNull(), false );
|
||||
QCOMPARE( pubkey1.isRSA(), true );
|
||||
QCOMPARE( pubkey1.isDSA(), false );
|
||||
QCOMPARE( pubkey1.isDH(), false );
|
||||
QCOMPARE( pubkey1.isPublic(), true );
|
||||
QCOMPARE( pubkey1.isPrivate(), false );
|
||||
QCOMPARE( pubkey1.bitSize(), 1024 );
|
||||
|
||||
QCOMPARE( client1.pathLimit(), 0 );
|
||||
|
||||
QEXPECT_FAIL("", "No idea yet", Continue);
|
||||
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 );
|
||||
trusted.addCertificate( ca1 );
|
||||
QCOMPARE( client1.validate( trusted, untrusted ), QCA::ValidityGood );
|
||||
QCOMPARE( client1.validate( trusted, untrusted, QCA::UsageAny ), QCA::ValidityGood );
|
||||
QCOMPARE( client1.validate( trusted, untrusted, QCA::UsageTLSServer ), QCA::ErrorInvalidPurpose );
|
||||
QCOMPARE( client1.validate( trusted, untrusted, QCA::UsageTLSClient ), QCA::ValidityGood );
|
||||
QCOMPARE( client1.validate( trusted, untrusted, QCA::UsageCodeSigning ), QCA::ErrorInvalidPurpose );
|
||||
QCOMPARE( client1.validate( trusted, untrusted, QCA::UsageTimeStamping ), QCA::ErrorInvalidPurpose );
|
||||
QCOMPARE( client1.validate( trusted, untrusted, QCA::UsageEmailProtection ), QCA::ValidityGood );
|
||||
QCOMPARE( client1.validate( trusted, untrusted, QCA::UsageCRLSigning ), QCA::ErrorInvalidPurpose );
|
||||
|
||||
QSecureArray derClient1 = client1.toDER();
|
||||
QCOMPARE( derClient1.isEmpty(), false );
|
||||
QCA::Certificate fromDer1 = QCA::Certificate::fromDER( derClient1, &resultClient1, provider );
|
||||
QCOMPARE( resultClient1, QCA::ConvertGood );
|
||||
QEXPECT_FAIL("", "No idea yet", Continue);
|
||||
QCOMPARE( fromDer1 == client1, true );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CertUnitTest::checkServerCerts()
|
||||
{
|
||||
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 resultServer1;
|
||||
QCA::Certificate server1 = QCA::Certificate::fromPEMFile( "certs/Server.pem", &resultServer1, provider);
|
||||
QCOMPARE( resultServer1, QCA::ConvertGood );
|
||||
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 );
|
||||
QCOMPARE( server1.constraints().contains(QCA::DataEncipherment), (QBool)false );
|
||||
QCOMPARE( server1.constraints().contains(QCA::KeyAgreement), (QBool)true );
|
||||
QCOMPARE( server1.constraints().contains(QCA::KeyCertificateSign), (QBool)false );
|
||||
QCOMPARE( server1.constraints().contains(QCA::CRLSign), (QBool)false );
|
||||
QCOMPARE( server1.constraints().contains(QCA::EncipherOnly), (QBool)false );
|
||||
QCOMPARE( server1.constraints().contains(QCA::DecipherOnly), (QBool)false );
|
||||
QCOMPARE( server1.constraints().contains(QCA::ServerAuth), (QBool)true );
|
||||
QCOMPARE( server1.constraints().contains(QCA::ClientAuth), (QBool)false );
|
||||
QCOMPARE( server1.constraints().contains(QCA::CodeSigning), (QBool)false );
|
||||
QCOMPARE( server1.constraints().contains(QCA::EmailProtection), (QBool)false );
|
||||
QCOMPARE( server1.constraints().contains(QCA::IPSecEndSystem), (QBool)false );
|
||||
QCOMPARE( server1.constraints().contains(QCA::IPSecTunnel), (QBool)false);
|
||||
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 );
|
||||
QEXPECT_FAIL("", "No idea yet", Continue);
|
||||
QByteArray authorityKeyID = QCA::Hex().stringToArray("BF53438278D09EC380E51B67CA0500DFB94883A5").toByteArray();
|
||||
QCOMPARE( server1.issuerKeyId(), authorityKeyID );
|
||||
|
||||
QCA::PublicKey pubkey1 = server1.subjectPublicKey();
|
||||
QCOMPARE( pubkey1.isNull(), false );
|
||||
QCOMPARE( pubkey1.isRSA(), true );
|
||||
QCOMPARE( pubkey1.isDSA(), false );
|
||||
QCOMPARE( pubkey1.isDH(), false );
|
||||
QCOMPARE( pubkey1.isPublic(), true );
|
||||
QCOMPARE( pubkey1.isPrivate(), false );
|
||||
QCOMPARE( pubkey1.bitSize(), 1024 );
|
||||
|
||||
QCOMPARE( server1.pathLimit(), 0 );
|
||||
|
||||
QEXPECT_FAIL("", "No idea yet", Continue);
|
||||
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::ValidityGood );
|
||||
QCOMPARE( server1.validate( trusted, untrusted, QCA::UsageAny ), QCA::ValidityGood );
|
||||
QCOMPARE( server1.validate( trusted, untrusted, QCA::UsageTLSServer ), QCA::ValidityGood);
|
||||
QCOMPARE( server1.validate( trusted, untrusted, QCA::UsageTLSClient ), QCA::ErrorInvalidPurpose );
|
||||
QCOMPARE( server1.validate( trusted, untrusted, QCA::UsageCodeSigning ), QCA::ErrorInvalidPurpose );
|
||||
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 );
|
||||
QCOMPARE( resultServer1, QCA::ConvertGood );
|
||||
QEXPECT_FAIL("", "No idea yet", Continue);
|
||||
QCOMPARE( fromDer1 == server1, true );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CertUnitTest::checkSystemStore()
|
||||
{
|
||||
QCOMPARE( QCA::haveSystemStore(), true );
|
||||
|
||||
if ( QCA::haveSystemStore() && QCA::isSupported("cert") ) {
|
||||
QCA::CertificateCollection collection1;
|
||||
collection1 = QCA::systemStore();
|
||||
}
|
||||
}
|
||||
|
||||
QTEST_MAIN(CertUnitTest)
|
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* Copyright (C) 2004-2005 Brad Hards <bradh@frogmouth.net>
|
||||
* Copyright (C) 2004-2006 Brad Hards <bradh@frogmouth.net>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
@ -25,20 +25,22 @@
|
||||
#ifndef CERTUNITTEST_H
|
||||
#define CERTUNITTEST_H
|
||||
|
||||
#include "tester.h"
|
||||
#include <QtCrypto>
|
||||
#include <QtTest/QtTest>
|
||||
|
||||
class CertUnitTest : public Tester
|
||||
class CertUnitTest : public QObject
|
||||
{
|
||||
public:
|
||||
CertUnitTest();
|
||||
|
||||
public:
|
||||
void allTests();
|
||||
Q_OBJECT
|
||||
|
||||
private slots:
|
||||
void initTestCase();
|
||||
void checkSystemStore();
|
||||
void CAcertstest();
|
||||
void checkClientCerts();
|
||||
void checkServerCerts();
|
||||
void cleanupTestCase();
|
||||
private:
|
||||
void checkCAcerts(const QString &provider);
|
||||
void checkClientCerts(const QString &provider);
|
||||
void checkServerCerts(const QString &provider);
|
||||
QCA::Initializer* m_init;
|
||||
};
|
||||
|
||||
#endif
|
16
unittest/certunittest/certunittest.pro
Normal file
16
unittest/certunittest/certunittest.pro
Normal file
@ -0,0 +1,16 @@
|
||||
TEMPLATE = app
|
||||
TARGET = certunittest
|
||||
DEPENDPATH += .
|
||||
INCLUDEPATH += ../../include/QtCrypto
|
||||
LIBS += -L../../lib -lqca
|
||||
CONFIG += qtestlib thread console
|
||||
QT -= gui
|
||||
|
||||
# check target
|
||||
QMAKE_EXTRA_TARGETS = check
|
||||
check.depends = certunittest
|
||||
check.commands = ./certunittest
|
||||
|
||||
# Input
|
||||
HEADERS += certunittest.h
|
||||
SOURCES += certunittest.cpp
|
Loading…
x
Reference in New Issue
Block a user