First public contribution.
2 * Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
4 * This component and the accompanying materials are made available
5 * under the terms of the License "Eclipse Public License v1.0"
6 * which accompanies this distribution, and is available
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
9 * Initial Contributors:
10 * Nokia Corporation - initial contribution.
19 #if !defined(__E32STD_H__)
23 #if !defined (__BADESCA_H__)
27 #include <x509certchain.h>
29 _LIT(KCorrectFile1, "correctchain.txt");
33 _LIT(KTWSSRoot, "thawteserverca.cer");
35 _LIT(KRSASSCA, "vsignss.cer");
36 _LIT(KRSASSCA_OLD, "rsassca_old.crt");
37 _LIT(KDashnet, "dashnet.crt");
38 _LIT(K3Do, "3do.crt");
40 _LIT(KVSignCA3, "verisignclass3primaryca.cer");
41 _LIT(KVSignServer3, "verisignserverclass3.crt");
42 _LIT(KLloyds, "lloyds.crt");
44 _LIT(KRoot, "CA3_root.crt");
45 _LIT(KCA2, "CA2.crt");
46 _LIT(KCA1, "CA1.crt");
49 _LIT(KCA1SameDN, "CA1_H_sameDN.crt");
50 _LIT(KCA2SameDN, "CA2_H_sameDN.crt");
51 _LIT(KExtra, "interclear.crt");
53 _LIT(KGSRoot, "globalsignroot.cer");
54 _LIT(KGSPC1, "globalsignprimaryclass1ca.cer");
55 _LIT(KGSC1, "globalsignclass1ca.cer");
56 _LIT(KGSWB, "willsglobalsign.crt");
60 _LIT(KFortezzaPAA1, "x22paa.crt");
61 _LIT(KFortezzaPCA1, "x22pca1.crt");
62 _LIT(KFortezzaCA1, "x22ca1.crt");
63 //user certs off this...
64 _LIT(KFortezzaCA1EE1, "rich1.crt");
65 _LIT(KFortezzaCA1EE2, "david1.crt");
66 _LIT(KFortezzaExpired, "expired.crt");
67 _LIT(KFortezzaFuture, "future.crt");
68 _LIT(KFortezzaNameMismatch, "nameMismatch.crt");
69 _LIT(KFortezzaInvalidSig, "invalidSig.crt");
70 //next one just tests CRL-related errors, so should validate OK
71 _LIT(KFortezzaKeyCompromise, "KeyCompromise.crt");
72 _LIT(KFortezzaBadSubjName1, "BadSubjName1.crt");
73 _LIT(KFortezzaBadSubjName2, "BadSubjName2.crt");
74 _LIT(KFortezzaInvalidConstraints, "InvalidConstraints.crt");
75 //other sub-hierachies
76 _LIT(KFortezzaTestCA2, "testCA2.crt");
77 _LIT(KFortezzaTestSubCA2, "testSubCA.crt");
78 _LIT(KFortezzaPathLen, "pathLen.crt");
79 _LIT(KFortezzaBadCA1, "BadCA1.crt");
80 _LIT(KFortezzaInvalidCAUser1, "InvalidCAUser1.crt");
81 _LIT(KFortezzaBadCA2, "BadCA2.crt");
82 _LIT(KFortezzaInvalidCAUser2, "InvalidCAUser2.crt");
84 _LIT(KFortezzaPAA2, "rn_paa.crt");
85 _LIT(KFortezzaPCA2, "rn_pca.crt");
86 _LIT(KFortezzaCA2, "rn_ca.crt");
87 _LIT(KFortezzaCA2EE1, "rn_user1.crt");
88 _LIT(KFortezzaCA2BadAltName, "rn_BadAltName.crt");
89 _LIT(KFortezzaCA2BadPolicy, "rn_BadPolicy.crt");
92 _LIT(KMedRootCA, "1A.cer");
93 _LIT(KMedCA1, "24.cer");
94 _LIT(KMedCA1EE1, "11C5.cer");
95 _LIT(KMedCA1EE2, "139F.cer");
98 _LIT(KFortezzaX22RNCrossCert, "rn_cross.crt");
100 //FINEID certificates
101 _LIT(KFINEIDCitizenCA, "citizen-ca.crt");
102 _LIT(KFINEIDLipponenSign, "lipponen-sign.crt");
103 _LIT(KFINEIDLipponenEncrypt, "lipponen-encrypt.crt");
104 _LIT(KFINEIDTestCA3, "finsign-test3-ca.crt");
105 _LIT(KFINEIDHelsinkiSign, "helsinki-sign.crt");
106 _LIT(KFINEIDHelsinkiEncrypt, "helsinki-encrypt.crt");
109 _LIT(KApacheRSARoot, "ca-rsa.crt");
110 _LIT(KApacheRSAServer, "rsa.crt");
111 _LIT(KApacheDSARoot, "ca-dsa.crt");
112 _LIT(KApacheDSAServer, "dsa.crt");
115 _LIT(KX22Policy, "2.16.840.1.101.2.1.11");
116 _LIT(KRNPolicy, "2.16.840.1.101.2.1.11.2");
117 //_LIT(KExtraBogusPolicy, "2.16.840.1.101.2.1.11.4");
118 _LIT(KExtraBogusPolicy, "bogus!!");
120 class CTestChain : public CBase
125 virtual void ConstructL();
126 CDesCArray* iServerCerts;
127 CDesCArray* iRootCerts;
128 CDesCArray* iExtraCerts;
131 class CTestChainBuild : public CTestChain
134 static CTestChainBuild* NewL();
135 static CTestChainBuild* NewLC();
137 HBufC* iCorrectChain;
140 class CTestChainValidate : public CTestChain
143 static CTestChainValidate* NewL();
144 static CTestChainValidate* NewLC();
146 ~CTestChainValidate();
147 TValidationStatus* iError;
148 CArrayFixFlat<TValidationStatus>* iWarnings;
149 CDesCArray* iPolicies;
157 CTestChainBuild* TestBuildSpec1();
158 CTestChainBuild* TestBuildSpec2();
159 CTestChainBuild* TestBuildSpec3();
160 CTestChainBuild* TestBuildSpec4();
161 CTestChainBuild* TestBuildSpec5();
162 CTestChainBuild* TestBuildSpec6();
164 CTestChainBuild* TestBuildSpec7();
165 CTestChainBuild* TestBuildSpec8();
166 CTestChainBuild* TestBuildSpec9();
167 CTestChainBuild* TestBuildSpec10();
168 CTestChainBuild* TestBuildSpec11();
169 CTestChainBuild* TestBuildSpec12();
171 //chain validate tests
173 CTestChainValidate* TestValidateSpec1();
174 CTestChainValidate* TestValidateSpec2();
175 CTestChainValidate* TestValidateSpec3();
176 CTestChainValidate* TestValidateSpec4();
177 CTestChainValidate* TestValidateSpec5();
178 CTestChainValidate* TestValidateSpec6();
179 CTestChainValidate* TestValidateSpec7();
180 CTestChainValidate* TestValidateSpec8();
181 CTestChainValidate* TestValidateSpec9();
182 CTestChainValidate* TestValidateSpec10();
183 CTestChainValidate* TestValidateSpec11();
184 CTestChainValidate* TestValidateSpec12();
185 CTestChainValidate* TestValidateSpec13();
186 CTestChainValidate* TestValidateSpec14();
187 CTestChainValidate* TestValidateSpec15();
188 CTestChainValidate* TestValidateSpec16();
189 CTestChainValidate* TestValidateSpec17();
191 CTestChainValidate* TestValidateSpec18();
192 //test case where only one self signed trusted cert is supplied
193 CTestChainValidate* TestValidateSpec19();
194 //test case where only one self signed untrusted cert is supplied
195 CTestChainValidate* TestValidateSpec20();
196 //test case where no certs are supplied (this one should leave)
197 CTestChainValidate* TestValidateSpec21();
198 //test case for chain using RSA+SHA1
199 CTestChainValidate* TestValidateSpec22();
200 CTestChainValidate* TestValidateSpec23();
202 CTestChainValidate* TestValidateSpec24();
203 CTestChainValidate* TestValidateSpec25();
204 CTestChainValidate* TestValidateSpec26();
205 CTestChainValidate* TestValidateSpec27();
206 //test warning generated when root cert not self signed
207 CTestChainValidate* TestValidateSpec28();
208 //test case with Apache default certs
209 CTestChainValidate* TestValidateSpec29();
210 CTestChainValidate* TestValidateSpec30();
211 //policy processing tests
212 CTestChainValidate* TestValidateSpec31();
213 CTestChainValidate* TestValidateSpec32();
214 CTestChainValidate* TestValidateSpec33();
215 CTestChainValidate* TestValidateSpec34();
216 CTestChainValidate* TestValidateSpec35();