4
0
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:
Brad Hards 2006-01-29 11:24:50 +00:00
parent 0421e0c4b2
commit a68a9ea320
32 changed files with 971 additions and 288 deletions

@ -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());
}
}

Binary file not shown.

@ -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-----

@ -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

@ -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

Binary file not shown.

@ -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-----

Binary file not shown.

Binary file not shown.

@ -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-----

@ -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

@ -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-----

Binary file not shown.

Binary file not shown.

@ -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-----

@ -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-----

@ -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

@ -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-----

Binary file not shown.

Binary file not shown.

@ -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-----

@ -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

@ -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-----

Binary file not shown.

Binary file not shown.

@ -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-----

@ -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

@ -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-----

@ -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

@ -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

@ -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