Mercurial > trustbridge > nss-cmake-static
comparison nss/lib/libpkix/pkix/params/pkix_procparams.c @ 0:1e5118fa0cb1
This is NSS with a Cmake Buildsyste
To compile a static NSS library for Windows we've used the
Chromium-NSS fork and added a Cmake buildsystem to compile
it statically for Windows. See README.chromium for chromium
changes and README.trustbridge for our modifications.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Mon, 28 Jul 2014 10:47:06 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:1e5118fa0cb1 |
---|---|
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 * pkix_procparams.c | |
6 * | |
7 * ProcessingParams Object Functions | |
8 * | |
9 */ | |
10 | |
11 #include "pkix_procparams.h" | |
12 | |
13 /* --Private-Functions-------------------------------------------- */ | |
14 | |
15 /* | |
16 * FUNCTION: pkix_ProcessingParams_Destroy | |
17 * (see comments for PKIX_PL_DestructorCallback in pkix_pl_system.h) | |
18 */ | |
19 static PKIX_Error * | |
20 pkix_ProcessingParams_Destroy( | |
21 PKIX_PL_Object *object, | |
22 void *plContext) | |
23 { | |
24 PKIX_ProcessingParams *params = NULL; | |
25 | |
26 PKIX_ENTER(PROCESSINGPARAMS, "pkix_ProcessingParams_Destroy"); | |
27 PKIX_NULLCHECK_ONE(object); | |
28 | |
29 /* Check that this object is a processing params object */ | |
30 PKIX_CHECK(pkix_CheckType | |
31 (object, PKIX_PROCESSINGPARAMS_TYPE, plContext), | |
32 PKIX_OBJECTNOTPROCESSINGPARAMS); | |
33 | |
34 params = (PKIX_ProcessingParams *)object; | |
35 | |
36 PKIX_DECREF(params->trustAnchors); | |
37 PKIX_DECREF(params->hintCerts); | |
38 PKIX_DECREF(params->constraints); | |
39 PKIX_DECREF(params->date); | |
40 PKIX_DECREF(params->initialPolicies); | |
41 PKIX_DECREF(params->certChainCheckers); | |
42 PKIX_DECREF(params->revChecker); | |
43 PKIX_DECREF(params->certStores); | |
44 PKIX_DECREF(params->resourceLimits); | |
45 | |
46 cleanup: | |
47 | |
48 PKIX_RETURN(PROCESSINGPARAMS); | |
49 } | |
50 | |
51 /* | |
52 * FUNCTION: pkix_ProcessingParams_Equals | |
53 * (see comments for PKIX_PL_EqualsCallback in pkix_pl_system.h) | |
54 */ | |
55 static PKIX_Error * | |
56 pkix_ProcessingParams_Equals( | |
57 PKIX_PL_Object *first, | |
58 PKIX_PL_Object *second, | |
59 PKIX_Boolean *pResult, | |
60 void *plContext) | |
61 { | |
62 PKIX_UInt32 secondType; | |
63 PKIX_Boolean cmpResult; | |
64 PKIX_ProcessingParams *firstProcParams = NULL; | |
65 PKIX_ProcessingParams *secondProcParams = NULL; | |
66 | |
67 PKIX_ENTER(PROCESSINGPARAMS, "pkix_ProcessingParams_Equals"); | |
68 PKIX_NULLCHECK_THREE(first, second, pResult); | |
69 | |
70 PKIX_CHECK(pkix_CheckType(first, PKIX_PROCESSINGPARAMS_TYPE, plContext), | |
71 PKIX_FIRSTOBJECTNOTPROCESSINGPARAMS); | |
72 | |
73 PKIX_CHECK(PKIX_PL_Object_GetType(second, &secondType, plContext), | |
74 PKIX_COULDNOTGETTYPEOFSECONDARGUMENT); | |
75 | |
76 *pResult = PKIX_FALSE; | |
77 | |
78 if (secondType != PKIX_PROCESSINGPARAMS_TYPE) goto cleanup; | |
79 | |
80 firstProcParams = (PKIX_ProcessingParams *)first; | |
81 secondProcParams = (PKIX_ProcessingParams *)second; | |
82 | |
83 /* Do the simplest tests first */ | |
84 if ((firstProcParams->qualifiersRejected) != | |
85 (secondProcParams->qualifiersRejected)) { | |
86 goto cleanup; | |
87 } | |
88 | |
89 if (firstProcParams->isCrlRevocationCheckingEnabled != | |
90 secondProcParams->isCrlRevocationCheckingEnabled) { | |
91 goto cleanup; | |
92 } | |
93 if (firstProcParams->isCrlRevocationCheckingEnabledWithNISTPolicy != | |
94 secondProcParams->isCrlRevocationCheckingEnabledWithNISTPolicy) { | |
95 goto cleanup; | |
96 } | |
97 | |
98 /* trustAnchors can never be NULL */ | |
99 | |
100 PKIX_EQUALS | |
101 (firstProcParams->trustAnchors, | |
102 secondProcParams->trustAnchors, | |
103 &cmpResult, | |
104 plContext, | |
105 PKIX_OBJECTEQUALSFAILED); | |
106 | |
107 if (!cmpResult) goto cleanup; | |
108 | |
109 PKIX_EQUALS | |
110 (firstProcParams->hintCerts, | |
111 secondProcParams->hintCerts, | |
112 &cmpResult, | |
113 plContext, | |
114 PKIX_OBJECTEQUALSFAILED); | |
115 | |
116 if (!cmpResult) goto cleanup; | |
117 | |
118 PKIX_EQUALS | |
119 (firstProcParams->date, | |
120 secondProcParams->date, | |
121 &cmpResult, | |
122 plContext, | |
123 PKIX_OBJECTEQUALSFAILED); | |
124 | |
125 if (!cmpResult) goto cleanup; | |
126 | |
127 PKIX_EQUALS | |
128 (firstProcParams->constraints, | |
129 secondProcParams->constraints, | |
130 &cmpResult, | |
131 plContext, | |
132 PKIX_OBJECTEQUALSFAILED); | |
133 | |
134 if (!cmpResult) goto cleanup; | |
135 | |
136 PKIX_EQUALS | |
137 (firstProcParams->initialPolicies, | |
138 secondProcParams->initialPolicies, | |
139 &cmpResult, | |
140 plContext, | |
141 PKIX_OBJECTEQUALSFAILED); | |
142 | |
143 if (!cmpResult) goto cleanup; | |
144 | |
145 /* There is no Equals function for CertChainCheckers */ | |
146 | |
147 PKIX_EQUALS | |
148 ((PKIX_PL_Object *)firstProcParams->certStores, | |
149 (PKIX_PL_Object *)secondProcParams->certStores, | |
150 &cmpResult, | |
151 plContext, | |
152 PKIX_OBJECTEQUALSFAILED); | |
153 | |
154 if (!cmpResult) goto cleanup; | |
155 | |
156 PKIX_EQUALS | |
157 (firstProcParams->resourceLimits, | |
158 secondProcParams->resourceLimits, | |
159 &cmpResult, | |
160 plContext, | |
161 PKIX_OBJECTEQUALSFAILED); | |
162 | |
163 if (cmpResult == PKIX_FALSE) { | |
164 *pResult = PKIX_FALSE; | |
165 goto cleanup; | |
166 } | |
167 | |
168 *pResult = cmpResult; | |
169 | |
170 cleanup: | |
171 | |
172 PKIX_RETURN(PROCESSINGPARAMS); | |
173 } | |
174 | |
175 /* | |
176 * FUNCTION: pkix_ProcessingParams_Hashcode | |
177 * (see comments for PKIX_PL_HashcodeCallback in pkix_pl_system.h) | |
178 */ | |
179 static PKIX_Error * | |
180 pkix_ProcessingParams_Hashcode( | |
181 PKIX_PL_Object *object, | |
182 PKIX_UInt32 *pHashcode, | |
183 void *plContext) | |
184 { | |
185 PKIX_ProcessingParams *procParams = NULL; | |
186 PKIX_UInt32 hash = 0; | |
187 PKIX_UInt32 anchorsHash = 0; | |
188 PKIX_UInt32 hintCertsHash = 0; | |
189 PKIX_UInt32 dateHash = 0; | |
190 PKIX_UInt32 constraintsHash = 0; | |
191 PKIX_UInt32 initialHash = 0; | |
192 PKIX_UInt32 rejectedHash = 0; | |
193 PKIX_UInt32 certChainCheckersHash = 0; | |
194 PKIX_UInt32 revCheckerHash = 0; | |
195 PKIX_UInt32 certStoresHash = 0; | |
196 PKIX_UInt32 resourceLimitsHash = 0; | |
197 | |
198 PKIX_ENTER(PROCESSINGPARAMS, "pkix_ProcessingParams_Hashcode"); | |
199 PKIX_NULLCHECK_TWO(object, pHashcode); | |
200 | |
201 PKIX_CHECK(pkix_CheckType | |
202 (object, PKIX_PROCESSINGPARAMS_TYPE, plContext), | |
203 PKIX_OBJECTNOTPROCESSINGPARAMS); | |
204 | |
205 procParams = (PKIX_ProcessingParams*)object; | |
206 | |
207 PKIX_HASHCODE(procParams->trustAnchors, &anchorsHash, plContext, | |
208 PKIX_OBJECTHASHCODEFAILED); | |
209 | |
210 PKIX_HASHCODE(procParams->hintCerts, &hintCertsHash, plContext, | |
211 PKIX_OBJECTHASHCODEFAILED); | |
212 | |
213 PKIX_HASHCODE(procParams->date, &dateHash, plContext, | |
214 PKIX_OBJECTHASHCODEFAILED); | |
215 | |
216 PKIX_HASHCODE(procParams->constraints, &constraintsHash, plContext, | |
217 PKIX_OBJECTHASHCODEFAILED); | |
218 | |
219 PKIX_HASHCODE(procParams->initialPolicies, &initialHash, plContext, | |
220 PKIX_OBJECTHASHCODEFAILED); | |
221 | |
222 rejectedHash = procParams->qualifiersRejected; | |
223 | |
224 /* There is no Hash function for CertChainCheckers */ | |
225 | |
226 PKIX_HASHCODE(procParams->certStores, &certStoresHash, plContext, | |
227 PKIX_OBJECTHASHCODEFAILED); | |
228 | |
229 PKIX_HASHCODE(procParams->resourceLimits, | |
230 &resourceLimitsHash, | |
231 plContext, | |
232 PKIX_OBJECTHASHCODEFAILED); | |
233 | |
234 hash = (31 * ((31 * anchorsHash) + hintCertsHash + dateHash)) + | |
235 constraintsHash + initialHash + rejectedHash; | |
236 | |
237 hash += ((((certStoresHash + resourceLimitsHash) << 7) + | |
238 certChainCheckersHash + revCheckerHash + | |
239 procParams->isCrlRevocationCheckingEnabled + | |
240 procParams->isCrlRevocationCheckingEnabledWithNISTPolicy) << 7); | |
241 | |
242 *pHashcode = hash; | |
243 | |
244 cleanup: | |
245 | |
246 PKIX_RETURN(PROCESSINGPARAMS); | |
247 } | |
248 | |
249 /* | |
250 * FUNCTION: pkix_ProcessingParams_ToString | |
251 * (see comments for PKIX_PL_ToStringCallback in pkix_pl_system.h) | |
252 */ | |
253 static PKIX_Error * | |
254 pkix_ProcessingParams_ToString( | |
255 PKIX_PL_Object *object, | |
256 PKIX_PL_String **pString, | |
257 void *plContext) | |
258 { | |
259 PKIX_ProcessingParams *procParams = NULL; | |
260 char *asciiFormat = NULL; | |
261 PKIX_PL_String *formatString = NULL; | |
262 PKIX_PL_String *procParamsString = NULL; | |
263 PKIX_PL_String *anchorsString = NULL; | |
264 PKIX_PL_String *dateString = NULL; | |
265 PKIX_PL_String *constraintsString = NULL; | |
266 PKIX_PL_String *InitialPoliciesString = NULL; | |
267 PKIX_PL_String *qualsRejectedString = NULL; | |
268 PKIX_List *certStores = NULL; | |
269 PKIX_PL_String *certStoresString = NULL; | |
270 PKIX_PL_String *resourceLimitsString = NULL; | |
271 | |
272 PKIX_ENTER(PROCESSINGPARAMS, "pkix_ProcessingParams_ToString"); | |
273 PKIX_NULLCHECK_TWO(object, pString); | |
274 | |
275 PKIX_CHECK(pkix_CheckType | |
276 (object, PKIX_PROCESSINGPARAMS_TYPE, plContext), | |
277 PKIX_OBJECTNOTPROCESSINGPARAMS); | |
278 | |
279 asciiFormat = | |
280 "[\n" | |
281 "\tTrust Anchors: \n" | |
282 "\t********BEGIN LIST OF TRUST ANCHORS********\n" | |
283 "\t\t%s\n" | |
284 "\t********END LIST OF TRUST ANCHORS********\n" | |
285 "\tDate: \t\t%s\n" | |
286 "\tTarget Constraints: %s\n" | |
287 "\tInitial Policies: %s\n" | |
288 "\tQualifiers Rejected: %s\n" | |
289 "\tCert Stores: %s\n" | |
290 "\tResource Limits: %s\n" | |
291 "\tCRL Checking Enabled: %d\n" | |
292 "]\n"; | |
293 | |
294 PKIX_CHECK(PKIX_PL_String_Create | |
295 (PKIX_ESCASCII, | |
296 asciiFormat, | |
297 0, | |
298 &formatString, | |
299 plContext), | |
300 PKIX_STRINGCREATEFAILED); | |
301 | |
302 procParams = (PKIX_ProcessingParams*)object; | |
303 | |
304 PKIX_TOSTRING(procParams->trustAnchors, &anchorsString, plContext, | |
305 PKIX_OBJECTTOSTRINGFAILED); | |
306 | |
307 PKIX_TOSTRING(procParams->date, &dateString, plContext, | |
308 PKIX_OBJECTTOSTRINGFAILED); | |
309 | |
310 PKIX_TOSTRING(procParams->constraints, &constraintsString, plContext, | |
311 PKIX_OBJECTTOSTRINGFAILED); | |
312 | |
313 PKIX_TOSTRING | |
314 (procParams->initialPolicies, &InitialPoliciesString, plContext, | |
315 PKIX_OBJECTTOSTRINGFAILED); | |
316 | |
317 PKIX_CHECK(PKIX_PL_String_Create | |
318 (PKIX_ESCASCII, | |
319 (procParams->qualifiersRejected)?"TRUE":"FALSE", | |
320 0, | |
321 &qualsRejectedString, | |
322 plContext), | |
323 PKIX_STRINGCREATEFAILED); | |
324 | |
325 /* There is no ToString function for CertChainCheckers */ | |
326 | |
327 PKIX_CHECK(PKIX_ProcessingParams_GetCertStores | |
328 (procParams, &certStores, plContext), | |
329 PKIX_PROCESSINGPARAMSGETCERTSTORESFAILED); | |
330 | |
331 PKIX_TOSTRING(certStores, &certStoresString, plContext, | |
332 PKIX_LISTTOSTRINGFAILED); | |
333 | |
334 PKIX_TOSTRING(procParams->resourceLimits, | |
335 &resourceLimitsString, | |
336 plContext, | |
337 PKIX_OBJECTTOSTRINGFAILED); | |
338 | |
339 PKIX_CHECK(PKIX_PL_Sprintf | |
340 (&procParamsString, | |
341 plContext, | |
342 formatString, | |
343 anchorsString, | |
344 dateString, | |
345 constraintsString, | |
346 InitialPoliciesString, | |
347 qualsRejectedString, | |
348 certStoresString, | |
349 resourceLimitsString, | |
350 procParams->isCrlRevocationCheckingEnabled, | |
351 procParams->isCrlRevocationCheckingEnabledWithNISTPolicy), | |
352 PKIX_SPRINTFFAILED); | |
353 | |
354 *pString = procParamsString; | |
355 | |
356 cleanup: | |
357 | |
358 PKIX_DECREF(formatString); | |
359 PKIX_DECREF(anchorsString); | |
360 PKIX_DECREF(dateString); | |
361 PKIX_DECREF(constraintsString); | |
362 PKIX_DECREF(InitialPoliciesString); | |
363 PKIX_DECREF(qualsRejectedString); | |
364 PKIX_DECREF(certStores); | |
365 PKIX_DECREF(certStoresString); | |
366 PKIX_DECREF(resourceLimitsString); | |
367 | |
368 PKIX_RETURN(PROCESSINGPARAMS); | |
369 } | |
370 | |
371 /* | |
372 * FUNCTION: pkix_ProcessingParams_Duplicate | |
373 * (see comments for PKIX_PL_DuplicateCallback in pkix_pl_system.h) | |
374 */ | |
375 static PKIX_Error * | |
376 pkix_ProcessingParams_Duplicate( | |
377 PKIX_PL_Object *object, | |
378 PKIX_PL_Object **pNewObject, | |
379 void *plContext) | |
380 { | |
381 PKIX_ProcessingParams *params = NULL; | |
382 PKIX_ProcessingParams *paramsDuplicate = NULL; | |
383 | |
384 PKIX_ENTER(PROCESSINGPARAMS, "pkix_ProcessingParams_Duplicate"); | |
385 PKIX_NULLCHECK_TWO(object, pNewObject); | |
386 | |
387 PKIX_CHECK(pkix_CheckType | |
388 (object, PKIX_PROCESSINGPARAMS_TYPE, plContext), | |
389 PKIX_OBJECTNOTPROCESSINGPARAMS); | |
390 | |
391 params = (PKIX_ProcessingParams *)object; | |
392 | |
393 PKIX_CHECK(PKIX_PL_Object_Alloc | |
394 (PKIX_PROCESSINGPARAMS_TYPE, | |
395 sizeof (PKIX_ProcessingParams), | |
396 (PKIX_PL_Object **)¶msDuplicate, | |
397 plContext), | |
398 PKIX_PROCESSINGPARAMSCREATEFAILED); | |
399 | |
400 /* initialize fields */ | |
401 PKIX_DUPLICATE | |
402 (params->trustAnchors, | |
403 &(paramsDuplicate->trustAnchors), | |
404 plContext, | |
405 PKIX_OBJECTDUPLICATEFAILED); | |
406 | |
407 PKIX_DUPLICATE | |
408 (params->hintCerts, &(paramsDuplicate->hintCerts), plContext, | |
409 PKIX_OBJECTDUPLICATEFAILED); | |
410 | |
411 PKIX_DUPLICATE | |
412 (params->constraints, | |
413 &(paramsDuplicate->constraints), | |
414 plContext, | |
415 PKIX_OBJECTDUPLICATEFAILED); | |
416 | |
417 PKIX_DUPLICATE | |
418 (params->date, &(paramsDuplicate->date), plContext, | |
419 PKIX_OBJECTDUPLICATEFAILED); | |
420 | |
421 PKIX_DUPLICATE | |
422 (params->initialPolicies, | |
423 &(paramsDuplicate->initialPolicies), | |
424 plContext, | |
425 PKIX_OBJECTDUPLICATEFAILED); | |
426 | |
427 paramsDuplicate->initialPolicyMappingInhibit = | |
428 params->initialPolicyMappingInhibit; | |
429 paramsDuplicate->initialAnyPolicyInhibit = | |
430 params->initialAnyPolicyInhibit; | |
431 paramsDuplicate->initialExplicitPolicy = params->initialExplicitPolicy; | |
432 paramsDuplicate->qualifiersRejected = params->qualifiersRejected; | |
433 | |
434 PKIX_DUPLICATE | |
435 (params->certChainCheckers, | |
436 &(paramsDuplicate->certChainCheckers), | |
437 plContext, | |
438 PKIX_OBJECTDUPLICATEFAILED); | |
439 | |
440 PKIX_DUPLICATE | |
441 (params->revChecker, | |
442 &(paramsDuplicate->revChecker), | |
443 plContext, | |
444 PKIX_OBJECTDUPLICATEFAILED); | |
445 | |
446 PKIX_DUPLICATE | |
447 (params->certStores, &(paramsDuplicate->certStores), plContext, | |
448 PKIX_OBJECTDUPLICATEFAILED); | |
449 | |
450 PKIX_DUPLICATE | |
451 (params->resourceLimits, | |
452 &(paramsDuplicate->resourceLimits), | |
453 plContext, | |
454 PKIX_OBJECTDUPLICATEFAILED); | |
455 | |
456 paramsDuplicate->isCrlRevocationCheckingEnabled = | |
457 params->isCrlRevocationCheckingEnabled; | |
458 | |
459 paramsDuplicate->isCrlRevocationCheckingEnabledWithNISTPolicy = | |
460 params->isCrlRevocationCheckingEnabledWithNISTPolicy; | |
461 | |
462 *pNewObject = (PKIX_PL_Object *)paramsDuplicate; | |
463 | |
464 cleanup: | |
465 | |
466 if (PKIX_ERROR_RECEIVED){ | |
467 PKIX_DECREF(paramsDuplicate); | |
468 } | |
469 | |
470 PKIX_RETURN(PROCESSINGPARAMS); | |
471 | |
472 } | |
473 | |
474 /* | |
475 * FUNCTION: pkix_ProcessingParams_RegisterSelf | |
476 * DESCRIPTION: | |
477 * Registers PKIX_PROCESSINGPARAMS_TYPE and its related functions with | |
478 * systemClasses[] | |
479 * THREAD SAFETY: | |
480 * Not Thread Safe - for performance and complexity reasons | |
481 * | |
482 * Since this function is only called by PKIX_PL_Initialize, which should | |
483 * only be called once, it is acceptable that this function is not | |
484 * thread-safe. | |
485 */ | |
486 PKIX_Error * | |
487 pkix_ProcessingParams_RegisterSelf(void *plContext) | |
488 { | |
489 extern pkix_ClassTable_Entry systemClasses[PKIX_NUMTYPES]; | |
490 pkix_ClassTable_Entry entry; | |
491 | |
492 PKIX_ENTER(PROCESSINGPARAMS, "pkix_ProcessingParams_RegisterSelf"); | |
493 | |
494 entry.description = "ProcessingParams"; | |
495 entry.objCounter = 0; | |
496 entry.typeObjectSize = sizeof(PKIX_ProcessingParams); | |
497 entry.destructor = pkix_ProcessingParams_Destroy; | |
498 entry.equalsFunction = pkix_ProcessingParams_Equals; | |
499 entry.hashcodeFunction = pkix_ProcessingParams_Hashcode; | |
500 entry.toStringFunction = pkix_ProcessingParams_ToString; | |
501 entry.comparator = NULL; | |
502 entry.duplicateFunction = pkix_ProcessingParams_Duplicate; | |
503 | |
504 systemClasses[PKIX_PROCESSINGPARAMS_TYPE] = entry; | |
505 | |
506 PKIX_RETURN(PROCESSINGPARAMS); | |
507 } | |
508 | |
509 /* --Public-Functions--------------------------------------------- */ | |
510 | |
511 /* | |
512 * FUNCTION: PKIX_ProcessingParams_Create (see comments in pkix_params.h) | |
513 */ | |
514 PKIX_Error * | |
515 PKIX_ProcessingParams_Create( | |
516 PKIX_ProcessingParams **pParams, | |
517 void *plContext) | |
518 { | |
519 PKIX_ProcessingParams *params = NULL; | |
520 | |
521 PKIX_ENTER(PROCESSINGPARAMS, "PKIX_ProcessingParams_Create"); | |
522 PKIX_NULLCHECK_ONE(pParams); | |
523 | |
524 PKIX_CHECK(PKIX_PL_Object_Alloc | |
525 (PKIX_PROCESSINGPARAMS_TYPE, | |
526 sizeof (PKIX_ProcessingParams), | |
527 (PKIX_PL_Object **)¶ms, | |
528 plContext), | |
529 PKIX_COULDNOTCREATEPROCESSINGPARAMSOBJECT); | |
530 | |
531 /* initialize fields */ | |
532 PKIX_CHECK(PKIX_List_Create(¶ms->trustAnchors, plContext), | |
533 PKIX_LISTCREATEFAILED); | |
534 PKIX_CHECK(PKIX_List_SetImmutable(params->trustAnchors, plContext), | |
535 PKIX_LISTSETIMMUTABLEFAILED); | |
536 | |
537 PKIX_CHECK(PKIX_PL_Date_Create_UTCTime | |
538 (NULL, ¶ms->date, plContext), | |
539 PKIX_DATECREATEUTCTIMEFAILED); | |
540 | |
541 params->hintCerts = NULL; | |
542 params->constraints = NULL; | |
543 params->initialPolicies = NULL; | |
544 params->initialPolicyMappingInhibit = PKIX_FALSE; | |
545 params->initialAnyPolicyInhibit = PKIX_FALSE; | |
546 params->initialExplicitPolicy = PKIX_FALSE; | |
547 params->qualifiersRejected = PKIX_FALSE; | |
548 params->certChainCheckers = NULL; | |
549 params->revChecker = NULL; | |
550 params->certStores = NULL; | |
551 params->resourceLimits = NULL; | |
552 | |
553 params->isCrlRevocationCheckingEnabled = PKIX_TRUE; | |
554 | |
555 params->isCrlRevocationCheckingEnabledWithNISTPolicy = PKIX_TRUE; | |
556 | |
557 params->useAIAForCertFetching = PKIX_FALSE; | |
558 params->qualifyTargetCert = PKIX_TRUE; | |
559 params->useOnlyTrustAnchors = PKIX_TRUE; | |
560 | |
561 *pParams = params; | |
562 params = NULL; | |
563 | |
564 cleanup: | |
565 | |
566 PKIX_DECREF(params); | |
567 | |
568 PKIX_RETURN(PROCESSINGPARAMS); | |
569 | |
570 } | |
571 | |
572 /* | |
573 * FUNCTION: PKIX_ProcessingParams_GetUseAIAForCertFetching | |
574 * (see comments in pkix_params.h) | |
575 */ | |
576 PKIX_Error * | |
577 PKIX_ProcessingParams_GetUseAIAForCertFetching( | |
578 PKIX_ProcessingParams *params, | |
579 PKIX_Boolean *pUseAIA, /* list of TrustAnchor */ | |
580 void *plContext) | |
581 { | |
582 PKIX_ENTER(PROCESSINGPARAMS, "PKIX_ProcessingParams_GetUseAIAForCertFetching"); | |
583 PKIX_NULLCHECK_TWO(params, pUseAIA); | |
584 | |
585 *pUseAIA = params->useAIAForCertFetching; | |
586 | |
587 PKIX_RETURN(PROCESSINGPARAMS); | |
588 } | |
589 | |
590 /* | |
591 * FUNCTION: PKIX_ProcessingParams_SetUseAIAForCertFetching | |
592 * (see comments in pkix_params.h) | |
593 */ | |
594 PKIX_Error * | |
595 PKIX_ProcessingParams_SetUseAIAForCertFetching( | |
596 PKIX_ProcessingParams *params, | |
597 PKIX_Boolean useAIA, | |
598 void *plContext) | |
599 { | |
600 PKIX_ENTER(PROCESSINGPARAMS, "PKIX_ProcessingParams_SetUseAIAForCertFetching"); | |
601 PKIX_NULLCHECK_ONE(params); | |
602 | |
603 params->useAIAForCertFetching = useAIA; | |
604 | |
605 PKIX_RETURN(PROCESSINGPARAMS); | |
606 } | |
607 | |
608 /* | |
609 * FUNCTION: PKIX_ProcessingParams_GetQualifyTargetCert | |
610 * (see comments in pkix_params.h) | |
611 */ | |
612 PKIX_Error * | |
613 PKIX_ProcessingParams_GetValidateTargetCert( | |
614 PKIX_ProcessingParams *params, | |
615 PKIX_Boolean *pQualifyTargetCert, | |
616 void *plContext) | |
617 { | |
618 PKIX_ENTER(PROCESSINGPARAMS, | |
619 "PKIX_ProcessingParams_GetValidateTargetCert"); | |
620 PKIX_NULLCHECK_TWO(params, pQualifyTargetCert); | |
621 | |
622 *pQualifyTargetCert = params->qualifyTargetCert; | |
623 | |
624 PKIX_RETURN(PROCESSINGPARAMS); | |
625 } | |
626 | |
627 /* | |
628 * FUNCTION: PKIX_ProcessingParams_SetQualifyTargetCert | |
629 * (see comments in pkix_params.h) | |
630 */ | |
631 PKIX_Error * | |
632 PKIX_ProcessingParams_SetQualifyTargetCert( | |
633 PKIX_ProcessingParams *params, | |
634 PKIX_Boolean qualifyTargetCert, | |
635 void *plContext) | |
636 { | |
637 PKIX_ENTER(PROCESSINGPARAMS, | |
638 "PKIX_ProcessingParams_SetQualifyTargetCert"); | |
639 PKIX_NULLCHECK_ONE(params); | |
640 | |
641 params->qualifyTargetCert = qualifyTargetCert; | |
642 | |
643 PKIX_RETURN(PROCESSINGPARAMS); | |
644 } | |
645 | |
646 /* | |
647 * FUNCTION: PKIX_ProcessingParams_SetTrustAnchors | |
648 * (see comments in pkix_params.h) | |
649 */ | |
650 PKIX_Error * | |
651 PKIX_ProcessingParams_SetTrustAnchors( | |
652 PKIX_ProcessingParams *params, | |
653 PKIX_List *anchors, /* list of TrustAnchor */ | |
654 void *plContext) | |
655 { | |
656 PKIX_ENTER(PROCESSINGPARAMS, "PKIX_ProcessingParams_SetTrustAnchors"); | |
657 PKIX_NULLCHECK_TWO(params, anchors); | |
658 | |
659 PKIX_DECREF(params->trustAnchors); | |
660 | |
661 PKIX_INCREF(anchors); | |
662 params->trustAnchors = anchors; | |
663 PKIX_CHECK(PKIX_List_SetImmutable(params->trustAnchors, plContext), | |
664 PKIX_LISTSETIMMUTABLEFAILED); | |
665 | |
666 cleanup: | |
667 PKIX_RETURN(PROCESSINGPARAMS); | |
668 } | |
669 | |
670 /* | |
671 * FUNCTION: PKIX_ProcessingParams_GetTrustAnchors | |
672 * (see comments in pkix_params.h) | |
673 */ | |
674 PKIX_Error * | |
675 PKIX_ProcessingParams_GetTrustAnchors( | |
676 PKIX_ProcessingParams *params, | |
677 PKIX_List **pAnchors, /* list of TrustAnchor */ | |
678 void *plContext) | |
679 { | |
680 PKIX_ENTER(PROCESSINGPARAMS, "PKIX_ProcessingParams_GetTrustAnchors"); | |
681 PKIX_NULLCHECK_TWO(params, pAnchors); | |
682 | |
683 PKIX_INCREF(params->trustAnchors); | |
684 | |
685 *pAnchors = params->trustAnchors; | |
686 | |
687 cleanup: | |
688 PKIX_RETURN(PROCESSINGPARAMS); | |
689 } | |
690 | |
691 /** | |
692 * FUNCTION: PKIX_ProcessingParams_SetUseOnlyTrustAnchors | |
693 * (see comments in pkix_params.h) | |
694 */ | |
695 PKIX_Error * | |
696 PKIX_ProcessingParams_GetUseOnlyTrustAnchors( | |
697 PKIX_ProcessingParams *params, | |
698 PKIX_Boolean *pUseOnlyTrustAnchors, | |
699 void *plContext) | |
700 { | |
701 PKIX_ENTER(PROCESSINGPARAMS, | |
702 "PKIX_ProcessingParams_SetUseTrustAnchorsOnly"); | |
703 PKIX_NULLCHECK_TWO(params, pUseOnlyTrustAnchors); | |
704 | |
705 *pUseOnlyTrustAnchors = params->useOnlyTrustAnchors; | |
706 | |
707 PKIX_RETURN(PROCESSINGPARAMS); | |
708 } | |
709 | |
710 /** | |
711 * FUNCTION: PKIX_ProcessingParams_SetUseOnlyTrustAnchors | |
712 * (see comments in pkix_params.h) | |
713 */ | |
714 PKIX_Error * | |
715 PKIX_ProcessingParams_SetUseOnlyTrustAnchors( | |
716 PKIX_ProcessingParams *params, | |
717 PKIX_Boolean useOnlyTrustAnchors, | |
718 void *plContext) | |
719 { | |
720 PKIX_ENTER(PROCESSINGPARAMS, | |
721 "PKIX_ProcessingParams_SetUseTrustAnchorsOnly"); | |
722 PKIX_NULLCHECK_ONE(params); | |
723 | |
724 params->useOnlyTrustAnchors = useOnlyTrustAnchors; | |
725 | |
726 PKIX_RETURN(PROCESSINGPARAMS); | |
727 } | |
728 | |
729 /* | |
730 * FUNCTION: PKIX_ProcessingParams_GetDate (see comments in pkix_params.h) | |
731 */ | |
732 PKIX_Error * | |
733 PKIX_ProcessingParams_GetDate( | |
734 PKIX_ProcessingParams *params, | |
735 PKIX_PL_Date **pDate, | |
736 void *plContext) | |
737 { | |
738 PKIX_ENTER(PROCESSINGPARAMS, "PKIX_ProcessingParams_GetDate"); | |
739 PKIX_NULLCHECK_TWO(params, pDate); | |
740 | |
741 PKIX_INCREF(params->date); | |
742 *pDate = params->date; | |
743 | |
744 cleanup: | |
745 PKIX_RETURN(PROCESSINGPARAMS); | |
746 } | |
747 | |
748 /* | |
749 * FUNCTION: PKIX_ProcessingParams_SetDate (see comments in pkix_params.h) | |
750 */ | |
751 PKIX_Error * | |
752 PKIX_ProcessingParams_SetDate( | |
753 PKIX_ProcessingParams *params, | |
754 PKIX_PL_Date *date, | |
755 void *plContext) | |
756 { | |
757 PKIX_ENTER(PROCESSINGPARAMS, "PKIX_ProcessingParams_SetDate"); | |
758 PKIX_NULLCHECK_ONE(params); | |
759 | |
760 PKIX_DECREF(params->date); | |
761 | |
762 PKIX_INCREF(date); | |
763 params->date = date; | |
764 | |
765 PKIX_CHECK(PKIX_PL_Object_InvalidateCache | |
766 ((PKIX_PL_Object *)params, plContext), | |
767 PKIX_OBJECTINVALIDATECACHEFAILED); | |
768 | |
769 cleanup: | |
770 | |
771 if (PKIX_ERROR_RECEIVED && params) { | |
772 PKIX_DECREF(params->date); | |
773 } | |
774 | |
775 PKIX_RETURN(PROCESSINGPARAMS); | |
776 } | |
777 | |
778 /* | |
779 * FUNCTION: PKIX_ProcessingParams_GetTargetCertConstraints | |
780 * (see comments in pkix_params.h) | |
781 */ | |
782 PKIX_Error * | |
783 PKIX_ProcessingParams_GetTargetCertConstraints( | |
784 PKIX_ProcessingParams *params, | |
785 PKIX_CertSelector **pConstraints, | |
786 void *plContext) | |
787 { | |
788 PKIX_ENTER(PROCESSINGPARAMS, | |
789 "PKIX_ProcessingParams_GetTargetCertConstraints"); | |
790 | |
791 PKIX_NULLCHECK_TWO(params, pConstraints); | |
792 | |
793 PKIX_INCREF(params->constraints); | |
794 *pConstraints = params->constraints; | |
795 | |
796 cleanup: | |
797 PKIX_RETURN(PROCESSINGPARAMS); | |
798 } | |
799 | |
800 /* | |
801 * FUNCTION: PKIX_ProcessingParams_SetTargetCertConstraints | |
802 * (see comments in pkix_params.h) | |
803 */ | |
804 PKIX_Error * | |
805 PKIX_ProcessingParams_SetTargetCertConstraints( | |
806 PKIX_ProcessingParams *params, | |
807 PKIX_CertSelector *constraints, | |
808 void *plContext) | |
809 { | |
810 | |
811 PKIX_ENTER(PROCESSINGPARAMS, | |
812 "PKIX_ProcessingParams_SetTargetCertConstraints"); | |
813 | |
814 PKIX_NULLCHECK_ONE(params); | |
815 | |
816 PKIX_DECREF(params->constraints); | |
817 | |
818 PKIX_INCREF(constraints); | |
819 params->constraints = constraints; | |
820 | |
821 PKIX_CHECK(PKIX_PL_Object_InvalidateCache | |
822 ((PKIX_PL_Object *)params, plContext), | |
823 PKIX_OBJECTINVALIDATECACHEFAILED); | |
824 | |
825 cleanup: | |
826 if (PKIX_ERROR_RECEIVED && params) { | |
827 PKIX_DECREF(params->constraints); | |
828 } | |
829 | |
830 PKIX_RETURN(PROCESSINGPARAMS); | |
831 } | |
832 | |
833 /* | |
834 * FUNCTION: PKIX_ProcessingParams_GetInitialPolicies | |
835 * (see comments in pkix_params.h) | |
836 */ | |
837 PKIX_Error * | |
838 PKIX_ProcessingParams_GetInitialPolicies( | |
839 PKIX_ProcessingParams *params, | |
840 PKIX_List **pInitPolicies, /* list of PKIX_PL_OID */ | |
841 void *plContext) | |
842 { | |
843 | |
844 PKIX_ENTER(PROCESSINGPARAMS, | |
845 "PKIX_ProcessingParams_GetInitialPolicies"); | |
846 | |
847 PKIX_NULLCHECK_TWO(params, pInitPolicies); | |
848 | |
849 if (params->initialPolicies == NULL) { | |
850 PKIX_CHECK(PKIX_List_Create | |
851 (¶ms->initialPolicies, plContext), | |
852 PKIX_UNABLETOCREATELIST); | |
853 PKIX_CHECK(PKIX_List_SetImmutable | |
854 (params->initialPolicies, plContext), | |
855 PKIX_UNABLETOMAKELISTIMMUTABLE); | |
856 PKIX_CHECK(PKIX_PL_Object_InvalidateCache | |
857 ((PKIX_PL_Object *)params, plContext), | |
858 PKIX_OBJECTINVALIDATECACHEFAILED); | |
859 } | |
860 | |
861 PKIX_INCREF(params->initialPolicies); | |
862 *pInitPolicies = params->initialPolicies; | |
863 | |
864 cleanup: | |
865 | |
866 PKIX_RETURN(PROCESSINGPARAMS); | |
867 } | |
868 | |
869 /* | |
870 * FUNCTION: PKIX_ProcessingParams_SetInitialPolicies | |
871 * (see comments in pkix_params.h) | |
872 */ | |
873 PKIX_Error * | |
874 PKIX_ProcessingParams_SetInitialPolicies( | |
875 PKIX_ProcessingParams *params, | |
876 PKIX_List *initPolicies, /* list of PKIX_PL_OID */ | |
877 void *plContext) | |
878 { | |
879 PKIX_ENTER(PROCESSINGPARAMS, | |
880 "PKIX_ProcessingParams_SetInitialPolicies"); | |
881 PKIX_NULLCHECK_ONE(params); | |
882 | |
883 PKIX_DECREF(params->initialPolicies); | |
884 | |
885 PKIX_INCREF(initPolicies); | |
886 params->initialPolicies = initPolicies; | |
887 | |
888 PKIX_CHECK(PKIX_PL_Object_InvalidateCache | |
889 ((PKIX_PL_Object *)params, plContext), | |
890 PKIX_OBJECTINVALIDATECACHEFAILED); | |
891 | |
892 cleanup: | |
893 | |
894 if (PKIX_ERROR_RECEIVED && params) { | |
895 PKIX_DECREF(params->initialPolicies); | |
896 } | |
897 PKIX_RETURN(PROCESSINGPARAMS); | |
898 } | |
899 | |
900 /* | |
901 * FUNCTION: PKIX_ProcessingParams_GetPolicyQualifiersRejected | |
902 * (see comments in pkix_params.h) | |
903 */ | |
904 PKIX_Error * | |
905 PKIX_ProcessingParams_GetPolicyQualifiersRejected( | |
906 PKIX_ProcessingParams *params, | |
907 PKIX_Boolean *pRejected, | |
908 void *plContext) | |
909 { | |
910 PKIX_ENTER(PROCESSINGPARAMS, | |
911 "PKIX_ProcessingParams_GetPolicyQualifiersRejected"); | |
912 | |
913 PKIX_NULLCHECK_TWO(params, pRejected); | |
914 | |
915 *pRejected = params->qualifiersRejected; | |
916 | |
917 PKIX_RETURN(PROCESSINGPARAMS); | |
918 } | |
919 | |
920 /* | |
921 * FUNCTION: PKIX_ProcessingParams_SetPolicyQualifiersRejected | |
922 * (see comments in pkix_params.h) | |
923 */ | |
924 PKIX_Error * | |
925 PKIX_ProcessingParams_SetPolicyQualifiersRejected( | |
926 PKIX_ProcessingParams *params, | |
927 PKIX_Boolean rejected, | |
928 void *plContext) | |
929 { | |
930 PKIX_ENTER(PROCESSINGPARAMS, | |
931 "PKIX_ProcessingParams_SetPolicyQualifiersRejected"); | |
932 | |
933 PKIX_NULLCHECK_ONE(params); | |
934 | |
935 params->qualifiersRejected = rejected; | |
936 | |
937 PKIX_CHECK(PKIX_PL_Object_InvalidateCache | |
938 ((PKIX_PL_Object *)params, plContext), | |
939 PKIX_OBJECTINVALIDATECACHEFAILED); | |
940 | |
941 cleanup: | |
942 | |
943 PKIX_RETURN(PROCESSINGPARAMS); | |
944 } | |
945 | |
946 /* | |
947 * FUNCTION: PKIX_ProcessingParams_GetCertChainCheckers | |
948 * (see comments in pkix_params.h) | |
949 */ | |
950 PKIX_Error * | |
951 PKIX_ProcessingParams_GetCertChainCheckers( | |
952 PKIX_ProcessingParams *params, | |
953 PKIX_List **pCheckers, /* list of PKIX_CertChainChecker */ | |
954 void *plContext) | |
955 { | |
956 PKIX_ENTER(PROCESSINGPARAMS, | |
957 "PKIX_ProcessingParams_GetCertChainCheckers"); | |
958 PKIX_NULLCHECK_TWO(params, pCheckers); | |
959 | |
960 PKIX_INCREF(params->certChainCheckers); | |
961 *pCheckers = params->certChainCheckers; | |
962 | |
963 cleanup: | |
964 PKIX_RETURN(PROCESSINGPARAMS); | |
965 } | |
966 | |
967 /* | |
968 * FUNCTION: PKIX_ProcessingParams_SetCertChainCheckers | |
969 * (see comments in pkix_params.h) | |
970 */ | |
971 PKIX_Error * | |
972 PKIX_ProcessingParams_SetCertChainCheckers( | |
973 PKIX_ProcessingParams *params, | |
974 PKIX_List *checkers, /* list of PKIX_CertChainChecker */ | |
975 void *plContext) | |
976 { | |
977 | |
978 PKIX_ENTER(PROCESSINGPARAMS, | |
979 "PKIX_ProcessingParams_SetCertChainCheckers"); | |
980 PKIX_NULLCHECK_ONE(params); | |
981 | |
982 PKIX_DECREF(params->certChainCheckers); | |
983 | |
984 PKIX_INCREF(checkers); | |
985 params->certChainCheckers = checkers; | |
986 | |
987 PKIX_CHECK(PKIX_PL_Object_InvalidateCache | |
988 ((PKIX_PL_Object *)params, plContext), | |
989 PKIX_OBJECTINVALIDATECACHEFAILED); | |
990 | |
991 cleanup: | |
992 | |
993 if (PKIX_ERROR_RECEIVED && params) { | |
994 PKIX_DECREF(params->certChainCheckers); | |
995 } | |
996 | |
997 PKIX_RETURN(PROCESSINGPARAMS); | |
998 } | |
999 | |
1000 /* | |
1001 * FUNCTION: PKIX_ProcessingParams_AddCertChainCheckers | |
1002 * (see comments in pkix_params.h) | |
1003 */ | |
1004 PKIX_Error * | |
1005 PKIX_ProcessingParams_AddCertChainChecker( | |
1006 PKIX_ProcessingParams *params, | |
1007 PKIX_CertChainChecker *checker, | |
1008 void *plContext) | |
1009 { | |
1010 PKIX_List *list = NULL; | |
1011 | |
1012 PKIX_ENTER(PROCESSINGPARAMS, | |
1013 "PKIX_ProcessingParams_AddCertChainChecker"); | |
1014 PKIX_NULLCHECK_TWO(params, checker); | |
1015 | |
1016 if (params->certChainCheckers == NULL) { | |
1017 | |
1018 PKIX_CHECK(PKIX_List_Create(&list, plContext), | |
1019 PKIX_LISTCREATEFAILED); | |
1020 | |
1021 params->certChainCheckers = list; | |
1022 } | |
1023 | |
1024 PKIX_CHECK(PKIX_List_AppendItem | |
1025 (params->certChainCheckers, (PKIX_PL_Object *)checker, plContext), | |
1026 PKIX_LISTAPPENDITEMFAILED); | |
1027 | |
1028 PKIX_CHECK(PKIX_PL_Object_InvalidateCache | |
1029 ((PKIX_PL_Object *)params, plContext), | |
1030 PKIX_OBJECTINVALIDATECACHEFAILED); | |
1031 | |
1032 list = NULL; | |
1033 | |
1034 cleanup: | |
1035 | |
1036 if (list && params) { | |
1037 PKIX_DECREF(params->certChainCheckers); | |
1038 } | |
1039 | |
1040 PKIX_RETURN(PROCESSINGPARAMS); | |
1041 } | |
1042 | |
1043 /* | |
1044 * FUNCTION: PKIX_ProcessingParams_GetRevocationChecker | |
1045 * (see comments in pkix_params.h) | |
1046 */ | |
1047 PKIX_Error * | |
1048 PKIX_ProcessingParams_GetRevocationChecker( | |
1049 PKIX_ProcessingParams *params, | |
1050 PKIX_RevocationChecker **pChecker, | |
1051 void *plContext) | |
1052 { | |
1053 | |
1054 PKIX_ENTER | |
1055 (PROCESSINGPARAMS, "PKIX_ProcessingParams_GetRevocationCheckers"); | |
1056 PKIX_NULLCHECK_TWO(params, pChecker); | |
1057 | |
1058 PKIX_INCREF(params->revChecker); | |
1059 *pChecker = params->revChecker; | |
1060 | |
1061 cleanup: | |
1062 | |
1063 PKIX_RETURN(PROCESSINGPARAMS); | |
1064 } | |
1065 | |
1066 /* | |
1067 * FUNCTION: PKIX_ProcessingParams_SetRevocationChecker | |
1068 * (see comments in pkix_params.h) | |
1069 */ | |
1070 PKIX_Error * | |
1071 PKIX_ProcessingParams_SetRevocationChecker( | |
1072 PKIX_ProcessingParams *params, | |
1073 PKIX_RevocationChecker *checker, | |
1074 void *plContext) | |
1075 { | |
1076 | |
1077 PKIX_ENTER(PROCESSINGPARAMS, | |
1078 "PKIX_ProcessingParams_InitRevocationChecker"); | |
1079 PKIX_NULLCHECK_ONE(params); | |
1080 | |
1081 PKIX_DECREF(params->revChecker); | |
1082 PKIX_INCREF(checker); | |
1083 params->revChecker = checker; | |
1084 | |
1085 PKIX_CHECK(PKIX_PL_Object_InvalidateCache | |
1086 ((PKIX_PL_Object *)params, plContext), | |
1087 PKIX_OBJECTINVALIDATECACHEFAILED); | |
1088 cleanup: | |
1089 | |
1090 PKIX_RETURN(PROCESSINGPARAMS); | |
1091 } | |
1092 | |
1093 /* | |
1094 * FUNCTION: PKIX_ProcessingParams_GetCertStores | |
1095 * (see comments in pkix_params.h) | |
1096 */ | |
1097 PKIX_Error * | |
1098 PKIX_ProcessingParams_GetCertStores( | |
1099 PKIX_ProcessingParams *params, | |
1100 PKIX_List **pStores, /* list of PKIX_CertStore */ | |
1101 void *plContext) | |
1102 { | |
1103 PKIX_ENTER(PROCESSINGPARAMS, "PKIX_ProcessingParams_GetCertStores"); | |
1104 | |
1105 PKIX_NULLCHECK_TWO(params, pStores); | |
1106 | |
1107 if (!params->certStores){ | |
1108 PKIX_CHECK(PKIX_List_Create(¶ms->certStores, plContext), | |
1109 PKIX_UNABLETOCREATELIST); | |
1110 } | |
1111 | |
1112 PKIX_INCREF(params->certStores); | |
1113 *pStores = params->certStores; | |
1114 | |
1115 cleanup: | |
1116 | |
1117 PKIX_RETURN(PROCESSINGPARAMS); | |
1118 } | |
1119 | |
1120 /* | |
1121 * FUNCTION: PKIX_ProcessingParams_SetCertStores | |
1122 * (see comments in pkix_params.h) | |
1123 */ | |
1124 PKIX_Error * | |
1125 PKIX_ProcessingParams_SetCertStores( | |
1126 PKIX_ProcessingParams *params, | |
1127 PKIX_List *stores, /* list of PKIX_CertStore */ | |
1128 void *plContext) | |
1129 { | |
1130 PKIX_ENTER(PROCESSINGPARAMS, "PKIX_ProcessingParams_SetCertStores"); | |
1131 | |
1132 PKIX_NULLCHECK_ONE(params); | |
1133 | |
1134 PKIX_DECREF(params->certStores); | |
1135 | |
1136 PKIX_INCREF(stores); | |
1137 params->certStores = stores; | |
1138 | |
1139 PKIX_CHECK(PKIX_PL_Object_InvalidateCache | |
1140 ((PKIX_PL_Object *)params, plContext), | |
1141 PKIX_OBJECTINVALIDATECACHEFAILED); | |
1142 | |
1143 cleanup: | |
1144 | |
1145 if (PKIX_ERROR_RECEIVED && params) { | |
1146 PKIX_DECREF(params->certStores); | |
1147 } | |
1148 | |
1149 PKIX_RETURN(PROCESSINGPARAMS); | |
1150 } | |
1151 | |
1152 /* | |
1153 * FUNCTION: PKIX_ProcessingParams_AddCertStore | |
1154 * (see comments in pkix_params.h) | |
1155 */ | |
1156 PKIX_Error * | |
1157 PKIX_ProcessingParams_AddCertStore( | |
1158 PKIX_ProcessingParams *params, | |
1159 PKIX_CertStore *store, | |
1160 void *plContext) | |
1161 { | |
1162 PKIX_List *certStores = NULL; | |
1163 | |
1164 PKIX_ENTER(PROCESSINGPARAMS, "PKIX_ProcessingParams_AddCertStore"); | |
1165 PKIX_NULLCHECK_TWO(params, store); | |
1166 | |
1167 PKIX_CHECK(PKIX_ProcessingParams_GetCertStores | |
1168 (params, &certStores, plContext), | |
1169 PKIX_PROCESSINGPARAMSGETCERTSTORESFAILED); | |
1170 | |
1171 PKIX_CHECK(PKIX_List_AppendItem | |
1172 (certStores, (PKIX_PL_Object *)store, plContext), | |
1173 PKIX_LISTAPPENDITEMFAILED); | |
1174 | |
1175 PKIX_CHECK(PKIX_PL_Object_InvalidateCache | |
1176 ((PKIX_PL_Object *)params, plContext), | |
1177 PKIX_OBJECTINVALIDATECACHEFAILED); | |
1178 | |
1179 cleanup: | |
1180 | |
1181 PKIX_DECREF(certStores); | |
1182 PKIX_RETURN(PROCESSINGPARAMS); | |
1183 } | |
1184 | |
1185 /* | |
1186 * FUNCTION: PKIX_ProcessingParams_SetResourceLimits | |
1187 * (see comments in pkix_params.h) | |
1188 */ | |
1189 PKIX_Error * | |
1190 PKIX_ProcessingParams_SetResourceLimits( | |
1191 PKIX_ProcessingParams *params, | |
1192 PKIX_ResourceLimits *resourceLimits, | |
1193 void *plContext) | |
1194 { | |
1195 PKIX_ENTER(PROCESSINGPARAMS, | |
1196 "PKIX_ProcessingParams_SetResourceLimits"); | |
1197 | |
1198 PKIX_NULLCHECK_TWO(params, resourceLimits); | |
1199 | |
1200 PKIX_DECREF(params->resourceLimits); | |
1201 PKIX_INCREF(resourceLimits); | |
1202 params->resourceLimits = resourceLimits; | |
1203 | |
1204 cleanup: | |
1205 if (PKIX_ERROR_RECEIVED && params) { | |
1206 PKIX_DECREF(params->resourceLimits); | |
1207 } | |
1208 | |
1209 PKIX_RETURN(PROCESSINGPARAMS); | |
1210 } | |
1211 | |
1212 /* | |
1213 * FUNCTION: PKIX_ProcessingParams_GetResourceLimits | |
1214 * (see comments in pkix_params.h) | |
1215 */ | |
1216 PKIX_Error * | |
1217 PKIX_ProcessingParams_GetResourceLimits( | |
1218 PKIX_ProcessingParams *params, | |
1219 PKIX_ResourceLimits **pResourceLimits, | |
1220 void *plContext) | |
1221 { | |
1222 PKIX_ENTER(PROCESSINGPARAMS, | |
1223 "PKIX_ProcessingParams_GetResourceLimits"); | |
1224 | |
1225 PKIX_NULLCHECK_TWO(params, pResourceLimits); | |
1226 | |
1227 PKIX_INCREF(params->resourceLimits); | |
1228 *pResourceLimits = params->resourceLimits; | |
1229 | |
1230 cleanup: | |
1231 PKIX_RETURN(PROCESSINGPARAMS); | |
1232 } | |
1233 | |
1234 /* | |
1235 * FUNCTION: PKIX_ProcessingParams_IsAnyPolicyInhibited | |
1236 * (see comments in pkix_params.h) | |
1237 */ | |
1238 PKIX_Error * | |
1239 PKIX_ProcessingParams_IsAnyPolicyInhibited( | |
1240 PKIX_ProcessingParams *params, | |
1241 PKIX_Boolean *pInhibited, | |
1242 void *plContext) | |
1243 { | |
1244 PKIX_ENTER(PROCESSINGPARAMS, | |
1245 "PKIX_ProcessingParams_IsAnyPolicyInhibited"); | |
1246 | |
1247 PKIX_NULLCHECK_TWO(params, pInhibited); | |
1248 | |
1249 *pInhibited = params->initialAnyPolicyInhibit; | |
1250 | |
1251 PKIX_RETURN(PROCESSINGPARAMS); | |
1252 } | |
1253 | |
1254 /* | |
1255 * FUNCTION: PKIX_ProcessingParams_SetAnyPolicyInhibited | |
1256 * (see comments in pkix_params.h) | |
1257 */ | |
1258 PKIX_Error * | |
1259 PKIX_ProcessingParams_SetAnyPolicyInhibited( | |
1260 PKIX_ProcessingParams *params, | |
1261 PKIX_Boolean inhibited, | |
1262 void *plContext) | |
1263 { | |
1264 PKIX_ENTER(PROCESSINGPARAMS, | |
1265 "PKIX_ProcessingParams_SetAnyPolicyInhibited"); | |
1266 | |
1267 PKIX_NULLCHECK_ONE(params); | |
1268 | |
1269 params->initialAnyPolicyInhibit = inhibited; | |
1270 | |
1271 PKIX_CHECK(PKIX_PL_Object_InvalidateCache | |
1272 ((PKIX_PL_Object *)params, plContext), | |
1273 PKIX_OBJECTINVALIDATECACHEFAILED); | |
1274 | |
1275 cleanup: | |
1276 | |
1277 PKIX_RETURN(PROCESSINGPARAMS); | |
1278 } | |
1279 | |
1280 /* | |
1281 * FUNCTION: PKIX_ProcessingParams_IsExplicitPolicyRequired | |
1282 * (see comments in pkix_params.h) | |
1283 */ | |
1284 PKIX_Error * | |
1285 PKIX_ProcessingParams_IsExplicitPolicyRequired( | |
1286 PKIX_ProcessingParams *params, | |
1287 PKIX_Boolean *pRequired, | |
1288 void *plContext) | |
1289 { | |
1290 PKIX_ENTER(PROCESSINGPARAMS, | |
1291 "PKIX_ProcessingParams_IsExplicitPolicyRequired"); | |
1292 | |
1293 PKIX_NULLCHECK_TWO(params, pRequired); | |
1294 | |
1295 *pRequired = params->initialExplicitPolicy; | |
1296 | |
1297 PKIX_RETURN(PROCESSINGPARAMS); | |
1298 } | |
1299 | |
1300 /* | |
1301 * FUNCTION: PKIX_ProcessingParams_SetExplicitPolicyRequired | |
1302 * (see comments in pkix_params.h) | |
1303 */ | |
1304 PKIX_Error * | |
1305 PKIX_ProcessingParams_SetExplicitPolicyRequired( | |
1306 PKIX_ProcessingParams *params, | |
1307 PKIX_Boolean required, | |
1308 void *plContext) | |
1309 { | |
1310 PKIX_ENTER(PROCESSINGPARAMS, | |
1311 "PKIX_ProcessingParams_SetExplicitPolicyRequired"); | |
1312 | |
1313 PKIX_NULLCHECK_ONE(params); | |
1314 | |
1315 params->initialExplicitPolicy = required; | |
1316 | |
1317 PKIX_CHECK(PKIX_PL_Object_InvalidateCache | |
1318 ((PKIX_PL_Object *)params, plContext), | |
1319 PKIX_OBJECTINVALIDATECACHEFAILED); | |
1320 | |
1321 cleanup: | |
1322 | |
1323 PKIX_RETURN(PROCESSINGPARAMS); | |
1324 } | |
1325 | |
1326 /* | |
1327 * FUNCTION: PKIX_ProcessingParams_IsPolicyMappingInhibited | |
1328 * (see comments in pkix_params.h) | |
1329 */ | |
1330 PKIX_Error * | |
1331 PKIX_ProcessingParams_IsPolicyMappingInhibited( | |
1332 PKIX_ProcessingParams *params, | |
1333 PKIX_Boolean *pInhibited, | |
1334 void *plContext) | |
1335 { | |
1336 PKIX_ENTER(PROCESSINGPARAMS, | |
1337 "PKIX_ProcessingParams_IsPolicyMappingInhibited"); | |
1338 | |
1339 PKIX_NULLCHECK_TWO(params, pInhibited); | |
1340 | |
1341 *pInhibited = params->initialPolicyMappingInhibit; | |
1342 | |
1343 PKIX_RETURN(PROCESSINGPARAMS); | |
1344 } | |
1345 | |
1346 /* | |
1347 * FUNCTION: PKIX_ProcessingParams_SetPolicyMappingInhibited | |
1348 * (see comments in pkix_params.h) | |
1349 */ | |
1350 PKIX_Error * | |
1351 PKIX_ProcessingParams_SetPolicyMappingInhibited( | |
1352 PKIX_ProcessingParams *params, | |
1353 PKIX_Boolean inhibited, | |
1354 void *plContext) | |
1355 { | |
1356 PKIX_ENTER(PROCESSINGPARAMS, | |
1357 "PKIX_ProcessingParams_SetPolicyMappingInhibited"); | |
1358 | |
1359 PKIX_NULLCHECK_ONE(params); | |
1360 | |
1361 params->initialPolicyMappingInhibit = inhibited; | |
1362 | |
1363 PKIX_CHECK(PKIX_PL_Object_InvalidateCache | |
1364 ((PKIX_PL_Object *)params, plContext), | |
1365 PKIX_OBJECTINVALIDATECACHEFAILED); | |
1366 | |
1367 cleanup: | |
1368 | |
1369 PKIX_RETURN(PROCESSINGPARAMS); | |
1370 } | |
1371 | |
1372 /* | |
1373 * FUNCTION: PKIX_ProcessingParams_SetHintCerts | |
1374 * (see comments in pkix_params.h) | |
1375 */ | |
1376 PKIX_Error * | |
1377 PKIX_ProcessingParams_SetHintCerts( | |
1378 PKIX_ProcessingParams *params, | |
1379 PKIX_List *hintCerts, | |
1380 void *plContext) | |
1381 { | |
1382 PKIX_ENTER(PROCESSINGPARAMS, "PKIX_ProcessingParams_SetHintCerts"); | |
1383 | |
1384 PKIX_NULLCHECK_ONE(params); | |
1385 | |
1386 PKIX_DECREF(params->hintCerts); | |
1387 PKIX_INCREF(hintCerts); | |
1388 params->hintCerts = hintCerts; | |
1389 | |
1390 cleanup: | |
1391 if (PKIX_ERROR_RECEIVED && params) { | |
1392 PKIX_DECREF(params->hintCerts); | |
1393 } | |
1394 | |
1395 PKIX_RETURN(PROCESSINGPARAMS); | |
1396 } | |
1397 | |
1398 /* | |
1399 * FUNCTION: PKIX_ProcessingParams_GetHintCerts | |
1400 * (see comments in pkix_params.h) | |
1401 */ | |
1402 PKIX_Error * | |
1403 PKIX_ProcessingParams_GetHintCerts( | |
1404 PKIX_ProcessingParams *params, | |
1405 PKIX_List **pHintCerts, | |
1406 void *plContext) | |
1407 { | |
1408 PKIX_ENTER(PROCESSINGPARAMS, "PKIX_ProcessingParams_GetHintCerts"); | |
1409 | |
1410 PKIX_NULLCHECK_TWO(params, pHintCerts); | |
1411 | |
1412 PKIX_INCREF(params->hintCerts); | |
1413 *pHintCerts = params->hintCerts; | |
1414 | |
1415 cleanup: | |
1416 PKIX_RETURN(PROCESSINGPARAMS); | |
1417 } |