1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4 /*
5 * test_valparams.c
6 *
7 * Test ValidateParams Type
8 *
9 */
10
11 #include "testutil.h"
12 #include "testutil_nss.h"
13
14 static void *plContext = NULL;
15
16 static void
testDestroy(void * goodObject,void * equalObject,void * diffObject)17 testDestroy(void *goodObject, void *equalObject, void *diffObject)
18 {
19 PKIX_TEST_STD_VARS();
20
21 subTest("PKIX_ValidateParams_Destroy");
22
23 PKIX_TEST_DECREF_BC(goodObject);
24 PKIX_TEST_DECREF_BC(equalObject);
25 PKIX_TEST_DECREF_BC(diffObject);
26
27 cleanup:
28
29 PKIX_TEST_RETURN();
30 }
31
32 static void
testGetProcParams(PKIX_ValidateParams * goodObject,PKIX_ValidateParams * equalObject)33 testGetProcParams(
34 PKIX_ValidateParams *goodObject,
35 PKIX_ValidateParams *equalObject)
36 {
37
38 PKIX_ProcessingParams *goodProcParams = NULL;
39 PKIX_ProcessingParams *equalProcParams = NULL;
40
41 PKIX_TEST_STD_VARS();
42 subTest("PKIX_ValidateParams_GetProcessingParams");
43
44 PKIX_TEST_EXPECT_NO_ERROR(PKIX_ValidateParams_GetProcessingParams(goodObject, &goodProcParams, plContext));
45
46 PKIX_TEST_EXPECT_NO_ERROR(PKIX_ValidateParams_GetProcessingParams(equalObject, &equalProcParams, plContext));
47
48 testEqualsHelper((PKIX_PL_Object *)goodProcParams,
49 (PKIX_PL_Object *)equalProcParams,
50 PKIX_TRUE,
51 plContext);
52
53 cleanup:
54
55 PKIX_TEST_DECREF_AC(goodProcParams);
56 PKIX_TEST_DECREF_AC(equalProcParams);
57
58 PKIX_TEST_RETURN();
59 }
60
61 static void
testGetCertChain(PKIX_ValidateParams * goodObject,PKIX_ValidateParams * equalObject)62 testGetCertChain(
63 PKIX_ValidateParams *goodObject,
64 PKIX_ValidateParams *equalObject)
65 {
66
67 PKIX_List *goodChain = NULL;
68 PKIX_List *equalChain = NULL;
69
70 PKIX_TEST_STD_VARS();
71 subTest("PKIX_ValidateParams_GetCertChain");
72
73 PKIX_TEST_EXPECT_NO_ERROR(PKIX_ValidateParams_GetCertChain(goodObject, &goodChain, plContext));
74
75 PKIX_TEST_EXPECT_NO_ERROR(PKIX_ValidateParams_GetCertChain(equalObject, &equalChain, plContext));
76
77 testEqualsHelper((PKIX_PL_Object *)goodChain,
78 (PKIX_PL_Object *)equalChain,
79 PKIX_TRUE,
80 plContext);
81
82 cleanup:
83
84 PKIX_TEST_DECREF_AC(goodChain);
85 PKIX_TEST_DECREF_AC(equalChain);
86
87 PKIX_TEST_RETURN();
88 }
89
90 static void
printUsage(char * pName)91 printUsage(char *pName)
92 {
93 printf("\nUSAGE: %s <central-data-dir>\n\n", pName);
94 }
95
96 int
test_valparams(int argc,char * argv[])97 test_valparams(int argc, char *argv[])
98 {
99
100 PKIX_ValidateParams *goodObject = NULL;
101 PKIX_ValidateParams *equalObject = NULL;
102 PKIX_ValidateParams *diffObject = NULL;
103 PKIX_List *chain = NULL;
104 PKIX_UInt32 actualMinorVersion;
105 PKIX_UInt32 j = 0;
106 char *dirName = NULL;
107
108 char *goodInput = "yassir2yassir";
109 char *diffInput = "yassir2bcn";
110
111 char *expectedAscii =
112 "[\n"
113 "\tProcessing Params: \n"
114 "\t********BEGIN PROCESSING PARAMS********\n"
115 "\t\t"
116 "[\n"
117 "\tTrust Anchors: \n"
118 "\t********BEGIN LIST OF TRUST ANCHORS********\n"
119 "\t\t"
120 "([\n"
121 "\tTrusted CA Name: "
122 "CN=yassir,OU=bcn,OU=east,O=sun,C=us\n"
123 "\tTrusted CA PublicKey: ANSI X9.57 DSA Signature\n"
124 "\tInitial Name Constraints:(null)\n"
125 "]\n"
126 ", [\n"
127 "\tTrusted CA Name: OU=bcn,OU=east,O=sun,C=us\n"
128 "\tTrusted CA PublicKey: ANSI X9.57 DSA Signature\n"
129 "\tInitial Name Constraints:(null)\n"
130 "]\n"
131 ")\n"
132 "\t********END LIST OF TRUST ANCHORS********\n"
133 "\tDate: \t\t(null)\n"
134 "\tTarget Constraints: (null)\n"
135 "\tInitial Policies: (null)\n"
136 "\tQualifiers Rejected: FALSE\n"
137 "\tCert Stores: (EMPTY)\n"
138 "\tCRL Checking Enabled: 0\n"
139 "]\n"
140 "\n"
141 "\t********END PROCESSING PARAMS********\n"
142 "\tChain: \t\t"
143 "([\n"
144 "\tVersion: v3\n"
145 "\tSerialNumber: 37bc66ec\n"
146 "\tIssuer: CN=yassir,OU=bcn,OU=east,O=sun,C=us\n"
147 "\tSubject: OU=bcn,OU=east,O=sun,C=us\n"
148 "\tValidity: [From: Thu Aug 19 16:19:56 1999\n"
149 "\t To: Fri Aug 18 16:19:56 2000]\n"
150 "\tSubjectAltNames: (null)\n"
151 "\tAuthorityKeyId: (null)\n"
152 "\tSubjectKeyId: (null)\n"
153 "\tSubjPubKeyAlgId: ANSI X9.57 DSA Signature\n"
154 "\tCritExtOIDs: (2.5.29.15, 2.5.29.19)\n"
155 "\tExtKeyUsages: (null)\n"
156 "\tBasicConstraint: CA(0)\n"
157 "\tCertPolicyInfo: (null)\n"
158 "\tPolicyMappings: (null)\n"
159 "\tExplicitPolicy: -1\n"
160 "\tInhibitMapping: -1\n"
161 "\tInhibitAnyPolicy:-1\n"
162 "\tNameConstraints: (null)\n"
163 "]\n"
164 ", [\n"
165 "\tVersion: v3\n"
166 "\tSerialNumber: 37bc65af\n"
167 "\tIssuer: CN=yassir,OU=bcn,OU=east,O=sun,C=us\n"
168 "\tSubject: CN=yassir,OU=bcn,OU=east,O=sun,C=us\n"
169 "\tValidity: [From: Thu Aug 19 16:14:39 1999\n"
170 "\t To: Fri Aug 18 16:14:39 2000]\n"
171 "\tSubjectAltNames: (null)\n"
172 "\tAuthorityKeyId: (null)\n"
173 "\tSubjectKeyId: (null)\n"
174 "\tSubjPubKeyAlgId: ANSI X9.57 DSA Signature\n"
175 "\tCritExtOIDs: (2.5.29.15, 2.5.29.19)\n"
176 "\tExtKeyUsages: (null)\n"
177 "\tBasicConstraint: CA(0)\n"
178 "\tCertPolicyInfo: (null)\n"
179 "\tPolicyMappings: (null)\n"
180 "\tExplicitPolicy: -1\n"
181 "\tInhibitMapping: -1\n"
182 "\tInhibitAnyPolicy:-1\n"
183 "\tNameConstraints: (null)\n"
184 "]\n"
185 ")\n"
186 "]\n";
187
188 PKIX_TEST_STD_VARS();
189
190 startTests("ValidateParams");
191
192 PKIX_TEST_EXPECT_NO_ERROR(
193 PKIX_PL_NssContext_Create(0, PKIX_FALSE, NULL, &plContext));
194
195 if (argc < 2) {
196 printUsage(argv[0]);
197 return (0);
198 }
199
200 dirName = argv[j + 1];
201
202 subTest("PKIX_ValidateParams_Create");
203 chain = createCertChain(dirName, diffInput, goodInput, plContext);
204 goodObject = createValidateParams(dirName,
205 goodInput,
206 diffInput,
207 NULL,
208 NULL,
209 PKIX_FALSE,
210 PKIX_FALSE,
211 PKIX_FALSE,
212 PKIX_FALSE,
213 chain,
214 plContext);
215 equalObject = createValidateParams(dirName,
216 goodInput,
217 diffInput,
218 NULL,
219 NULL,
220 PKIX_FALSE,
221 PKIX_FALSE,
222 PKIX_FALSE,
223 PKIX_FALSE,
224 chain,
225 plContext);
226 diffObject = createValidateParams(dirName,
227 diffInput,
228 goodInput,
229 NULL,
230 NULL,
231 PKIX_FALSE,
232 PKIX_FALSE,
233 PKIX_FALSE,
234 PKIX_FALSE,
235 chain,
236 plContext);
237
238 testGetProcParams(goodObject, equalObject);
239 testGetCertChain(goodObject, equalObject);
240
241 PKIX_TEST_EQ_HASH_TOSTR_DUP(goodObject,
242 equalObject,
243 diffObject,
244 NULL, /* expectedAscii, */
245 ValidateParams,
246 PKIX_FALSE);
247
248 testDestroy(goodObject, equalObject, diffObject);
249
250 cleanup:
251
252 PKIX_TEST_DECREF_AC(chain);
253
254 PKIX_Shutdown(plContext);
255
256 PKIX_TEST_RETURN();
257
258 endTests("ValidateParams");
259
260 return (0);
261 }
262