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