Import from 1.9a8 tarball
[mozilla-nss.git] / security / nss / lib / libpkix / pkix / params / pkix_procparams.c
blobf978a76aa2e7757664bf2ae71ebd697743781088
1 /* ***** BEGIN LICENSE BLOCK *****
2 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
4 * The contents of this file are subject to the Mozilla Public License Version
5 * 1.1 (the "License"); you may not use this file except in compliance with
6 * the License. You may obtain a copy of the License at
7 * http://www.mozilla.org/MPL/
9 * Software distributed under the License is distributed on an "AS IS" basis,
10 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11 * for the specific language governing rights and limitations under the
12 * License.
14 * The Original Code is the Netscape security libraries.
16 * The Initial Developer of the Original Code is
17 * Netscape Communications Corporation.
18 * Portions created by the Initial Developer are Copyright (C) 1994-2000
19 * the Initial Developer. All Rights Reserved.
21 * Contributor(s):
22 * Sun Microsystems
24 * Alternatively, the contents of this file may be used under the terms of
25 * either the GNU General Public License Version 2 or later (the "GPL"), or
26 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
27 * in which case the provisions of the GPL or the LGPL are applicable instead
28 * of those above. If you wish to allow use of your version of this file only
29 * under the terms of either the GPL or the LGPL, and not to allow others to
30 * use your version of this file under the terms of the MPL, indicate your
31 * decision by deleting the provisions above and replace them with the notice
32 * and other provisions required by the GPL or the LGPL. If you do not delete
33 * the provisions above, a recipient may use your version of this file under
34 * the terms of any one of the MPL, the GPL or the LGPL.
36 * ***** END LICENSE BLOCK ***** */
38 * pkix_procparams.c
40 * ProcessingParams Object Functions
44 #include "pkix_procparams.h"
46 /* --Private-Functions-------------------------------------------- */
49 * FUNCTION: pkix_ProcessingParams_Destroy
50 * (see comments for PKIX_PL_DestructorCallback in pkix_pl_system.h)
52 static PKIX_Error *
53 pkix_ProcessingParams_Destroy(
54 PKIX_PL_Object *object,
55 void *plContext)
57 PKIX_ProcessingParams *params = NULL;
59 PKIX_ENTER(PROCESSINGPARAMS, "pkix_ProcessingParams_Destroy");
60 PKIX_NULLCHECK_ONE(object);
62 /* Check that this object is a processing params object */
63 PKIX_CHECK(pkix_CheckType
64 (object, PKIX_PROCESSINGPARAMS_TYPE, plContext),
65 PKIX_OBJECTNOTPROCESSINGPARAMS);
67 params = (PKIX_ProcessingParams *)object;
69 PKIX_DECREF(params->trustAnchors);
70 PKIX_DECREF(params->hintCerts);
71 PKIX_DECREF(params->constraints);
72 PKIX_DECREF(params->date);
73 PKIX_DECREF(params->initialPolicies);
74 PKIX_DECREF(params->certChainCheckers);
75 PKIX_DECREF(params->revCheckers);
76 PKIX_DECREF(params->certStores);
77 PKIX_DECREF(params->resourceLimits);
79 cleanup:
81 PKIX_RETURN(PROCESSINGPARAMS);
85 * FUNCTION: pkix_ProcessingParams_Equals
86 * (see comments for PKIX_PL_EqualsCallback in pkix_pl_system.h)
88 static PKIX_Error *
89 pkix_ProcessingParams_Equals(
90 PKIX_PL_Object *first,
91 PKIX_PL_Object *second,
92 PKIX_Boolean *pResult,
93 void *plContext)
95 PKIX_UInt32 secondType;
96 PKIX_Boolean cmpResult;
97 PKIX_ProcessingParams *firstProcParams = NULL;
98 PKIX_ProcessingParams *secondProcParams = NULL;
100 PKIX_ENTER(PROCESSINGPARAMS, "pkix_ProcessingParams_Equals");
101 PKIX_NULLCHECK_THREE(first, second, pResult);
103 PKIX_CHECK(pkix_CheckType(first, PKIX_PROCESSINGPARAMS_TYPE, plContext),
104 PKIX_FIRSTOBJECTNOTPROCESSINGPARAMS);
106 PKIX_CHECK(PKIX_PL_Object_GetType(second, &secondType, plContext),
107 PKIX_COULDNOTGETTYPEOFSECONDARGUMENT);
109 *pResult = PKIX_FALSE;
111 if (secondType != PKIX_PROCESSINGPARAMS_TYPE) goto cleanup;
113 firstProcParams = (PKIX_ProcessingParams *)first;
114 secondProcParams = (PKIX_ProcessingParams *)second;
116 /* Do the simplest tests first */
117 if ((firstProcParams->qualifiersRejected) !=
118 (secondProcParams->qualifiersRejected)) {
119 goto cleanup;
122 if (firstProcParams->isCrlRevocationCheckingEnabled !=
123 secondProcParams->isCrlRevocationCheckingEnabled) {
124 goto cleanup;
127 /* trustAnchors can never be NULL */
129 PKIX_EQUALS
130 (firstProcParams->trustAnchors,
131 secondProcParams->trustAnchors,
132 &cmpResult,
133 plContext,
134 PKIX_OBJECTEQUALSFAILED);
136 if (!cmpResult) goto cleanup;
138 PKIX_EQUALS
139 (firstProcParams->hintCerts,
140 secondProcParams->hintCerts,
141 &cmpResult,
142 plContext,
143 PKIX_OBJECTEQUALSFAILED);
145 if (!cmpResult) goto cleanup;
147 PKIX_EQUALS
148 (firstProcParams->date,
149 secondProcParams->date,
150 &cmpResult,
151 plContext,
152 PKIX_OBJECTEQUALSFAILED);
154 if (!cmpResult) goto cleanup;
156 PKIX_EQUALS
157 (firstProcParams->constraints,
158 secondProcParams->constraints,
159 &cmpResult,
160 plContext,
161 PKIX_OBJECTEQUALSFAILED);
163 if (!cmpResult) goto cleanup;
165 PKIX_EQUALS
166 (firstProcParams->initialPolicies,
167 secondProcParams->initialPolicies,
168 &cmpResult,
169 plContext,
170 PKIX_OBJECTEQUALSFAILED);
172 if (!cmpResult) goto cleanup;
174 /* There is no Equals function for CertChainCheckers */
176 PKIX_EQUALS
177 ((PKIX_PL_Object *)firstProcParams->certStores,
178 (PKIX_PL_Object *)secondProcParams->certStores,
179 &cmpResult,
180 plContext,
181 PKIX_OBJECTEQUALSFAILED);
183 if (!cmpResult) goto cleanup;
185 PKIX_EQUALS
186 (firstProcParams->resourceLimits,
187 secondProcParams->resourceLimits,
188 &cmpResult,
189 plContext,
190 PKIX_OBJECTEQUALSFAILED);
192 if (cmpResult == PKIX_FALSE) {
193 *pResult = PKIX_FALSE;
194 goto cleanup;
197 *pResult = cmpResult;
199 cleanup:
201 PKIX_RETURN(PROCESSINGPARAMS);
205 * FUNCTION: pkix_ProcessingParams_Hashcode
206 * (see comments for PKIX_PL_HashcodeCallback in pkix_pl_system.h)
208 static PKIX_Error *
209 pkix_ProcessingParams_Hashcode(
210 PKIX_PL_Object *object,
211 PKIX_UInt32 *pHashcode,
212 void *plContext)
214 PKIX_ProcessingParams *procParams = NULL;
215 PKIX_UInt32 hash = 0;
216 PKIX_UInt32 anchorsHash = 0;
217 PKIX_UInt32 hintCertsHash = 0;
218 PKIX_UInt32 dateHash = 0;
219 PKIX_UInt32 constraintsHash = 0;
220 PKIX_UInt32 initialHash = 0;
221 PKIX_UInt32 rejectedHash = 0;
222 PKIX_UInt32 certChainCheckersHash = 0;
223 PKIX_UInt32 revCheckersHash = 0;
224 PKIX_UInt32 certStoresHash = 0;
225 PKIX_UInt32 resourceLimitsHash = 0;
227 PKIX_ENTER(PROCESSINGPARAMS, "pkix_ProcessingParams_Hashcode");
228 PKIX_NULLCHECK_TWO(object, pHashcode);
230 PKIX_CHECK(pkix_CheckType
231 (object, PKIX_PROCESSINGPARAMS_TYPE, plContext),
232 PKIX_OBJECTNOTPROCESSINGPARAMS);
234 procParams = (PKIX_ProcessingParams*)object;
236 PKIX_HASHCODE(procParams->trustAnchors, &anchorsHash, plContext,
237 PKIX_OBJECTHASHCODEFAILED);
239 PKIX_HASHCODE(procParams->hintCerts, &hintCertsHash, plContext,
240 PKIX_OBJECTHASHCODEFAILED);
242 PKIX_HASHCODE(procParams->date, &dateHash, plContext,
243 PKIX_OBJECTHASHCODEFAILED);
245 PKIX_HASHCODE(procParams->constraints, &constraintsHash, plContext,
246 PKIX_OBJECTHASHCODEFAILED);
248 PKIX_HASHCODE(procParams->initialPolicies, &initialHash, plContext,
249 PKIX_OBJECTHASHCODEFAILED);
251 rejectedHash = procParams->qualifiersRejected;
253 /* There is no Hash function for CertChainCheckers */
255 PKIX_HASHCODE(procParams->certStores, &certStoresHash, plContext,
256 PKIX_OBJECTHASHCODEFAILED);
258 PKIX_HASHCODE(procParams->resourceLimits,
259 &resourceLimitsHash,
260 plContext,
261 PKIX_OBJECTHASHCODEFAILED);
263 hash = (31 * ((31 * anchorsHash) + hintCertsHash + dateHash)) +
264 constraintsHash + initialHash + rejectedHash;
266 hash += ((((certStoresHash + resourceLimitsHash) << 7) +
267 certChainCheckersHash + revCheckersHash +
268 procParams->isCrlRevocationCheckingEnabled) << 7);
270 *pHashcode = hash;
272 cleanup:
274 PKIX_RETURN(PROCESSINGPARAMS);
278 * FUNCTION: pkix_ProcessingParams_ToString
279 * (see comments for PKIX_PL_ToStringCallback in pkix_pl_system.h)
281 static PKIX_Error *
282 pkix_ProcessingParams_ToString(
283 PKIX_PL_Object *object,
284 PKIX_PL_String **pString,
285 void *plContext)
287 PKIX_ProcessingParams *procParams = NULL;
288 char *asciiFormat = NULL;
289 PKIX_PL_String *formatString = NULL;
290 PKIX_PL_String *procParamsString = NULL;
291 PKIX_PL_String *anchorsString = NULL;
292 PKIX_PL_String *dateString = NULL;
293 PKIX_PL_String *constraintsString = NULL;
294 PKIX_PL_String *InitialPoliciesString = NULL;
295 PKIX_PL_String *qualsRejectedString = NULL;
296 PKIX_List *certStores = NULL;
297 PKIX_PL_String *certStoresString = NULL;
298 PKIX_PL_String *resourceLimitsString = NULL;
300 PKIX_ENTER(PROCESSINGPARAMS, "pkix_ProcessingParams_ToString");
301 PKIX_NULLCHECK_TWO(object, pString);
303 PKIX_CHECK(pkix_CheckType
304 (object, PKIX_PROCESSINGPARAMS_TYPE, plContext),
305 PKIX_OBJECTNOTPROCESSINGPARAMS);
307 asciiFormat =
308 "[\n"
309 "\tTrust Anchors: \n"
310 "\t********BEGIN LIST OF TRUST ANCHORS********\n"
311 "\t\t%s\n"
312 "\t********END LIST OF TRUST ANCHORS********\n"
313 "\tDate: \t\t%s\n"
314 "\tTarget Constraints: %s\n"
315 "\tInitial Policies: %s\n"
316 "\tQualifiers Rejected: %s\n"
317 "\tCert Stores: %s\n"
318 "\tResource Limits: %s\n"
319 "\tCRL Checking Enabled: %d\n"
320 "]\n";
322 PKIX_CHECK(PKIX_PL_String_Create
323 (PKIX_ESCASCII,
324 asciiFormat,
326 &formatString,
327 plContext),
328 PKIX_STRINGCREATEFAILED);
330 procParams = (PKIX_ProcessingParams*)object;
332 PKIX_TOSTRING(procParams->trustAnchors, &anchorsString, plContext,
333 PKIX_OBJECTTOSTRINGFAILED);
335 PKIX_TOSTRING(procParams->date, &dateString, plContext,
336 PKIX_OBJECTTOSTRINGFAILED);
338 PKIX_TOSTRING(procParams->constraints, &constraintsString, plContext,
339 PKIX_OBJECTTOSTRINGFAILED);
341 PKIX_TOSTRING
342 (procParams->initialPolicies, &InitialPoliciesString, plContext,
343 PKIX_OBJECTTOSTRINGFAILED);
345 PKIX_CHECK(PKIX_PL_String_Create
346 (PKIX_ESCASCII,
347 (procParams->qualifiersRejected)?"TRUE":"FALSE",
349 &qualsRejectedString,
350 plContext),
351 PKIX_STRINGCREATEFAILED);
353 /* There is no ToString function for CertChainCheckers */
355 PKIX_CHECK(PKIX_ProcessingParams_GetCertStores
356 (procParams, &certStores, plContext),
357 PKIX_PROCESSINGPARAMSGETCERTSTORESFAILED);
359 PKIX_TOSTRING(certStores, &certStoresString, plContext,
360 PKIX_LISTTOSTRINGFAILED);
362 PKIX_TOSTRING(procParams->resourceLimits,
363 &resourceLimitsString,
364 plContext,
365 PKIX_OBJECTTOSTRINGFAILED);
367 PKIX_CHECK(PKIX_PL_Sprintf
368 (&procParamsString,
369 plContext,
370 formatString,
371 anchorsString,
372 dateString,
373 constraintsString,
374 InitialPoliciesString,
375 qualsRejectedString,
376 certStoresString,
377 resourceLimitsString,
378 procParams->isCrlRevocationCheckingEnabled),
379 PKIX_SPRINTFFAILED);
381 *pString = procParamsString;
383 cleanup:
385 PKIX_DECREF(formatString);
386 PKIX_DECREF(anchorsString);
387 PKIX_DECREF(dateString);
388 PKIX_DECREF(constraintsString);
389 PKIX_DECREF(InitialPoliciesString);
390 PKIX_DECREF(qualsRejectedString);
391 PKIX_DECREF(certStores);
392 PKIX_DECREF(certStoresString);
393 PKIX_DECREF(resourceLimitsString);
395 PKIX_RETURN(PROCESSINGPARAMS);
399 * FUNCTION: pkix_ProcessingParams_Duplicate
400 * (see comments for PKIX_PL_DuplicateCallback in pkix_pl_system.h)
402 static PKIX_Error *
403 pkix_ProcessingParams_Duplicate(
404 PKIX_PL_Object *object,
405 PKIX_PL_Object **pNewObject,
406 void *plContext)
408 PKIX_ProcessingParams *params = NULL;
409 PKIX_ProcessingParams *paramsDuplicate = NULL;
411 PKIX_ENTER(PROCESSINGPARAMS, "pkix_ProcessingParams_Duplicate");
412 PKIX_NULLCHECK_TWO(object, pNewObject);
414 PKIX_CHECK(pkix_CheckType
415 (object, PKIX_PROCESSINGPARAMS_TYPE, plContext),
416 PKIX_OBJECTNOTPROCESSINGPARAMS);
418 params = (PKIX_ProcessingParams *)object;
420 PKIX_CHECK(PKIX_PL_Object_Alloc
421 (PKIX_PROCESSINGPARAMS_TYPE,
422 sizeof (PKIX_ProcessingParams),
423 (PKIX_PL_Object **)&paramsDuplicate,
424 plContext),
425 PKIX_PROCESSINGPARAMSCREATEFAILED);
427 /* initialize fields */
428 PKIX_DUPLICATE
429 (params->trustAnchors,
430 &(paramsDuplicate->trustAnchors),
431 plContext,
432 PKIX_OBJECTDUPLICATEFAILED);
434 PKIX_DUPLICATE
435 (params->hintCerts, &(paramsDuplicate->hintCerts), plContext,
436 PKIX_OBJECTDUPLICATEFAILED);
438 PKIX_DUPLICATE
439 (params->constraints,
440 &(paramsDuplicate->constraints),
441 plContext,
442 PKIX_OBJECTDUPLICATEFAILED);
444 PKIX_DUPLICATE
445 (params->date, &(paramsDuplicate->date), plContext,
446 PKIX_OBJECTDUPLICATEFAILED);
448 PKIX_DUPLICATE
449 (params->initialPolicies,
450 &(paramsDuplicate->initialPolicies),
451 plContext,
452 PKIX_OBJECTDUPLICATEFAILED);
454 paramsDuplicate->initialPolicyMappingInhibit =
455 params->initialPolicyMappingInhibit;
456 paramsDuplicate->initialAnyPolicyInhibit =
457 params->initialAnyPolicyInhibit;
458 paramsDuplicate->initialExplicitPolicy = params->initialExplicitPolicy;
459 paramsDuplicate->qualifiersRejected = params->qualifiersRejected;
461 PKIX_DUPLICATE
462 (params->certChainCheckers,
463 &(paramsDuplicate->certChainCheckers),
464 plContext,
465 PKIX_OBJECTDUPLICATEFAILED);
467 PKIX_DUPLICATE
468 (params->revCheckers,
469 &(paramsDuplicate->revCheckers),
470 plContext,
471 PKIX_OBJECTDUPLICATEFAILED);
473 PKIX_DUPLICATE
474 (params->certStores, &(paramsDuplicate->certStores), plContext,
475 PKIX_OBJECTDUPLICATEFAILED);
477 PKIX_DUPLICATE
478 (params->resourceLimits,
479 &(paramsDuplicate->resourceLimits),
480 plContext,
481 PKIX_OBJECTDUPLICATEFAILED);
483 paramsDuplicate->isCrlRevocationCheckingEnabled =
484 params->isCrlRevocationCheckingEnabled;
486 *pNewObject = (PKIX_PL_Object *)paramsDuplicate;
488 cleanup:
490 if (PKIX_ERROR_RECEIVED){
491 PKIX_DECREF(paramsDuplicate);
494 PKIX_RETURN(PROCESSINGPARAMS);
499 * FUNCTION: pkix_ProcessingParams_RegisterSelf
500 * DESCRIPTION:
501 * Registers PKIX_PROCESSINGPARAMS_TYPE and its related functions with
502 * systemClasses[]
503 * THREAD SAFETY:
504 * Not Thread Safe - for performance and complexity reasons
506 * Since this function is only called by PKIX_PL_Initialize, which should
507 * only be called once, it is acceptable that this function is not
508 * thread-safe.
510 PKIX_Error *
511 pkix_ProcessingParams_RegisterSelf(void *plContext)
513 extern pkix_ClassTable_Entry systemClasses[PKIX_NUMTYPES];
514 pkix_ClassTable_Entry entry;
516 PKIX_ENTER(PROCESSINGPARAMS, "pkix_ProcessingParams_RegisterSelf");
518 entry.description = "ProcessingParams";
519 entry.destructor = pkix_ProcessingParams_Destroy;
520 entry.equalsFunction = pkix_ProcessingParams_Equals;
521 entry.hashcodeFunction = pkix_ProcessingParams_Hashcode;
522 entry.toStringFunction = pkix_ProcessingParams_ToString;
523 entry.comparator = NULL;
524 entry.duplicateFunction = pkix_ProcessingParams_Duplicate;
526 systemClasses[PKIX_PROCESSINGPARAMS_TYPE] = entry;
528 PKIX_RETURN(PROCESSINGPARAMS);
531 /* --Public-Functions--------------------------------------------- */
534 * FUNCTION: PKIX_ProcessingParams_Create (see comments in pkix_params.h)
536 PKIX_Error *
537 PKIX_ProcessingParams_Create(
538 PKIX_List *anchors, /* list of TrustAnchor */
539 PKIX_ProcessingParams **pParams,
540 void *plContext)
542 PKIX_ProcessingParams *params = NULL;
544 PKIX_ENTER(PROCESSINGPARAMS, "PKIX_ProcessingParams_Create");
545 PKIX_NULLCHECK_TWO(pParams, anchors);
547 PKIX_CHECK(PKIX_PL_Object_Alloc
548 (PKIX_PROCESSINGPARAMS_TYPE,
549 sizeof (PKIX_ProcessingParams),
550 (PKIX_PL_Object **)&params,
551 plContext),
552 PKIX_COULDNOTCREATEPROCESSINGPARAMSOBJECT);
554 /* initialize fields */
555 PKIX_INCREF(anchors);
556 params->trustAnchors = anchors;
557 PKIX_CHECK(PKIX_List_SetImmutable(params->trustAnchors, plContext),
558 PKIX_LISTSETIMMUTABLEFAILED);
560 params->hintCerts = NULL;
561 params->constraints = NULL;
562 params->date = NULL;
563 params->initialPolicies = NULL;
564 params->initialPolicyMappingInhibit = PKIX_FALSE;
565 params->initialAnyPolicyInhibit = PKIX_FALSE;
566 params->initialExplicitPolicy = PKIX_FALSE;
567 params->qualifiersRejected = PKIX_FALSE;
568 params->certChainCheckers = NULL;
569 params->revCheckers = NULL;
570 params->certStores = NULL;
571 params->resourceLimits = NULL;
574 * XXX CRL checking should be enabled as default, but before
575 * we encorporate CRL in all our tests, take it as disable for now
577 params->isCrlRevocationCheckingEnabled = PKIX_TRUE;
579 *pParams = params;
581 cleanup:
583 if (PKIX_ERROR_RECEIVED){
584 PKIX_DECREF(params);
587 PKIX_RETURN(PROCESSINGPARAMS);
592 * FUNCTION: PKIX_ProcessingParams_GetTrustAnchors
593 * (see comments in pkix_params.h)
595 PKIX_Error *
596 PKIX_ProcessingParams_GetTrustAnchors(
597 PKIX_ProcessingParams *params,
598 PKIX_List **pAnchors, /* list of TrustAnchor */
599 void *plContext)
601 PKIX_ENTER(PROCESSINGPARAMS, "PKIX_ProcessingParams_GetTrustAnchors");
602 PKIX_NULLCHECK_TWO(params, pAnchors);
604 PKIX_INCREF(params->trustAnchors);
606 *pAnchors = params->trustAnchors;
608 PKIX_RETURN(PROCESSINGPARAMS);
612 * FUNCTION: PKIX_ProcessingParams_GetDate (see comments in pkix_params.h)
614 PKIX_Error *
615 PKIX_ProcessingParams_GetDate(
616 PKIX_ProcessingParams *params,
617 PKIX_PL_Date **pDate,
618 void *plContext)
620 PKIX_ENTER(PROCESSINGPARAMS, "PKIX_ProcessingParams_GetDate");
621 PKIX_NULLCHECK_TWO(params, pDate);
623 PKIX_INCREF(params->date);
624 *pDate = params->date;
626 PKIX_RETURN(PROCESSINGPARAMS);
630 * FUNCTION: PKIX_ProcessingParams_SetDate (see comments in pkix_params.h)
632 PKIX_Error *
633 PKIX_ProcessingParams_SetDate(
634 PKIX_ProcessingParams *params,
635 PKIX_PL_Date *date,
636 void *plContext)
638 PKIX_ENTER(PROCESSINGPARAMS, "PKIX_ProcessingParams_SetDate");
639 PKIX_NULLCHECK_ONE(params);
641 PKIX_DECREF(params->date);
643 PKIX_INCREF(date);
645 params->date = date;
647 PKIX_CHECK(PKIX_PL_Object_InvalidateCache
648 ((PKIX_PL_Object *)params, plContext),
649 PKIX_OBJECTINVALIDATECACHEFAILED);
650 cleanup:
652 if (PKIX_ERROR_RECEIVED){
653 PKIX_DECREF(date);
656 PKIX_RETURN(PROCESSINGPARAMS);
660 * FUNCTION: PKIX_ProcessingParams_GetTargetCertConstraints
661 * (see comments in pkix_params.h)
663 PKIX_Error *
664 PKIX_ProcessingParams_GetTargetCertConstraints(
665 PKIX_ProcessingParams *params,
666 PKIX_CertSelector **pConstraints,
667 void *plContext)
669 PKIX_ENTER(PROCESSINGPARAMS,
670 "PKIX_ProcessingParams_GetTargetCertConstraints");
672 PKIX_NULLCHECK_TWO(params, pConstraints);
674 PKIX_INCREF(params->constraints);
675 *pConstraints = params->constraints;
677 PKIX_RETURN(PROCESSINGPARAMS);
681 * FUNCTION: PKIX_ProcessingParams_SetTargetCertConstraints
682 * (see comments in pkix_params.h)
684 PKIX_Error *
685 PKIX_ProcessingParams_SetTargetCertConstraints(
686 PKIX_ProcessingParams *params,
687 PKIX_CertSelector *constraints,
688 void *plContext)
691 PKIX_ENTER(PROCESSINGPARAMS,
692 "PKIX_ProcessingParams_SetTargetCertConstraints");
694 PKIX_NULLCHECK_ONE(params);
696 PKIX_DECREF(params->constraints);
698 PKIX_INCREF(constraints);
700 params->constraints = constraints;
702 PKIX_CHECK(PKIX_PL_Object_InvalidateCache
703 ((PKIX_PL_Object *)params, plContext),
704 PKIX_OBJECTINVALIDATECACHEFAILED);
706 cleanup:
708 PKIX_RETURN(PROCESSINGPARAMS);
712 * FUNCTION: PKIX_ProcessingParams_GetInitialPolicies
713 * (see comments in pkix_params.h)
715 PKIX_Error *
716 PKIX_ProcessingParams_GetInitialPolicies(
717 PKIX_ProcessingParams *params,
718 PKIX_List **pInitPolicies, /* list of PKIX_PL_OID */
719 void *plContext)
722 PKIX_ENTER(PROCESSINGPARAMS,
723 "PKIX_ProcessingParams_GetInitialPolicies");
725 PKIX_NULLCHECK_TWO(params, pInitPolicies);
727 if (params->initialPolicies == NULL) {
728 PKIX_CHECK(PKIX_List_Create
729 (&params->initialPolicies, plContext),
730 PKIX_UNABLETOCREATELIST);
731 PKIX_CHECK(PKIX_List_SetImmutable
732 (params->initialPolicies, plContext),
733 PKIX_UNABLETOMAKELISTIMMUTABLE);
734 PKIX_CHECK(PKIX_PL_Object_InvalidateCache
735 ((PKIX_PL_Object *)params, plContext),
736 PKIX_OBJECTINVALIDATECACHEFAILED);
739 PKIX_INCREF(params->initialPolicies);
740 *pInitPolicies = params->initialPolicies;
742 cleanup:
744 PKIX_RETURN(PROCESSINGPARAMS);
748 * FUNCTION: PKIX_ProcessingParams_SetInitialPolicies
749 * (see comments in pkix_params.h)
751 PKIX_Error *
752 PKIX_ProcessingParams_SetInitialPolicies(
753 PKIX_ProcessingParams *params,
754 PKIX_List *initPolicies, /* list of PKIX_PL_OID */
755 void *plContext)
757 PKIX_ENTER(PROCESSINGPARAMS,
758 "PKIX_ProcessingParams_SetInitialPolicies");
760 PKIX_NULLCHECK_ONE(params);
762 PKIX_DECREF(params->initialPolicies);
764 PKIX_INCREF(initPolicies);
765 params->initialPolicies = initPolicies;
767 PKIX_CHECK(PKIX_PL_Object_InvalidateCache
768 ((PKIX_PL_Object *)params, plContext),
769 PKIX_OBJECTINVALIDATECACHEFAILED);
771 cleanup:
773 PKIX_RETURN(PROCESSINGPARAMS);
777 * FUNCTION: PKIX_ProcessingParams_GetPolicyQualifiersRejected
778 * (see comments in pkix_params.h)
780 PKIX_Error *
781 PKIX_ProcessingParams_GetPolicyQualifiersRejected(
782 PKIX_ProcessingParams *params,
783 PKIX_Boolean *pRejected,
784 void *plContext)
786 PKIX_ENTER(PROCESSINGPARAMS,
787 "PKIX_ProcessingParams_GetPolicyQualifiersRejected");
789 PKIX_NULLCHECK_TWO(params, pRejected);
791 *pRejected = params->qualifiersRejected;
793 PKIX_RETURN(PROCESSINGPARAMS);
797 * FUNCTION: PKIX_ProcessingParams_SetPolicyQualifiersRejected
798 * (see comments in pkix_params.h)
800 PKIX_Error *
801 PKIX_ProcessingParams_SetPolicyQualifiersRejected(
802 PKIX_ProcessingParams *params,
803 PKIX_Boolean rejected,
804 void *plContext)
806 PKIX_ENTER(PROCESSINGPARAMS,
807 "PKIX_ProcessingParams_SetPolicyQualifiersRejected");
809 PKIX_NULLCHECK_ONE(params);
811 params->qualifiersRejected = rejected;
813 PKIX_CHECK(PKIX_PL_Object_InvalidateCache
814 ((PKIX_PL_Object *)params, plContext),
815 PKIX_OBJECTINVALIDATECACHEFAILED);
817 cleanup:
819 PKIX_RETURN(PROCESSINGPARAMS);
823 * FUNCTION: PKIX_ProcessingParams_GetCertChainCheckers
824 * (see comments in pkix_params.h)
826 PKIX_Error *
827 PKIX_ProcessingParams_GetCertChainCheckers(
828 PKIX_ProcessingParams *params,
829 PKIX_List **pCheckers, /* list of PKIX_CertChainChecker */
830 void *plContext)
833 PKIX_ENTER
834 (PROCESSINGPARAMS, "PKIX_ProcessingParams_GetCertChainCheckers");
835 PKIX_NULLCHECK_TWO(params, pCheckers);
837 if (params->certChainCheckers) {
838 PKIX_INCREF(params->certChainCheckers);
841 *pCheckers = params->certChainCheckers;
843 PKIX_RETURN(PROCESSINGPARAMS);
847 * FUNCTION: PKIX_ProcessingParams_SetCertChainCheckers
848 * (see comments in pkix_params.h)
850 PKIX_Error *
851 PKIX_ProcessingParams_SetCertChainCheckers(
852 PKIX_ProcessingParams *params,
853 PKIX_List *checkers, /* list of PKIX_CertChainChecker */
854 void *plContext)
857 PKIX_ENTER
858 (PROCESSINGPARAMS, "PKIX_ProcessingParams_SetCertChainCheckers");
859 PKIX_NULLCHECK_ONE(params);
861 if (checkers == NULL) {
862 /* accordingly to spec, nothing done */
863 goto cleanup;
865 } else {
867 PKIX_INCREF(checkers);
869 params->certChainCheckers = checkers;
872 PKIX_CHECK(PKIX_PL_Object_InvalidateCache
873 ((PKIX_PL_Object *)params, plContext),
874 PKIX_OBJECTINVALIDATECACHEFAILED);
876 cleanup:
878 PKIX_RETURN(PROCESSINGPARAMS);
882 * FUNCTION: PKIX_ProcessingParams_AddCertChainCheckers
883 * (see comments in pkix_params.h)
885 PKIX_Error *
886 PKIX_ProcessingParams_AddCertChainChecker(
887 PKIX_ProcessingParams *params,
888 PKIX_CertChainChecker *checker,
889 void *plContext)
891 PKIX_List *list = NULL;
893 PKIX_ENTER
894 (PROCESSINGPARAMS, "PKIX_ProcessingParams_AddCertChainChecker");
895 PKIX_NULLCHECK_TWO(params, checker);
897 if (params->certChainCheckers == NULL) {
899 PKIX_CHECK(PKIX_List_Create(&list, plContext),
900 PKIX_LISTCREATEFAILED);
902 PKIX_INCREF(list);
904 params->certChainCheckers = list;
908 PKIX_CHECK(PKIX_List_AppendItem
909 (params->certChainCheckers, (PKIX_PL_Object *)checker, plContext),
910 PKIX_LISTAPPENDITEMFAILED);
912 PKIX_CHECK(PKIX_PL_Object_InvalidateCache
913 ((PKIX_PL_Object *)params, plContext),
914 PKIX_OBJECTINVALIDATECACHEFAILED);
916 cleanup:
918 PKIX_DECREF(list);
919 PKIX_RETURN(PROCESSINGPARAMS);
923 * FUNCTION: PKIX_ProcessingParams_GetRevocationCheckers
924 * (see comments in pkix_params.h)
926 PKIX_Error *
927 PKIX_ProcessingParams_GetRevocationCheckers(
928 PKIX_ProcessingParams *params,
929 PKIX_List **pCheckers, /* list of PKIX_RevocationChecker */
930 void *plContext)
933 PKIX_ENTER
934 (PROCESSINGPARAMS, "PKIX_ProcessingParams_GetRevocationCheckers");
935 PKIX_NULLCHECK_TWO(params, pCheckers);
937 if (params->revCheckers == NULL) {
938 PKIX_CHECK(PKIX_List_Create
939 (&(params->revCheckers), plContext),
940 PKIX_LISTCREATEFAILED);
943 PKIX_INCREF(params->revCheckers);
945 *pCheckers = params->revCheckers;
947 cleanup:
949 PKIX_RETURN(PROCESSINGPARAMS);
953 * FUNCTION: PKIX_ProcessingParams_SetRevocationCheckers
954 * (see comments in pkix_params.h)
956 PKIX_Error *
957 PKIX_ProcessingParams_SetRevocationCheckers(
958 PKIX_ProcessingParams *params,
959 PKIX_List *checkers, /* list of PKIX_RevocationChecker */
960 void *plContext)
963 PKIX_ENTER
964 (PROCESSINGPARAMS, "PKIX_ProcessingParams_SetRevocationCheckers");
965 PKIX_NULLCHECK_ONE(params);
967 PKIX_DECREF(params->revCheckers);
969 if (checkers != NULL) {
971 PKIX_INCREF(checkers);
973 params->revCheckers = checkers;
976 PKIX_CHECK(PKIX_PL_Object_InvalidateCache
977 ((PKIX_PL_Object *)params, plContext),
978 PKIX_OBJECTINVALIDATECACHEFAILED);
980 cleanup:
982 PKIX_RETURN(PROCESSINGPARAMS);
986 * FUNCTION: PKIX_ProcessingParams_AddRevocationCheckers
987 * (see comments in pkix_params.h)
989 PKIX_Error *
990 PKIX_ProcessingParams_AddRevocationChecker(
991 PKIX_ProcessingParams *params,
992 PKIX_RevocationChecker *checker,
993 void *plContext)
995 PKIX_List *list = NULL;
997 PKIX_ENTER
998 (PROCESSINGPARAMS, "PKIX_ProcessingParams_AddRevocationChecker");
999 PKIX_NULLCHECK_TWO(params, checker);
1001 if (params->certChainCheckers == NULL) {
1003 PKIX_CHECK(PKIX_List_Create(&list, plContext),
1004 PKIX_LISTCREATEFAILED);
1006 PKIX_INCREF(list);
1008 params->certChainCheckers = list;
1012 PKIX_CHECK(PKIX_List_AppendItem
1013 (params->certChainCheckers, (PKIX_PL_Object *)checker, plContext),
1014 PKIX_LISTAPPENDITEMFAILED);
1016 PKIX_CHECK(PKIX_PL_Object_InvalidateCache
1017 ((PKIX_PL_Object *)params, plContext),
1018 PKIX_OBJECTINVALIDATECACHEFAILED);
1020 cleanup:
1022 PKIX_DECREF(list);
1023 PKIX_RETURN(PROCESSINGPARAMS);
1027 * FUNCTION: PKIX_ProcessingParams_GetCertStores
1028 * (see comments in pkix_params.h)
1030 PKIX_Error *
1031 PKIX_ProcessingParams_GetCertStores(
1032 PKIX_ProcessingParams *params,
1033 PKIX_List **pStores, /* list of PKIX_CertStore */
1034 void *plContext)
1036 PKIX_ENTER(PROCESSINGPARAMS, "PKIX_ProcessingParams_GetCertStores");
1038 PKIX_NULLCHECK_TWO(params, pStores);
1040 if (!params->certStores){
1041 PKIX_CHECK(PKIX_List_Create(&params->certStores, plContext),
1042 PKIX_UNABLETOCREATELIST);
1045 PKIX_INCREF(params->certStores);
1046 *pStores = params->certStores;
1048 cleanup:
1050 PKIX_RETURN(PROCESSINGPARAMS);
1054 * FUNCTION: PKIX_ProcessingParams_SetCertStores
1055 * (see comments in pkix_params.h)
1057 PKIX_Error *
1058 PKIX_ProcessingParams_SetCertStores(
1059 PKIX_ProcessingParams *params,
1060 PKIX_List *stores, /* list of PKIX_CertStore */
1061 void *plContext)
1063 PKIX_ENTER(PROCESSINGPARAMS, "PKIX_ProcessingParams_SetCertStores");
1065 PKIX_NULLCHECK_ONE(params);
1067 PKIX_DECREF(params->certStores);
1069 PKIX_INCREF(stores);
1070 params->certStores = stores;
1072 PKIX_CHECK(PKIX_PL_Object_InvalidateCache
1073 ((PKIX_PL_Object *)params, plContext),
1074 PKIX_OBJECTINVALIDATECACHEFAILED);
1076 cleanup:
1078 PKIX_RETURN(PROCESSINGPARAMS);
1082 * FUNCTION: PKIX_ProcessingParams_AddCertStore
1083 * (see comments in pkix_params.h)
1085 PKIX_Error *
1086 PKIX_ProcessingParams_AddCertStore(
1087 PKIX_ProcessingParams *params,
1088 PKIX_CertStore *store,
1089 void *plContext)
1091 PKIX_List *certStores = NULL;
1093 PKIX_ENTER(PROCESSINGPARAMS, "PKIX_ProcessingParams_AddCertStore");
1094 PKIX_NULLCHECK_TWO(params, store);
1096 PKIX_CHECK(PKIX_ProcessingParams_GetCertStores
1097 (params, &certStores, plContext),
1098 PKIX_PROCESSINGPARAMSGETCERTSTORESFAILED);
1100 PKIX_CHECK(PKIX_List_AppendItem
1101 (certStores, (PKIX_PL_Object *)store, plContext),
1102 PKIX_LISTAPPENDITEMFAILED);
1104 PKIX_CHECK(PKIX_PL_Object_InvalidateCache
1105 ((PKIX_PL_Object *)params, plContext),
1106 PKIX_OBJECTINVALIDATECACHEFAILED);
1108 cleanup:
1110 PKIX_DECREF(certStores);
1111 PKIX_RETURN(PROCESSINGPARAMS);
1115 * FUNCTION: PKIX_ProcessingParams_IsCRLRevocationCheckingEnabled
1116 * (see comments in pkix_params.h)
1118 PKIX_Error *
1119 PKIX_ProcessingParams_IsCRLRevocationCheckingEnabled(
1120 PKIX_ProcessingParams *params,
1121 PKIX_Boolean *pEnabled,
1122 void *plContext)
1125 PKIX_ENTER(PROCESSINGPARAMS,
1126 "PKIX_ProcessingParams_IsCRLRevocationCheckingEnabled");
1127 PKIX_NULLCHECK_TWO(params, pEnabled);
1129 *pEnabled = params->isCrlRevocationCheckingEnabled;
1131 PKIX_RETURN(PROCESSINGPARAMS);
1135 * FUNCTION: PKIX_ProcessingParams_SetRevocationEnabled
1136 * (see comments in pkix_params.h)
1138 PKIX_Error *
1139 PKIX_ProcessingParams_SetRevocationEnabled(
1140 PKIX_ProcessingParams *params,
1141 PKIX_Boolean enabled,
1142 void *plContext)
1145 PKIX_ENTER(PROCESSINGPARAMS,
1146 "PKIX_ProcessingParams_SetRevocationEnabled");
1147 PKIX_NULLCHECK_ONE(params);
1149 params->isCrlRevocationCheckingEnabled = enabled;
1151 PKIX_CHECK(PKIX_PL_Object_InvalidateCache
1152 ((PKIX_PL_Object *)params, plContext),
1153 PKIX_OBJECTINVALIDATECACHEFAILED);
1155 cleanup:
1157 PKIX_RETURN(PROCESSINGPARAMS);
1161 * FUNCTION: pkix_ProcessingParams_GetRevocationEnabled
1163 * DESCRIPTION:
1164 * Retrieves the boolean value indicating whether Revocation Checking
1165 * should be performed, from the ProcessingParams pointed to by "params",
1166 * and stores the result at "pEnable".
1168 * PARAMETERS:
1169 * "params"
1170 * Address of ProcessingParams whose revocationEnabled flag is to be
1171 * retrieved. Must be non-NULL.
1172 * "pEnable"
1173 * Address where Boolean value will be stored. Must be non-NULL.
1174 * "plContext"
1175 * Platform-specific context pointer.
1177 * THREAD SAFETY:
1178 * Thread Safe (see Thread Safety Definitions in Programmer's Guide)
1180 * RETURNS:
1181 * Returns NULL if the function succeeds.
1182 * Returns a Fatal Error if the function fails in an unrecoverable way.
1184 PKIX_Error *
1185 pkix_ProcessingParams_GetRevocationEnabled(
1186 PKIX_ProcessingParams *params,
1187 PKIX_Boolean *pEnabled,
1188 void *plContext)
1191 PKIX_ENTER(PROCESSINGPARAMS,
1192 "PKIX_ProcessingParams_GetRevocationEnabled");
1194 PKIX_NULLCHECK_TWO(params, pEnabled);
1196 *pEnabled = params->isCrlRevocationCheckingEnabled;
1198 PKIX_RETURN(PROCESSINGPARAMS);
1202 * FUNCTION: PKIX_ProcessingParams_SetResourceLimits
1203 * (see comments in pkix_params.h)
1205 PKIX_Error *
1206 PKIX_ProcessingParams_SetResourceLimits(
1207 PKIX_ProcessingParams *params,
1208 PKIX_ResourceLimits *resourceLimits,
1209 void *plContext)
1211 PKIX_ENTER(PROCESSINGPARAMS, "PKIX_ProcessingParams_SetResourceLimits");
1213 PKIX_NULLCHECK_TWO(params, resourceLimits);
1215 PKIX_DECREF(params->resourceLimits);
1216 PKIX_INCREF(resourceLimits);
1217 params->resourceLimits = resourceLimits;
1219 PKIX_RETURN(PROCESSINGPARAMS);
1223 * FUNCTION: PKIX_ProcessingParams_GetResourceLimits
1224 * (see comments in pkix_params.h)
1226 PKIX_Error *
1227 PKIX_ProcessingParams_GetResourceLimits(
1228 PKIX_ProcessingParams *params,
1229 PKIX_ResourceLimits **pResourceLimits,
1230 void *plContext)
1232 PKIX_ENTER(PROCESSINGPARAMS, "PKIX_ProcessingParams_GetResourceLimits");
1234 PKIX_NULLCHECK_TWO(params, pResourceLimits);
1236 PKIX_INCREF(params->resourceLimits);
1237 *pResourceLimits = params->resourceLimits;
1239 PKIX_RETURN(PROCESSINGPARAMS);
1243 * FUNCTION: PKIX_ProcessingParams_IsAnyPolicyInhibited
1244 * (see comments in pkix_params.h)
1246 PKIX_Error *
1247 PKIX_ProcessingParams_IsAnyPolicyInhibited(
1248 PKIX_ProcessingParams *params,
1249 PKIX_Boolean *pInhibited,
1250 void *plContext)
1252 PKIX_ENTER(PROCESSINGPARAMS,
1253 "PKIX_ProcessingParams_IsAnyPolicyInhibited");
1255 PKIX_NULLCHECK_TWO(params, pInhibited);
1257 *pInhibited = params->initialAnyPolicyInhibit;
1259 PKIX_RETURN(PROCESSINGPARAMS);
1263 * FUNCTION: PKIX_ProcessingParams_SetAnyPolicyInhibited
1264 * (see comments in pkix_params.h)
1266 PKIX_Error *
1267 PKIX_ProcessingParams_SetAnyPolicyInhibited(
1268 PKIX_ProcessingParams *params,
1269 PKIX_Boolean inhibited,
1270 void *plContext)
1272 PKIX_ENTER(PROCESSINGPARAMS,
1273 "PKIX_ProcessingParams_SetAnyPolicyInhibited");
1275 PKIX_NULLCHECK_ONE(params);
1277 params->initialAnyPolicyInhibit = inhibited;
1279 PKIX_CHECK(PKIX_PL_Object_InvalidateCache
1280 ((PKIX_PL_Object *)params, plContext),
1281 PKIX_OBJECTINVALIDATECACHEFAILED);
1283 cleanup:
1285 PKIX_RETURN(PROCESSINGPARAMS);
1289 * FUNCTION: PKIX_ProcessingParams_IsExplicitPolicyRequired
1290 * (see comments in pkix_params.h)
1292 PKIX_Error *
1293 PKIX_ProcessingParams_IsExplicitPolicyRequired(
1294 PKIX_ProcessingParams *params,
1295 PKIX_Boolean *pRequired,
1296 void *plContext)
1298 PKIX_ENTER(PROCESSINGPARAMS,
1299 "PKIX_ProcessingParams_IsExplicitPolicyRequired");
1301 PKIX_NULLCHECK_TWO(params, pRequired);
1303 *pRequired = params->initialExplicitPolicy;
1305 PKIX_RETURN(PROCESSINGPARAMS);
1309 * FUNCTION: PKIX_ProcessingParams_SetExplicitPolicyRequired
1310 * (see comments in pkix_params.h)
1312 PKIX_Error *
1313 PKIX_ProcessingParams_SetExplicitPolicyRequired(
1314 PKIX_ProcessingParams *params,
1315 PKIX_Boolean required,
1316 void *plContext)
1318 PKIX_ENTER(PROCESSINGPARAMS,
1319 "PKIX_ProcessingParams_SetExplicitPolicyRequired");
1321 PKIX_NULLCHECK_ONE(params);
1323 params->initialExplicitPolicy = required;
1325 PKIX_CHECK(PKIX_PL_Object_InvalidateCache
1326 ((PKIX_PL_Object *)params, plContext),
1327 PKIX_OBJECTINVALIDATECACHEFAILED);
1329 cleanup:
1331 PKIX_RETURN(PROCESSINGPARAMS);
1335 * FUNCTION: PKIX_ProcessingParams_IsPolicyMappingInhibited
1336 * (see comments in pkix_params.h)
1338 PKIX_Error *
1339 PKIX_ProcessingParams_IsPolicyMappingInhibited(
1340 PKIX_ProcessingParams *params,
1341 PKIX_Boolean *pInhibited,
1342 void *plContext)
1344 PKIX_ENTER(PROCESSINGPARAMS,
1345 "PKIX_ProcessingParams_IsPolicyMappingInhibited");
1347 PKIX_NULLCHECK_TWO(params, pInhibited);
1349 *pInhibited = params->initialPolicyMappingInhibit;
1351 PKIX_RETURN(PROCESSINGPARAMS);
1355 * FUNCTION: PKIX_ProcessingParams_SetPolicyMappingInhibited
1356 * (see comments in pkix_params.h)
1358 PKIX_Error *
1359 PKIX_ProcessingParams_SetPolicyMappingInhibited(
1360 PKIX_ProcessingParams *params,
1361 PKIX_Boolean inhibited,
1362 void *plContext)
1364 PKIX_ENTER(PROCESSINGPARAMS,
1365 "PKIX_ProcessingParams_SetPolicyMappingInhibited");
1367 PKIX_NULLCHECK_ONE(params);
1369 params->initialPolicyMappingInhibit = inhibited;
1371 PKIX_CHECK(PKIX_PL_Object_InvalidateCache
1372 ((PKIX_PL_Object *)params, plContext),
1373 PKIX_OBJECTINVALIDATECACHEFAILED);
1375 cleanup:
1377 PKIX_RETURN(PROCESSINGPARAMS);
1381 * FUNCTION: PKIX_ProcessingParams_SetHintCerts
1382 * (see comments in pkix_params.h)
1384 PKIX_Error *
1385 PKIX_ProcessingParams_SetHintCerts(
1386 PKIX_ProcessingParams *params,
1387 PKIX_List *hintCerts,
1388 void *plContext)
1390 PKIX_ENTER(PROCESSINGPARAMS, "PKIX_ProcessingParams_SetHintCerts");
1392 PKIX_NULLCHECK_ONE(params);
1394 PKIX_DECREF(params->hintCerts);
1395 PKIX_INCREF(hintCerts);
1396 params->hintCerts = hintCerts;
1398 PKIX_RETURN(PROCESSINGPARAMS);
1402 * FUNCTION: PKIX_ProcessingParams_GetHintCerts
1403 * (see comments in pkix_params.h)
1405 PKIX_Error *
1406 PKIX_ProcessingParams_GetHintCerts(
1407 PKIX_ProcessingParams *params,
1408 PKIX_List **pHintCerts,
1409 void *plContext)
1411 PKIX_ENTER(PROCESSINGPARAMS, "PKIX_ProcessingParams_GetHintCerts");
1413 PKIX_NULLCHECK_TWO(params, pHintCerts);
1415 PKIX_INCREF(params->hintCerts);
1416 *pHintCerts = params->hintCerts;
1418 PKIX_RETURN(PROCESSINGPARAMS);