tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

pkix_certsel.h (69090B)


      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 * This file defines functions associated with the PKIX_CertSelector and the
      6 * PKIX_ComCertSelParams types.
      7 *
      8 */
      9 
     10 #ifndef _PKIX_CERTSEL_H
     11 #define _PKIX_CERTSEL_H
     12 
     13 #include "pkixt.h"
     14 
     15 #ifdef __cplusplus
     16 extern "C" {
     17 #endif
     18 
     19 /* General
     20 *
     21 * Please refer to the libpkix Programmer's Guide for detailed information
     22 * about how to use the libpkix library. Certain key warnings and notices from
     23 * that document are repeated here for emphasis.
     24 *
     25 * All identifiers in this file (and all public identifiers defined in
     26 * libpkix) begin with "PKIX_". Private identifiers only intended for use
     27 * within the library begin with "pkix_".
     28 *
     29 * A function returns NULL upon success, and a PKIX_Error pointer upon failure.
     30 *
     31 * Unless otherwise noted, for all accessor (gettor) functions that return a
     32 * PKIX_PL_Object pointer, callers should assume that this pointer refers to a
     33 * shared object. Therefore, the caller should treat this shared object as
     34 * read-only and should not modify this shared object. When done using the
     35 * shared object, the caller should release the reference to the object by
     36 * using the PKIX_PL_Object_DecRef function.
     37 *
     38 * While a function is executing, if its arguments (or anything referred to by
     39 * its arguments) are modified, free'd, or destroyed, the function's behavior
     40 * is undefined.
     41 *
     42 */
     43 
     44 /* PKIX_CertSelector
     45 *
     46 * PKIX_CertSelectors provide a standard way for the caller to select
     47 * certificates based on particular criteria. A CertSelector is typically used
     48 * by the caller to specify the constraints they wish to impose on the target
     49 * certificate in a chain. (see pkix_params.h) A CertSelector is also often
     50 * used to retrieve certificates from a CertStore that match the selector's
     51 * criteria. (See pkix_certstore.h) For example, the caller may wish to only
     52 * select those certificates that have a particular Subject Distinguished Name
     53 * and a particular value for a private certificate extension. The
     54 * MatchCallback allows the caller to specify the custom matching logic to be
     55 * used by a CertSelector.
     56 *
     57 * By default, the MatchCallback is set to point to the default implementation
     58 * provided by libpkix, which understands how to process the most common
     59 * parameters. If the default implementation is used, the caller should set
     60 * these common parameters using PKIX_CertSelector_SetCommonCertSelectorParams.
     61 * Any common parameter that is not set is assumed to be disabled, which means
     62 * the default MatchCallback implementation will select all certificates
     63 * without regard to that particular disabled parameter. For example, if the
     64 * SerialNumber parameter is not set, MatchCallback will not filter out any
     65 * certificate based on its serial number. As such, if no parameters are set,
     66 * all are disabled and any certificate will match. If a parameter is
     67 * disabled, its associated PKIX_ComCertSelParams_Get* function returns a
     68 * default value of NULL, or -1 for PKIX_ComCertSelParams_GetBasicConstraints
     69 * and PKIX_ComCertSelParams_GetVersion, or 0 for
     70 * PKIX_ComCertSelParams_GetKeyUsage.
     71 *
     72 * If a custom implementation is desired, the default implementation can be
     73 * overridden by calling PKIX_CertSelector_SetMatchCallback. In this case, the
     74 * CertSelector can be initialized with a certSelectorContext, which is where
     75 * the caller can specify the desired parameters the caller wishes to match
     76 * against. Note that this certSelectorContext must be an Object (although any
     77 * object type), allowing it to be reference-counted and allowing it to
     78 * provide the standard Object functions (Equals, Hashcode, ToString, Compare,
     79 * Duplicate).
     80 *
     81 */
     82 
     83 /*
     84 * FUNCTION: PKIX_CertSelector_MatchCallback
     85 * DESCRIPTION:
     86 *
     87 *  This callback function determines whether the specified Cert pointed to by
     88 *  "cert" matches the criteria of the CertSelector pointed to by "selector".
     89 *  If the Cert does not matches the CertSelector's criteria, an exception will
     90 *  be thrown.
     91 *
     92 * PARAMETERS:
     93 *  "selector"
     94 *      Address of CertSelector whose MatchCallback logic and parameters are
     95 *      to be used. Must be non-NULL.
     96 *  "cert"
     97 *      Address of Cert that is to be matched using "selector".
     98 *      Must be non-NULL.
     99 *  "plContext"
    100 *      Platform-specific context pointer.
    101 * THREAD SAFETY:
    102 *  Thread Safe
    103 *
    104 *  Multiple threads must be able to safely call this function without
    105 *  worrying about conflicts, even if they're operating on the same object.
    106 * RETURNS:
    107 *  Returns NULL if the function succeeds.
    108 *  Returns a CertSelector Error if the function fails in a non-fatal way.
    109 *  Returns a Fatal Error if the function fails in an unrecoverable way.
    110 */
    111 typedef PKIX_Error *
    112 (*PKIX_CertSelector_MatchCallback)(
    113        PKIX_CertSelector *selector,
    114        PKIX_PL_Cert *cert,
    115        void *plContext);
    116 
    117 /*
    118 * FUNCTION: PKIX_CertSelector_Create
    119 * DESCRIPTION:
    120 *
    121 *  Creates a new CertSelector using the Object pointed to by
    122 *  "certSelectorContext" (if any) and stores it at "pSelector". As noted
    123 *  above, by default, the MatchCallback is set to point to the default
    124 *  implementation provided by libpkix, which understands how to process
    125 *  ComCertSelParams objects. This is overridden if the MatchCallback pointed
    126 *  to by "callback" is not NULL, in which case the parameters are specified
    127 *  using the certSelectorContext.
    128 *
    129 * PARAMETERS:
    130 *  "callback"
    131 *      The MatchCallback function to be used.
    132 *  "certSelectorContext"
    133 *      Address of Object representing the CertSelector's context (if any).
    134 *  "pSelector"
    135 *      Address where object pointer will be stored. Must be non-NULL.
    136 *  "plContext"
    137 *      Platform-specific context pointer.
    138 * THREAD SAFETY:
    139 *  Thread Safe (see Thread Safety Definitions in Programmer's Guide)
    140 * RETURNS:
    141 *  Returns NULL if the function succeeds.
    142 *  Returns a CertSelector Error if the function fails in a non-fatal way.
    143 *  Returns a Fatal Error if the function fails in an unrecoverable way.
    144 */
    145 PKIX_Error *
    146 PKIX_CertSelector_Create(
    147        PKIX_CertSelector_MatchCallback callback,
    148        PKIX_PL_Object *certSelectorContext,
    149        PKIX_CertSelector **pSelector,
    150        void *plContext);
    151 
    152 /*
    153 * FUNCTION: PKIX_CertSelector_GetMatchCallback
    154 * DESCRIPTION:
    155 *
    156 *  Retrieves a pointer to "selector's" Match callback function and puts it in
    157 *  "pCallback".
    158 *
    159 * PARAMETERS:
    160 *  "selector"
    161 *      The CertSelector whose Match callback is desired. Must be non-NULL.
    162 *  "pCallback"
    163 *      Address where Match callback function pointer will be stored.
    164 *      Must be non-NULL.
    165 *  "plContext"
    166 *      Platform-specific context pointer.
    167 * THREAD SAFETY:
    168 *  Thread Safe (see Thread Safety Definitions in Programmer's Guide)
    169 * RETURNS:
    170 *  Returns NULL if the function succeeds.
    171 *  Returns a CertSelector Error if the function fails in a non-fatal way.
    172 *  Returns a Fatal Error if the function fails in an unrecoverable way.
    173 */
    174 PKIX_Error *
    175 PKIX_CertSelector_GetMatchCallback(
    176        PKIX_CertSelector *selector,
    177        PKIX_CertSelector_MatchCallback *pCallback,
    178        void *plContext);
    179 
    180 /*
    181 * FUNCTION: PKIX_CertSelector_GetCertSelectorContext
    182 * DESCRIPTION:
    183 *
    184 *  Retrieves a pointer to a PKIX_PL_Object representing the context (if any)
    185 *  of the CertSelector pointed to by "selector" and stores it at
    186 *  "pCertSelectorContext".
    187 *
    188 * PARAMETERS:
    189 *  "selector"
    190 *      Address of CertSelector whose context is to be stored.
    191 *      Must be non-NULL.
    192 *  "pCertSelectorContext"
    193 *      Address where object pointer will be stored. Must be non-NULL.
    194 *  "plContext"
    195 *      Platform-specific context pointer.
    196 * THREAD SAFETY:
    197 *  Thread Safe (see Thread Safety Definitions in Programmer's Guide)
    198 * RETURNS:
    199 *  Returns NULL if the function succeeds.
    200 *  Returns a CertSelector Error if the function fails in a non-fatal way.
    201 *  Returns a Fatal Error if the function fails in an unrecoverable way.
    202 */
    203 PKIX_Error *
    204 PKIX_CertSelector_GetCertSelectorContext(
    205        PKIX_CertSelector *selector,
    206        PKIX_PL_Object **pCertSelectorContext,
    207        void *plContext);
    208 
    209 /*
    210 * FUNCTION: PKIX_CertSelector_GetCommonCertSelectorParams
    211 * DESCRIPTION:
    212 *
    213 *  Retrieves a pointer to the ComCertSelParams object that represent the
    214 *  common parameters of the CertSelector pointed to by "selector" and stores
    215 *  it at "pCommonCertSelectorParams". If there are no common parameters
    216 *  stored with the CertSelector, this function stores NULL at
    217 *  "pCommonCertSelectorParams".
    218 *
    219 * PARAMETERS:
    220 *  "selector"
    221 *      Address of CertSelector whose ComCertSelParams object is to be stored.
    222 *      Must be non-NULL.
    223 *  "pCommonCertSelectorParams"
    224 *      Address where object pointer will be stored. Must be non-NULL.
    225 *  "plContext"
    226 *      Platform-specific context pointer.
    227 * THREAD SAFETY:
    228 *  Conditionally Thread Safe
    229 *      (see Thread Safety Definitions in Programmer's Guide)
    230 * RETURNS:
    231 *  Returns NULL if the function succeeds.
    232 *  Returns a CertSelector Error if the function fails in a non-fatal way.
    233 *  Returns a Fatal Error if the function fails in an unrecoverable way.
    234 */
    235 PKIX_Error *
    236 PKIX_CertSelector_GetCommonCertSelectorParams(
    237        PKIX_CertSelector *selector,
    238        PKIX_ComCertSelParams **pCommonCertSelectorParams,
    239        void *plContext);
    240 
    241 /*
    242 * FUNCTION: PKIX_CertSelector_SetCommonCertSelectorParams
    243 * DESCRIPTION:
    244 *
    245 *  Sets the common parameters for the CertSelector pointed to by "selector"
    246 *  using the ComCertSelParams object pointed to by "commonCertSelectorParams".
    247 *
    248 * PARAMETERS:
    249 *  "selector"
    250 *      Address of CertSelector whose common parameters are to be set.
    251 *      Must be non-NULL.
    252 *  "commonCertSelectorParams"
    253 *      Address of ComCertSelParams object representing the common parameters.
    254 *  "plContext"
    255 *      Platform-specific context pointer.
    256 * THREAD SAFETY:
    257 *  Not Thread Safe - assumes exclusive access to "selector"
    258 *  (see Thread Safety Definitions in Programmer's Guide)
    259 * RETURNS:
    260 *  Returns NULL if the function succeeds.
    261 *  Returns a CertSelector Error if the function fails in a non-fatal way.
    262 *  Returns a Fatal Error if the function fails in an unrecoverable way.
    263 */
    264 PKIX_Error *
    265 PKIX_CertSelector_SetCommonCertSelectorParams(
    266        PKIX_CertSelector *selector,
    267        PKIX_ComCertSelParams *commonCertSelectorParams,
    268        void *plContext);
    269 
    270 /* PKIX_ComCertSelParams
    271 *
    272 * PKIX_ComCertSelParams objects are X.509 parameters commonly used with
    273 * CertSelectors, especially when enforcing constraints on a target
    274 * certificate or determining which certificates to retrieve from a CertStore.
    275 * ComCertSelParams objects are typically used with those CertSelectors that
    276 * use the default implementation of MatchCallback, which understands how to
    277 * process ComCertSelParams objects.
    278 */
    279 
    280 /*
    281 * FUNCTION: PKIX_ComCertSelParams_Create
    282 * DESCRIPTION:
    283 *
    284 *  Creates a new ComCertSelParams object and stores it at "pParams".
    285 *
    286 * PARAMETERS:
    287 *  "pParams"
    288 *      Address where object pointer will be stored. Must be non-NULL.
    289 *  "plContext"
    290 *      Platform-specific context pointer.
    291 * THREAD SAFETY:
    292 *  Thread Safe (see Thread Safety Definitions in Programmer's Guide)
    293 * RETURNS:
    294 *  Returns NULL if the function succeeds.
    295 *  Returns a CertSelector Error if the function fails in a non-fatal way.
    296 *  Returns a Fatal Error if the function fails in an unrecoverable way.
    297 */
    298 PKIX_Error *
    299 PKIX_ComCertSelParams_Create(
    300        PKIX_ComCertSelParams **pParams,
    301        void *plContext);
    302 
    303 /*
    304 * FUNCTION: PKIX_ComCertSelParams_GetSubjAltNames
    305 * DESCRIPTION:
    306 *
    307 *  Retrieves a pointer to the List of GeneralNames (if any) representing the
    308 *  subject alternative names criterion that is set in the ComCertSelParams
    309 *  object pointed to by "params" and stores it at "pNames". In order to match
    310 *  against this criterion, a certificate must contain all or at least one of
    311 *  the criterion's subject alternative names (depending on the result of
    312 *  PKIX_ComCertSelParams_GetMatchAllSubjAltNames). The default behavior
    313 *  requires a certificate to contain all of the criterion's subject
    314 *  alternative names in order to match.
    315 *
    316 *  If "params" does not have this criterion set, this function stores NULL at
    317 *  "pNames", in which case all certificates are considered to match this
    318 *  criterion.
    319 *
    320 *  Note that the List returned by this function is immutable.
    321 *
    322 * PARAMETERS:
    323 *  "params"
    324 *      Address of ComCertSelParams object whose subject alternative names
    325 *      criterion (if any) is to be stored. Must be non-NULL.
    326 *  "pNames"
    327 *      Address where object pointer will be stored. Must be non-NULL.
    328 *  "plContext"
    329 *      Platform-specific context pointer.
    330 * THREAD SAFETY:
    331 *  Conditionally Thread Safe
    332 *      (see Thread Safety Definitions in Programmer's Guide)
    333 * RETURNS:
    334 *  Returns NULL if the function succeeds.
    335 *  Returns a CertSelector Error if the function fails in a non-fatal way.
    336 *  Returns a Fatal Error if the function fails in an unrecoverable way.
    337 */
    338 PKIX_Error *
    339 PKIX_ComCertSelParams_GetSubjAltNames(
    340        PKIX_ComCertSelParams *params,
    341        PKIX_List **pNames, /* list of PKIX_PL_GeneralName */
    342        void *plContext);
    343 
    344 /*
    345 * FUNCTION: PKIX_ComCertSelParams_SetSubjAltNames
    346 * DESCRIPTION:
    347 *
    348 *  Sets the subject alternative names criterion of the ComCertSelParams object
    349 *  pointed to by "params" using a List of GeneralNames pointed to by "names".
    350 *  In order to match against this criterion, a certificate must contain all or
    351 *  at least one of the criterion's subject alternative names (depending on the
    352 *  result of PKIX_ComCertSelParams_GetMatchAllSubjAltNames). The default
    353 *  behavior requires a certificate to contain all of the criterion's subject
    354 *  alternative names in order to match.
    355 *
    356 *  If "names" is NULL, all certificates are considered to match this
    357 *  criterion.
    358 *
    359 * PARAMETERS:
    360 *  "params"
    361 *      Address of ComCertSelParams object whose subject alternative
    362 *      names criterion is to be set. Must be non-NULL.
    363 *  "names"
    364 *      Address of List of GeneralNames used to set the criterion
    365 *      (or NULL to disable the criterion).
    366 *  "plContext"
    367 *      Platform-specific context pointer.
    368 * THREAD SAFETY:
    369 *  Not Thread Safe - assumes exclusive access to "params"
    370 *  (see Thread Safety Definitions in Programmer's Guide)
    371 * RETURNS:
    372 *  Returns NULL if the function succeeds.
    373 *  Returns a CertSelector Error if the function fails in a non-fatal way.
    374 *  Returns a Fatal Error if the function fails in an unrecoverable way.
    375 */
    376 PKIX_Error *
    377 PKIX_ComCertSelParams_SetSubjAltNames(
    378        PKIX_ComCertSelParams *params,
    379        PKIX_List *names,  /* list of PKIX_PL_GeneralName */
    380        void *plContext);
    381 
    382 /*
    383 * FUNCTION: PKIX_ComCertSelParams_AddSubjAltName
    384 * DESCRIPTION:
    385 *
    386 *  Adds to the subject alternative names criterion of the ComCertSelParams
    387 *  object pointed to by "params" using the GeneralName pointed to by "name".
    388 *  In order to match against this criterion, a certificate must contain all
    389 *  or at least one of the criterion's subject alternative names (depending on
    390 *  the result of PKIX_ComCertSelParams_GetMatchAllSubjAltNames). The default
    391 *  behavior requires a certificate to contain all of the criterion's subject
    392 *  alternative names in order to match.
    393 *
    394 * PARAMETERS:
    395 *  "params"
    396 *      Address of ComCertSelParams object whose subject alternative names
    397 *      criterion is to be added to. Must be non-NULL.
    398 *  "name"
    399 *      Address of GeneralName to be added.
    400 *  "plContext"
    401 *      Platform-specific context pointer.
    402 * THREAD SAFETY:
    403 *  Not Thread Safe - assumes exclusive access to "params"
    404 *  (see Thread Safety Definitions in Programmer's Guide)
    405 * RETURNS:
    406 *  Returns NULL if the function succeeds.
    407 *  Returns a CertSelector Error if the function fails in a non-fatal way.
    408 *  Returns a Fatal Error if the function fails in an unrecoverable way.
    409 */
    410 PKIX_Error *
    411 PKIX_ComCertSelParams_AddSubjAltName(
    412        PKIX_ComCertSelParams *params,
    413        PKIX_PL_GeneralName *name,
    414        void *plContext);
    415 
    416 /*
    417 * FUNCTION: PKIX_ComCertSelParams_GetPathToNames
    418 * DESCRIPTION:
    419 *
    420 *  Retrieves a pointer to the List of GeneralNames (if any) representing the
    421 *  path to names criterion that is set in the ComCertSelParams object pointed
    422 *  to by "params" and stores it at "pNames". In order to match against this
    423 *  criterion, a certificate must not include name constraints that would
    424 *  prohibit building a path to the criterion's specified names.
    425 *
    426 *  If "params" does not have this criterion set, this function stores NULL at
    427 *  "pNames", in which case all certificates are considered to match this
    428 *  criterion.
    429 *
    430 *  Note that the List returned by this function is immutable.
    431 *
    432 * PARAMETERS:
    433 *  "params"
    434 *      Address of ComCertSelParams object whose path to names criterion
    435 *      (if any) is to be stored. Must be non-NULL.
    436 *  "pNames"
    437 *      Address where object pointer will be stored. Must be non-NULL.
    438 *  "plContext"
    439 *      Platform-specific context pointer.
    440 * THREAD SAFETY:
    441 *  Conditionally Thread Safe
    442 *      (see Thread Safety Definitions in Programmer's Guide)
    443 * RETURNS:
    444 *  Returns NULL if the function succeeds.
    445 *  Returns a CertSelector Error if the function fails in a non-fatal way.
    446 *  Returns a Fatal Error if the function fails in an unrecoverable way.
    447 */
    448 PKIX_Error *
    449 PKIX_ComCertSelParams_GetPathToNames(
    450        PKIX_ComCertSelParams *params,
    451        PKIX_List **pNames,  /* list of PKIX_PL_GeneralName */
    452        void *plContext);
    453 
    454 /*
    455 * FUNCTION: PKIX_ComCertSelParams_SetPathToNames
    456 * DESCRIPTION:
    457 *
    458 *  Sets the path to names criterion of the ComCertSelParams object pointed to
    459 *  by "params" using a List of GeneralNames pointed to by "names". In order to
    460 *  match against this criterion, a certificate must not include name
    461 *  constraints that would prohibit building a path to the criterion's
    462 *  specified names.
    463 *
    464 *  If "names" is NULL, all certificates are considered to match this
    465 *  criterion.
    466 *
    467 * PARAMETERS:
    468 *  "params"
    469 *      Address of ComCertSelParams object whose path to names criterion
    470 *      is to be set. Must be non-NULL.
    471 *  "names"
    472 *      Address of List of GeneralNames used to set the criterion
    473 *      (or NULL to disable the criterion).
    474 *  "plContext"
    475 *      Platform-specific context pointer.
    476 * THREAD SAFETY:
    477 *  Not Thread Safe - assumes exclusive access to "params"
    478 *  (see Thread Safety Definitions in Programmer's Guide)
    479 * RETURNS:
    480 *  Returns NULL if the function succeeds.
    481 *  Returns a CertSelector Error if the function fails in a non-fatal way.
    482 *  Returns a Fatal Error if the function fails in an unrecoverable way.
    483 */
    484 PKIX_Error *
    485 PKIX_ComCertSelParams_SetPathToNames(
    486        PKIX_ComCertSelParams *params,
    487        PKIX_List *names,    /* list of PKIX_PL_GeneralName */
    488        void *plContext);
    489 
    490 /*
    491 * FUNCTION: PKIX_ComCertSelParams_AddPathToName
    492 * DESCRIPTION:
    493 *
    494 *  Adds to the path to names criterion of the ComCertSelParams object pointed
    495 *  to by "params" using the GeneralName pointed to by "pathToName". In order
    496 *  to match against this criterion, a certificate must not include name
    497 *  constraints that would prohibit building a path to the criterion's
    498 *  specified names.
    499 *
    500 * PARAMETERS:
    501 *  "params"
    502 *      Address of ComCertSelParams object whose path to names criterion is to
    503 *      be added to. Must be non-NULL.
    504 *  "pathToName"
    505 *      Address of GeneralName to be added.
    506 *  "plContext"
    507 *      Platform-specific context pointer.
    508 * THREAD SAFETY:
    509 *  Not Thread Safe - assumes exclusive access to "params"
    510 *  (see Thread Safety Definitions in Programmer's Guide)
    511 * RETURNS:
    512 *  Returns NULL if the function succeeds.
    513 *  Returns a CertSelector Error if the function fails in a non-fatal way.
    514 *  Returns a Fatal Error if the function fails in an unrecoverable way.
    515 */
    516 PKIX_Error *
    517 PKIX_ComCertSelParams_AddPathToName(
    518        PKIX_ComCertSelParams *params,
    519        PKIX_PL_GeneralName *pathToName,
    520        void *plContext);
    521 
    522 /*
    523 * FUNCTION: PKIX_ComCertSelParams_GetAuthorityKeyIdentifier
    524 * DESCRIPTION:
    525 *
    526 *  Retrieves a pointer to the ByteArray (if any) representing the authority
    527 *  key identifier criterion that is set in the ComCertSelParams object
    528 *  pointed to by "params" and stores it at "pAuthKeyId". In order to match
    529 *  against this criterion, a certificate must contain an
    530 *  AuthorityKeyIdentifier extension whose value matches the criterion's
    531 *  authority key identifier value.
    532 *
    533 *  If "params" does not have this criterion set, this function stores NULL at
    534 *  "pAuthKeyId", in which case all certificates are considered to match this
    535 *  criterion.
    536 *
    537 * PARAMETERS:
    538 *  "params"
    539 *      Address of ComCertSelParams object whose authority key identifier
    540 *      criterion (if any) is to be stored. Must be non-NULL.
    541 *  "pAuthKeyId"
    542 *      Address where object pointer will be stored. Must be non-NULL.
    543 *  "plContext"
    544 *      Platform-specific context pointer.
    545 * THREAD SAFETY:
    546 *  Conditionally Thread Safe
    547 *      (see Thread Safety Definitions in Programmer's Guide)
    548 * RETURNS:
    549 *  Returns NULL if the function succeeds.
    550 *  Returns a CertSelector Error if the function fails in a non-fatal way.
    551 *  Returns a Fatal Error if the function fails in an unrecoverable way.
    552 */
    553 PKIX_Error *
    554 PKIX_ComCertSelParams_GetAuthorityKeyIdentifier(
    555        PKIX_ComCertSelParams *params,
    556        PKIX_PL_ByteArray **pAuthKeyId,
    557        void *plContext);
    558 
    559 /*
    560 * FUNCTION: PKIX_ComCertSelParams_SetAuthorityKeyIdentifier
    561 * DESCRIPTION:
    562 *
    563 *  Sets the authority key identifier criterion of the ComCertSelParams object
    564 *  pointed to by "params" to the ByteArray pointed to by "authKeyId". In
    565 *  order to match against this criterion, a certificate must contain an
    566 *  AuthorityKeyIdentifier extension whose value matches the criterion's
    567 *  authority key identifier value.
    568 *
    569 * PARAMETERS:
    570 *  "params"
    571 *      Address of ComCertSelParams object whose authority key identifier
    572 *      criterion is to be set. Must be non-NULL.
    573 *  "authKeyId"
    574 *      Address of ByteArray used to set the criterion
    575 *  "plContext"
    576 *      Platform-specific context pointer.
    577 * THREAD SAFETY:
    578 *  Not Thread Safe - assumes exclusive access to "params"
    579 *  (see Thread Safety Definitions in Programmer's Guide)
    580 * RETURNS:
    581 *  Returns NULL if the function succeeds.
    582 *  Returns a CertSelector Error if the function fails in a non-fatal way.
    583 *  Returns a Fatal Error if the function fails in an unrecoverable way.
    584 */
    585 PKIX_Error *
    586 PKIX_ComCertSelParams_SetAuthorityKeyIdentifier(
    587        PKIX_ComCertSelParams *params,
    588        PKIX_PL_ByteArray *authKeyId,
    589        void *plContext);
    590 
    591 /*
    592 * FUNCTION: PKIX_ComCertSelParams_GetSubjKeyIdentifier
    593 * DESCRIPTION:
    594 *
    595 *  Retrieves a pointer to the ByteArray (if any) representing the subject key
    596 *  identifier criterion that is set in the ComCertSelParams object pointed to
    597 *  by "params" and stores it at "pSubjKeyId". In order to match against this
    598 *  criterion, a certificate must contain a SubjectKeyIdentifier extension
    599 *  whose value matches the criterion's subject key identifier value.
    600 *
    601 *  If "params" does not have this criterion set, this function stores NULL at
    602 *  "pSubjKeyId", in which case all certificates are considered to match this
    603 *  criterion.
    604 *
    605 * PARAMETERS:
    606 *  "params"
    607 *      Address of ComCertSelParams object whose subject key identifier
    608 *      criterion (if any) is to be stored. Must be non-NULL.
    609 *  "pSubjKeyId"
    610 *      Address where object pointer will be stored. Must be non-NULL.
    611 *  "plContext"
    612 *      Platform-specific context pointer.
    613 * THREAD SAFETY:
    614 *  Conditionally Thread Safe
    615 *      (see Thread Safety Definitions in Programmer's Guide)
    616 * RETURNS:
    617 *  Returns NULL if the function succeeds.
    618 *  Returns a CertSelector Error if the function fails in a non-fatal way.
    619 *  Returns a Fatal Error if the function fails in an unrecoverable way.
    620 */
    621 PKIX_Error *
    622 PKIX_ComCertSelParams_GetSubjKeyIdentifier(
    623        PKIX_ComCertSelParams *params,
    624        PKIX_PL_ByteArray **pSubjKeyId,
    625        void *plContext);
    626 
    627 /*
    628 * FUNCTION: PKIX_ComCertSelParams_SetSubjKeyIdentifier
    629 * DESCRIPTION:
    630 *
    631 *  Sets the subject key identifier criterion of the ComCertSelParams object
    632 *  pointed to by "params" using a ByteArray pointed to by "subjKeyId". In
    633 *  order to match against this criterion, a certificate must contain an
    634 *  SubjectKeyIdentifier extension whose value matches the criterion's subject
    635 *  key identifier value.
    636 *
    637 * PARAMETERS:
    638 *  "params"
    639 *      Address of ComCertSelParams object whose subject key identifier
    640 *      criterion is to be set. Must be non-NULL.
    641 *  "subjKeyId"
    642 *      Address of ByteArray used to set the criterion
    643 *  "plContext"
    644 *      Platform-specific context pointer.
    645 * THREAD SAFETY:
    646 *  Not Thread Safe - assumes exclusive access to "params"
    647 *  (see Thread Safety Definitions in Programmer's Guide)
    648 * RETURNS:
    649 *  Returns NULL if the function succeeds.
    650 *  Returns a CertSelector Error if the function fails in a non-fatal way.
    651 *  Returns a Fatal Error if the function fails in an unrecoverable way.
    652 */
    653 PKIX_Error *
    654 PKIX_ComCertSelParams_SetSubjKeyIdentifier(
    655        PKIX_ComCertSelParams *params,
    656        PKIX_PL_ByteArray *subKeyId,
    657        void *plContext);
    658 
    659 /*
    660 * FUNCTION: PKIX_ComCertSelParams_GetSubjPubKey
    661 * DESCRIPTION:
    662 *
    663 *  Retrieves a pointer to the PublicKey (if any) representing the subject
    664 *  public key criterion that is set in the ComCertSelParams object pointed to
    665 *  by "params" and stores it at "pPubKey". In order to match against this
    666 *  criterion, a certificate must contain a SubjectPublicKey that matches the
    667 *  criterion's public key.
    668 *
    669 *  If "params" does not have this criterion set, this function stores NULL at
    670 *  "pPubKey", in which case all certificates are considered to match this
    671 *  criterion.
    672 *
    673 * PARAMETERS:
    674 *  "params"
    675 *      Address of ComCertSelParams object whose subject public key criterion
    676 *      (if any) is to be stored. Must be non-NULL.
    677 *  "pPubKey"
    678 *      Address where object pointer will be stored. Must be non-NULL.
    679 *  "plContext"
    680 *      Platform-specific context pointer.
    681 * THREAD SAFETY:
    682 *  Conditionally Thread Safe
    683 *      (see Thread Safety Definitions in Programmer's Guide)
    684 * RETURNS:
    685 *  Returns NULL if the function succeeds.
    686 *  Returns a CertSelector Error if the function fails in a non-fatal way.
    687 *  Returns a Fatal Error if the function fails in an unrecoverable way.
    688 */
    689 PKIX_Error *
    690 PKIX_ComCertSelParams_GetSubjPubKey(
    691        PKIX_ComCertSelParams *params,
    692        PKIX_PL_PublicKey **pPubKey,
    693        void *plContext);
    694 
    695 /*
    696 * FUNCTION: PKIX_ComCertSelParams_SetSubjPubKey
    697 * DESCRIPTION:
    698 *
    699 *  Sets the subject public key criterion of the ComCertSelParams object
    700 *  pointed to by "params" using a PublicKey pointed to by "pubKey". In order
    701 *  to match against this criterion, a certificate must contain a
    702 *  SubjectPublicKey that matches the criterion's public key.
    703 *
    704 * PARAMETERS:
    705 *  "params"
    706 *      Address of ComCertSelParams object whose subject public key
    707 *      criterion is to be set. Must be non-NULL.
    708 *  "pubKey"
    709 *      Address of PublicKey used to set the criterion
    710 *  "plContext"
    711 *      Platform-specific context pointer.
    712 * THREAD SAFETY:
    713 *  Not Thread Safe - assumes exclusive access to "params"
    714 *  (see Thread Safety Definitions in Programmer's Guide)
    715 * RETURNS:
    716 *  Returns NULL if the function succeeds.
    717 *  Returns a CertSelector Error if the function fails in a non-fatal way.
    718 *  Returns a Fatal Error if the function fails in an unrecoverable way.
    719 */
    720 PKIX_Error *
    721 PKIX_ComCertSelParams_SetSubjPubKey(
    722        PKIX_ComCertSelParams *params,
    723        PKIX_PL_PublicKey *pubKey,
    724        void *plContext);
    725 
    726 /*
    727 * FUNCTION: PKIX_ComCertSelParams_GetSubjPKAlgId
    728 * DESCRIPTION:
    729 *
    730 *  Retrieves a pointer to the OID (if any) representing the subject public key
    731 *  algorithm identifier criterion that is set in the ComCertSelParams object
    732 *  pointed to by "params" and stores it at "pPubKey". In order to match
    733 *  against this criterion, a certificate must contain a SubjectPublicKey with
    734 *  an algorithm that matches the criterion's algorithm.
    735 *
    736 *  If "params" does not have this criterion set, this function stores NULL at
    737 *  "pAlgId", in which case all certificates are considered to match this
    738 *  criterion.
    739 *
    740 * PARAMETERS:
    741 *  "params"
    742 *      Address of ComCertSelParams object whose subject public key algorithm
    743 *      identifier (if any) is to be stored. Must be non-NULL.
    744 *  "pAlgId"
    745 *      Address where object pointer will be stored. Must be non-NULL.
    746 *  "plContext"
    747 *      Platform-specific context pointer.
    748 * THREAD SAFETY:
    749 *  Conditionally Thread Safe
    750 *      (see Thread Safety Definitions in Programmer's Guide)
    751 * RETURNS:
    752 *  Returns NULL if the function succeeds.
    753 *  Returns a CertSelector Error if the function fails in a non-fatal way.
    754 *  Returns a Fatal Error if the function fails in an unrecoverable way.
    755 */
    756 PKIX_Error *
    757 PKIX_ComCertSelParams_GetSubjPKAlgId(
    758        PKIX_ComCertSelParams *params,
    759        PKIX_PL_OID **pAlgId,
    760        void *plContext);
    761 
    762 /*
    763 * FUNCTION: PKIX_ComCertSelParams_SetSubjPKAlgId
    764 * DESCRIPTION:
    765 *
    766 *  Sets the subject public key algorithm identifier criterion of the
    767 *  ComCertSelParams object pointed to by "params" using an OID pointed to by
    768 *  "algId". In order to match against this criterion, a certificate must
    769 *  contain a SubjectPublicKey with an algorithm that matches the criterion's
    770 *  algorithm.
    771 *
    772 *  If "algId" is NULL, all certificates are considered to match this
    773 *  criterion.
    774 *
    775 * PARAMETERS:
    776 *  "params"
    777 *      Address of ComCertSelParams object whose subject public key
    778 *      algorithm identifier criterion is to be set. Must be non-NULL.
    779 *  "algId"
    780 *      Address of OID used to set criterion
    781 *      (or NULL to disable the criterion).
    782 *  "plContext"
    783 *      Platform-specific context pointer.
    784 * THREAD SAFETY:
    785 *  Not Thread Safe - assumes exclusive access to "params"
    786 *  (see Thread Safety Definitions in Programmer's Guide)
    787 * RETURNS:
    788 *  Returns NULL if the function succeeds.
    789 *  Returns a CertSelector Error if the function fails in a non-fatal way.
    790 *  Returns a Fatal Error if the function fails in an unrecoverable way.
    791 */
    792 PKIX_Error *
    793 PKIX_ComCertSelParams_SetSubjPKAlgId(
    794        PKIX_ComCertSelParams *params,
    795        PKIX_PL_OID *algId,
    796        void *plContext);
    797 
    798 /*
    799 * FUNCTION: PKIX_ComCertSelParams_GetBasicConstraints
    800 * DESCRIPTION:
    801 *
    802 *  Retrieves a pointer to the minimum path length (if any) representing the
    803 *  basic constraints criterion that is set in the ComCertSelParams object
    804 *  pointed to by "params" and stores it at "pMinPathLength". In order to
    805 *  match against this criterion, there are several possibilities.
    806 *
    807 *  1) If the criterion's minimum path length is greater than or equal to zero,
    808 *  a certificate must include a BasicConstraints extension with a pathLen of
    809 *  at least this value.
    810 *
    811 *  2) If the criterion's minimum path length is -2, a certificate must be an
    812 *  end-entity certificate.
    813 *
    814 *  3) If the criterion's minimum path length is -1, no basic constraints check
    815 *  is done and all certificates are considered to match this criterion.
    816 *
    817 *  The semantics of other values of the criterion's minimum path length are
    818 *  undefined but may be defined in future versions of the API.
    819 *
    820 *  If "params" does not have this criterion set, this function stores -1 at
    821 *  "pMinPathLength", in which case all certificates are considered to match
    822 *  this criterion.
    823 *
    824 * PARAMETERS:
    825 *  "params"
    826 *      Address of ComCertSelParams object whose basic constraints criterion
    827 *      (if any) is to be stored. Must be non-NULL.
    828 *  "pMinPathLength"
    829 *      Address where PKIX_Int32 will be stored. Must be non-NULL.
    830 *  "plContext"
    831 *      Platform-specific context pointer.
    832 * THREAD SAFETY:
    833 *  Conditionally Thread Safe
    834 *      (see Thread Safety Definitions in Programmer's Guide)
    835 * RETURNS:
    836 *  Returns NULL if the function succeeds.
    837 *  Returns a CertSelector Error if the function fails in a non-fatal way.
    838 *  Returns a Fatal Error if the function fails in an unrecoverable way.
    839 */
    840 PKIX_Error *
    841 PKIX_ComCertSelParams_GetBasicConstraints(
    842        PKIX_ComCertSelParams *params,
    843        PKIX_Int32 *pMinPathLength,
    844        void *plContext);
    845 
    846 /*
    847 * FUNCTION: PKIX_ComCertSelParams_SetBasicConstraints
    848 * DESCRIPTION:
    849 *
    850 *  Sets the basic constraints criterion of the ComCertSelParams object
    851 *  pointed to by "params" using the integer value of "minPathLength". In
    852 *  order to match against this criterion, there are several possibilities.
    853 *
    854 *  1) If the criterion's minimum path length is greater than or equal to zero,
    855 *  a certificate must include a BasicConstraints extension with a pathLen of
    856 *  at least this value.
    857 *
    858 *  2) If the criterion's minimum path length is -2, a certificate must be an
    859 *  end-entity certificate.
    860 *
    861 *  3) If the criterion's minimum path length is -1, no basic constraints check
    862 *  is done and all certificates are considered to match this criterion.
    863 *
    864 *  The semantics of other values of the criterion's minimum path length are
    865 *  undefined but may be defined in future versions of the API.
    866 *
    867 * PARAMETERS:
    868 *  "params"
    869 *      Address of ComCertSelParams object whose basic constraints
    870 *      criterion is to be set. Must be non-NULL.
    871 *  "minPathLength"
    872 *      Value of PKIX_Int32 used to set the criterion
    873 *      (or -1 to disable the criterion).
    874 *  "plContext"
    875 *      Platform-specific context pointer.
    876 * THREAD SAFETY:
    877 *  Not Thread Safe - assumes exclusive access to "params"
    878 *  (see Thread Safety Definitions in Programmer's Guide)
    879 * RETURNS:
    880 *  Returns NULL if the function succeeds.
    881 *  Returns a CertSelector Error if the function fails in a non-fatal way.
    882 *  Returns a Fatal Error if the function fails in an unrecoverable way.
    883 */
    884 PKIX_Error *
    885 PKIX_ComCertSelParams_SetBasicConstraints(
    886        PKIX_ComCertSelParams *params,
    887        PKIX_Int32 minPathLength,
    888        void *plContext);
    889 
    890 /*
    891 * FUNCTION: PKIX_ComCertSelParams_GetCertificate
    892 * DESCRIPTION:
    893 *
    894 *  Retrieves a pointer to the Cert (if any) representing the certificate
    895 *  criterion that is set in the ComCertSelParams object pointed to by
    896 *  "params" and stores it at "pCert". In order to match against this
    897 *  criterion, a certificate must be equal to the criterion's certificate. If
    898 *  this criterion is specified, it is usually not necessary to specify any
    899 *  other criteria, since this criterion requires an exact certificate match.
    900 *
    901 *  If "params" does not have this criterion set, this function stores NULL at
    902 *  "pCert", in which case all certificates are considered to match this
    903 *  criterion.
    904 *
    905 * PARAMETERS:
    906 *  "params"
    907 *      Address of ComCertSelParams object whose certificate criterion
    908 *      (if any) is to be stored. Must be non-NULL.
    909 *  "pCert"
    910 *      Address where object pointer will be stored. Must be non-NULL.
    911 *  "plContext"
    912 *      Platform-specific context pointer.
    913 * THREAD SAFETY:
    914 *  Conditionally Thread Safe
    915 *      (see Thread Safety Definitions in Programmer's Guide)
    916 * RETURNS:
    917 *  Returns NULL if the function succeeds.
    918 *  Returns a CertSelector Error if the function fails in a non-fatal way.
    919 *  Returns a Fatal Error if the function fails in an unrecoverable way.
    920 */
    921 PKIX_Error *
    922 PKIX_ComCertSelParams_GetCertificate(
    923        PKIX_ComCertSelParams *params,
    924        PKIX_PL_Cert **pCert,
    925        void *plContext);
    926 
    927 /*
    928 * FUNCTION: PKIX_ComCertSelParams_SetCertificate
    929 * DESCRIPTION:
    930 *
    931 *  Sets the certificate criterion of the ComCertSelParams object pointed to by
    932 * "params" using a Cert pointed to by "cert". In order to match against this
    933 *  criterion, a certificate must be equal to the criterion's certificate.
    934 *  If this criterion is specified, it is usually not necessary to specify
    935 *  any other criteria, since this criterion requires an exact certificate
    936 *  match.
    937 *
    938 *  If "cert" is NULL, all certificates are considered to match this criterion.
    939 *
    940 * PARAMETERS:
    941 *  "params"
    942 *      Address of ComCertSelParams object whose certificate criterion is to be
    943 *      set. Must be non-NULL.
    944 *  "cert"
    945 *      Address of Cert used to set the criterion
    946 *      (or NULL to disable the criterion).
    947 *  "plContext"
    948 *      Platform-specific context pointer.
    949 * THREAD SAFETY:
    950 *  Not Thread Safe - assumes exclusive access to "params"
    951 *  (see Thread Safety Definitions in Programmer's Guide)
    952 * RETURNS:
    953 *  Returns NULL if the function succeeds.
    954 *  Returns a CertSelector Error if the function fails in a non-fatal way.
    955 *  Returns a Fatal Error if the function fails in an unrecoverable way.
    956 */
    957 PKIX_Error *
    958 PKIX_ComCertSelParams_SetCertificate(
    959        PKIX_ComCertSelParams *params,
    960        PKIX_PL_Cert *cert,
    961        void *plContext);
    962 
    963 /*
    964 * FUNCTION: PKIX_ComCertSelParams_GetCertificateValid
    965 * DESCRIPTION:
    966 *
    967 *  Retrieves a pointer to the Date (if any) representing the certificate
    968 *  validity criterion that is set in the ComCertSelParams object pointed to by
    969 *  "params" and stores it at "pDate". In order to match against this
    970 *  criterion, a certificate's validity period must include the criterion's
    971 *  Date.
    972 *
    973 *  If "params" does not have this criterion set, this function stores NULL at
    974 *  "pDate", in which case all certificates are considered to match this
    975 *  criterion.
    976 *
    977 * PARAMETERS:
    978 *  "params"
    979 *      Address of ComCertSelParams object whose certificate validity criterion
    980 *      (if any) is to be stored. Must be non-NULL.
    981 *  "pDate"
    982 *      Address where object pointer will be stored. Must be non-NULL.
    983 *  "plContext"
    984 *      Platform-specific context pointer.
    985 * THREAD SAFETY:
    986 *  Conditionally Thread Safe
    987 *      (see Thread Safety Definitions in Programmer's Guide)
    988 * RETURNS:
    989 *  Returns NULL if the function succeeds.
    990 *  Returns a CertSelector Error if the function fails in a non-fatal way.
    991 *  Returns a Fatal Error if the function fails in an unrecoverable way.
    992 */
    993 PKIX_Error *
    994 PKIX_ComCertSelParams_GetCertificateValid(
    995        PKIX_ComCertSelParams *params,
    996        PKIX_PL_Date **pDate,
    997        void *plContext);
    998 
    999 /*
   1000 * FUNCTION: PKIX_ComCertSelParams_SetCertificateValid
   1001 * DESCRIPTION:
   1002 *
   1003 *  Sets the certificate validity criterion of the ComCertSelParams object
   1004 *  pointed to by "params" using a Date pointed to by "date". In order to
   1005 *  match against this criterion, a certificate's validity period must include
   1006 *  the criterion's Date.
   1007 *
   1008 *  If "date" is NULL, all certificates are considered to match this criterion.
   1009 *
   1010 * PARAMETERS:
   1011 *  "params"
   1012 *      Address of ComCertSelParams object whose certificate validity criterion
   1013 *      is to be set. Must be non-NULL.
   1014 *  "date"
   1015 *      Address of Date used to set the criterion
   1016 *      (or NULL to disable the criterion).
   1017 *  "plContext"
   1018 *      Platform-specific context pointer.
   1019 * THREAD SAFETY:
   1020 *  Not Thread Safe - assumes exclusive access to "params"
   1021 *  (see Thread Safety Definitions in Programmer's Guide)
   1022 * RETURNS:
   1023 *  Returns NULL if the function succeeds.
   1024 *  Returns a CertSelector Error if the function fails in a non-fatal way.
   1025 *  Returns a Fatal Error if the function fails in an unrecoverable way.
   1026 */
   1027 PKIX_Error *
   1028 PKIX_ComCertSelParams_SetCertificateValid(
   1029        PKIX_ComCertSelParams *params,
   1030        PKIX_PL_Date *date,
   1031        void *plContext);
   1032 
   1033 /*
   1034 * FUNCTION: PKIX_ComCertSelParams_GetSerialNumber
   1035 * DESCRIPTION:
   1036 *
   1037 *  Retrieves a pointer to the BigInt (if any) representing the serial number
   1038 *  criterion that is set in the ComCertSelParams object pointed to by
   1039 *  "params" and stores it at "pSerialNumber". In order to match against this
   1040 *  criterion, a certificate must have a serial number equal to the
   1041 *  criterion's serial number.
   1042 *
   1043 *  If "params" does not have this criterion set, this function stores NULL at
   1044 *  "pSerialNumber", in which case all certificates are considered to match
   1045 *  this criterion.
   1046 *
   1047 * PARAMETERS:
   1048 *  "params"
   1049 *      Address of ComCertSelParams object whose serial number criterion
   1050 *      (if any) is to be stored. Must be non-NULL.
   1051 *  "pSerialNumber"
   1052 *      Address where object pointer will be stored. Must be non-NULL.
   1053 *  "plContext"
   1054 *      Platform-specific context pointer.
   1055 * THREAD SAFETY:
   1056 *  Conditionally Thread Safe
   1057 *      (see Thread Safety Definitions in Programmer's Guide)
   1058 * RETURNS:
   1059 *  Returns NULL if the function succeeds.
   1060 *  Returns a CertSelector Error if the function fails in a non-fatal way.
   1061 *  Returns a Fatal Error if the function fails in an unrecoverable way.
   1062 */
   1063 PKIX_Error *
   1064 PKIX_ComCertSelParams_GetSerialNumber(
   1065        PKIX_ComCertSelParams *params,
   1066        PKIX_PL_BigInt **pSerialNumber,
   1067        void *plContext);
   1068 
   1069 /*
   1070 * FUNCTION: PKIX_ComCertSelParams_SetSerialNumber
   1071 * DESCRIPTION:
   1072 *
   1073 *  Sets the serial number criterion of the ComCertSelParams object pointed to
   1074 *  by "params" using a BigInt pointed to by "serialNumber". In order to match
   1075 *  against this criterion, a certificate must have a serial number equal to
   1076 *  the criterion's serial number.
   1077 *
   1078 *  If "serialNumber" is NULL, all certificates are considered to match this
   1079 *  criterion.
   1080 *
   1081 * PARAMETERS:
   1082 *  "params"
   1083 *      Address of ComCertSelParams object whose serial number criterion is to
   1084 *      be set. Must be non-NULL.
   1085 *  "serialNumber"
   1086 *      Address of BigInt used to set the criterion
   1087 *      (or NULL to disable the criterion).
   1088 *  "plContext"
   1089 *      Platform-specific context pointer.
   1090 * THREAD SAFETY:
   1091 *  Not Thread Safe - assumes exclusive access to "params"
   1092 *  (see Thread Safety Definitions in Programmer's Guide)
   1093 * RETURNS:
   1094 *  Returns NULL if the function succeeds.
   1095 *  Returns a CertSelector Error if the function fails in a non-fatal way.
   1096 *  Returns a Fatal Error if the function fails in an unrecoverable way.
   1097 */
   1098 PKIX_Error *
   1099 PKIX_ComCertSelParams_SetSerialNumber(
   1100        PKIX_ComCertSelParams *params,
   1101        PKIX_PL_BigInt *serialNumber,
   1102        void *plContext);
   1103 
   1104 /*
   1105 * FUNCTION: PKIX_ComCertSelParams_GetVersion
   1106 * DESCRIPTION:
   1107 *
   1108 *  Retrieves a PKIX_UInt32 (if any) representing the version criterion that is
   1109 *  set in the ComCertSelParams object pointed to by "params" and stores it at
   1110 *  "pVersion". In order to match against this criterion, a certificate's
   1111 *  version must be equal to the criterion's version.
   1112 *
   1113 *  The version number will either be 0, 1, or 2 (corresponding to
   1114 *  v1, v2, or v3, respectively).
   1115 *
   1116 *  If "params" does not have this criterion set, this function stores
   1117 *  0xFFFFFFFF at "pVersion", in which case all certificates are considered
   1118 *  to match this criterion.
   1119 *
   1120 * PARAMETERS:
   1121 *  "params"
   1122 *      Address of ComCertSelParams object whose version criterion (if any) is
   1123 *      to be stored. Must be non-NULL.
   1124 *  "pVersion"
   1125 *      Address where PKIX_Int32 will be stored. Must be non-NULL.
   1126 *  "plContext"
   1127 *      Platform-specific context pointer.
   1128 * THREAD SAFETY:
   1129 *  Conditionally Thread Safe
   1130 *      (see Thread Safety Definitions in Programmer's Guide)
   1131 * RETURNS:
   1132 *  Returns NULL if the function succeeds.
   1133 *  Returns a CertSelector Error if the function fails in a non-fatal way.
   1134 *  Returns a Fatal Error if the function fails in an unrecoverable way.
   1135 */
   1136 PKIX_Error *
   1137 PKIX_ComCertSelParams_GetVersion(
   1138        PKIX_ComCertSelParams *params,
   1139        PKIX_UInt32 *pVersion,
   1140        void *plContext);
   1141 
   1142 /*
   1143 * FUNCTION: PKIX_ComCertSelParams_SetVersion
   1144 * DESCRIPTION:
   1145 *
   1146 *  Sets the version criterion of the ComCertSelParams object pointed to by
   1147 *  "params" using the integer value of "version". In order to match against
   1148 *  this criterion, a certificate's version must be equal to the criterion's
   1149 *  version. If the criterion's version is -1, no version check is done and
   1150 *  all certificates are considered to match this criterion.
   1151 *
   1152 * PARAMETERS:
   1153 *  "params"
   1154 *      Address of ComCertSelParams object whose version criterion is to be
   1155 *      set. Must be non-NULL.
   1156 *  "version"
   1157 *      Value of PKIX_Int32 used to set the criterion
   1158 *      (or -1 to disable the criterion).
   1159 *  "plContext"
   1160 *      Platform-specific context pointer.
   1161 * THREAD SAFETY:
   1162 *  Not Thread Safe - assumes exclusive access to "params"
   1163 *  (see Thread Safety Definitions in Programmer's Guide)
   1164 * RETURNS:
   1165 *  Returns NULL if the function succeeds.
   1166 *  Returns a CertSelector Error if the function fails in a non-fatal way.
   1167 *  Returns a Fatal Error if the function fails in an unrecoverable way.
   1168 */
   1169 PKIX_Error *
   1170 PKIX_ComCertSelParams_SetVersion(
   1171        PKIX_ComCertSelParams *params,
   1172        PKIX_Int32 version,
   1173        void *plContext);
   1174 
   1175 
   1176 /*
   1177 * FUNCTION: PKIX_ComCertSelParams_GetKeyUsage
   1178 * DESCRIPTION:
   1179 *
   1180 *  Retrieves a PKIX_UInt32 (if any) representing the key usage criterion that
   1181 *  is set in the ComCertSelParams object pointed to by "params" and stores it
   1182 *  at "pKeyUsage". In order to match against this criterion, a certificate
   1183 *  must allow the criterion's key usage values. Note that a certificate that
   1184 *  has no KeyUsage extension implicity allows all key usages. Note also that
   1185 *  this functions supports a maximum of 32 key usage bits.
   1186 *
   1187 *  If "params" does not have this criterion set, this function stores zero at
   1188 *  "pKeyUsage", in which case all certificates are considered to match this
   1189 *  criterion.
   1190 *
   1191 * PARAMETERS:
   1192 *  "params"
   1193 *      Address of ComCertSelParams object whose key usage criterion (if any)
   1194 *      is to be stored. Must be non-NULL.
   1195 *  "pKeyUsage"
   1196 *      Address where PKIX_UInt32 will be stored. Must not be non-NULL.
   1197 *  "plContext"
   1198 *      Platform-specific context pointer.
   1199 * THREAD SAFETY:
   1200 *  Conditionally Thread Safe
   1201 *      (see Thread Safety Definitions in Programmer's Guide)
   1202 * RETURNS:
   1203 *  Returns NULL if the function succeeds.
   1204 *  Returns a CertSelector Error if the function fails in a non-fatal way.
   1205 *  Returns a Fatal Error if the function fails in an unrecoverable way.
   1206 */
   1207 PKIX_Error *
   1208 PKIX_ComCertSelParams_GetKeyUsage(
   1209        PKIX_ComCertSelParams *params,
   1210        PKIX_UInt32 *pKeyUsage,
   1211        void *plContext);
   1212 
   1213 /*
   1214 * FUNCTION: PKIX_ComCertSelParams_SetKeyUsage
   1215 * DESCRIPTION:
   1216 *
   1217 *  Sets the key usage criterion of the ComCertSelParams object pointed to by
   1218 *  "params" using the integer value of "keyUsage". In order to match against
   1219 *  this criterion, a certificate must allow the criterion's key usage values.
   1220 *  Note that a certificate that has no KeyUsage extension implicity allows
   1221 *  all key usages. Note also that this functions supports a maximum of 32 key
   1222 *  usage bits.
   1223 *
   1224 *  If the criterion's key usage value is zero, no key usage check is done and
   1225 *  all certificates are considered to match this criterion.
   1226 *
   1227 * PARAMETERS:
   1228 *  "params"
   1229 *      Address of ComCertSelParams object whose key usage criterion is to be
   1230 *      set. Must be non-NULL.
   1231 *  "keyUsage"
   1232 *      Value of PKIX_Int32 used to set the criterion
   1233 *      (or zero to disable the criterion).
   1234 *  "plContext"
   1235 *      Platform-specific context pointer.
   1236 * THREAD SAFETY:
   1237 *  Not Thread Safe - assumes exclusive access to "params"
   1238 *  (see Thread Safety Definitions in Programmer's Guide)
   1239 * RETURNS:
   1240 *  Returns NULL if the function succeeds.
   1241 *  Returns a CertSelector Error if the function fails in a non-fatal way.
   1242 *  Returns a Fatal Error if the function fails in an unrecoverable way.
   1243 */
   1244 PKIX_Error *
   1245 PKIX_ComCertSelParams_SetKeyUsage(
   1246        PKIX_ComCertSelParams *params,
   1247        PKIX_UInt32 keyUsage,
   1248        void *plContext);
   1249 
   1250 /*
   1251 * FUNCTION: PKIX_ComCertSelParams_GetExtendedKeyUsage
   1252 * DESCRIPTION:
   1253 *
   1254 *  Retrieves a pointer to the List of OIDs (if any) representing the extended
   1255 *  key usage criterion that is set in the ComCertSelParams object pointed to
   1256 *  by "params" and stores it at "pExtKeyUsage". In order to match against this
   1257 *  criterion, a certificate's ExtendedKeyUsage extension must allow the
   1258 *  criterion's extended key usages. Note that a certificate that has no
   1259 *  ExtendedKeyUsage extension implicity allows all key purposes.
   1260 *
   1261 *  If "params" does not have this criterion set, this function stores NULL at
   1262 *  "pExtKeyUsage", in which case all certificates are considered to match
   1263 *  this criterion.
   1264 *
   1265 *  Note that the List returned by this function is immutable.
   1266 *
   1267 * PARAMETERS:
   1268 *  "params"
   1269 *      Address of ComCertSelParams object whose extended key usage criterion
   1270 *      (if any) is to be stored. Must be non-NULL.
   1271 *  "pExtKeyUsage"
   1272 *      Address where object pointer will be stored. Must be non-NULL.
   1273 *  "plContext"
   1274 *      Platform-specific context pointer.
   1275 * THREAD SAFETY:
   1276 *  Conditionally Thread Safe
   1277 *      (see Thread Safety Definitions in Programmer's Guide)
   1278 * RETURNS:
   1279 *  Returns NULL if the function succeeds.
   1280 *  Returns a CertSelector Error if the function fails in a non-fatal way.
   1281 *  Returns a Fatal Error if the function fails in an unrecoverable way.
   1282 */
   1283 PKIX_Error *
   1284 PKIX_ComCertSelParams_GetExtendedKeyUsage(
   1285        PKIX_ComCertSelParams *params,
   1286        PKIX_List **pExtKeyUsage, /* list of PKIX_PL_OID */
   1287        void *plContext);
   1288 
   1289 /*
   1290 * FUNCTION: PKIX_ComCertSelParams_SetExtendedKeyUsage
   1291 * DESCRIPTION:
   1292 *
   1293 *  Sets the extended key usage criterion of the ComCertSelParams object
   1294 *  pointed to by "params" using a List of OIDs pointed to by "extKeyUsage".
   1295 *  In order to match against this criterion, a certificate's ExtendedKeyUsage
   1296 *  extension must allow the criterion's extended key usages. Note that a
   1297 *  certificate that has no ExtendedKeyUsage extension implicitly allows all
   1298 *  key purposes.
   1299 *
   1300 *  If "extKeyUsage" is NULL, all certificates are considered to match this
   1301 *  criterion.
   1302 *
   1303 * PARAMETERS:
   1304 *  "params"
   1305 *      Address of ComCertSelParams object whose extended key usage criterion
   1306 *      is to be set. Must be non-NULL.
   1307 *  "extKeyUsage"
   1308 *      Address of List of OIDs used to set the criterion
   1309 *      (or NULL to disable the criterion).
   1310 *  "plContext"
   1311 *      Platform-specific context pointer.
   1312 * THREAD SAFETY:
   1313 *  Not Thread Safe - assumes exclusive access to "params"
   1314 *  (see Thread Safety Definitions in Programmer's Guide)
   1315 * RETURNS:
   1316 *  Returns NULL if the function succeeds.
   1317 *  Returns a CertSelector Error if the function fails in a non-fatal way.
   1318 *  Returns a Fatal Error if the function fails in an unrecoverable way.
   1319 */
   1320 PKIX_Error *
   1321 PKIX_ComCertSelParams_SetExtendedKeyUsage(
   1322        PKIX_ComCertSelParams *params,
   1323        PKIX_List *extKeyUsage,  /* list of PKIX_PL_OID */
   1324        void *plContext);
   1325 
   1326 /*
   1327 * FUNCTION: PKIX_ComCertSelParams_GetPolicy
   1328 * DESCRIPTION:
   1329 *
   1330 *  Retrieves a pointer to the List of OIDs (if any) representing the policy
   1331 *  criterion that is set in the ComCertSelParams object pointed to by
   1332 *  "params" and stores it at "pPolicy". In order to match against this
   1333 *  criterion, a certificate's CertificatePolicies extension must include at
   1334 *  least one of the criterion's policies. If "params" has this criterion set,
   1335 *  but the List of OIDs is empty, then a certificate's CertificatePolicies
   1336 *  extension must include at least some policy.
   1337 *
   1338 *  If "params" does not have this criterion set, this function stores NULL at
   1339 *  "pPolicy", in which case all certificates are considered to match this
   1340 *  criterion.
   1341 *
   1342 *  Note that the List returned by this function is immutable.
   1343 *
   1344 * PARAMETERS:
   1345 *  "params"
   1346 *      Address of ComCertSelParams object whose policy criterion (if any) is
   1347 *      to be stored. Must be non-NULL.
   1348 *  "pPolicy"
   1349 *      Address where object pointer will be stored. Must be non-NULL.
   1350 *  "plContext"
   1351 *      Platform-specific context pointer.
   1352 * THREAD SAFETY:
   1353 *  Conditionally Thread Safe
   1354 *      (see Thread Safety Definitions in Programmer's Guide)
   1355 * RETURNS:
   1356 *  Returns NULL if the function succeeds.
   1357 *  Returns a CertSelector Error if the function fails in a non-fatal way.
   1358 *  Returns a Fatal Error if the function fails in an unrecoverable way.
   1359 */
   1360 PKIX_Error *
   1361 PKIX_ComCertSelParams_GetPolicy(
   1362        PKIX_ComCertSelParams *params,
   1363        PKIX_List **pPolicy,  /* list of PKIX_PL_OID */
   1364        void *plContext);
   1365 
   1366 /*
   1367 * FUNCTION: PKIX_ComCertSelParams_SetPolicy
   1368 * DESCRIPTION:
   1369 *
   1370 *  Sets the policy criterion of the ComCertSelParams object pointed to by
   1371 *  "params" using a List of OIDs pointed to by "policy". In order to match
   1372 *  against this criterion, a certificate's CertificatePolicies extension must
   1373 *  include at least one of the criterion's policies. If "params" has this
   1374 *  criterion set, but the List of OIDs is empty, then a certificate's
   1375 *  CertificatePolicies extension must include at least some policy.
   1376 *
   1377 *  If "policy" is NULL, all certificates are considered to match this
   1378 *  criterion.
   1379 *
   1380 * PARAMETERS:
   1381 *  "params"
   1382 *      Address of ComCertSelParams object whose policy criterion is to be set.
   1383 *      Must be non-NULL.
   1384 *  "policy"
   1385 *      Address of List of OIDs used to set the criterion
   1386 *      (or NULL to disable the criterion).
   1387 *  "plContext"
   1388 *      Platform-specific context pointer.
   1389 * THREAD SAFETY:
   1390 *  Not Thread Safe - assumes exclusive access to "params"
   1391 *  (see Thread Safety Definitions in Programmer's Guide)
   1392 * RETURNS:
   1393 *  Returns NULL if the function succeeds.
   1394 *  Returns a CertSelector Error if the function fails in a non-fatal way.
   1395 *  Returns a Fatal Error if the function fails in an unrecoverable way.
   1396 */
   1397 PKIX_Error *
   1398 PKIX_ComCertSelParams_SetPolicy(
   1399        PKIX_ComCertSelParams *params,
   1400        PKIX_List *policy,    /* list of PKIX_PL_OID */
   1401        void *plContext);
   1402 
   1403 /*
   1404 * FUNCTION: PKIX_ComCertSelParams_GetIssuer
   1405 * DESCRIPTION:
   1406 *
   1407 *  Retrieves a pointer to the X500Name (if any) representing the issuer
   1408 *  criterion that is set in the ComCertSelParams object pointed to by
   1409 *  "params" and stores it at "pIssuer". In order to match against this
   1410 *  criterion, a certificate's IssuerName must match the criterion's issuer
   1411 *  name.
   1412 *
   1413 *  If "params" does not have this criterion set, this function stores NULL at
   1414 *  "pIssuer", in which case all certificates are considered to match this
   1415 *  criterion.
   1416 *
   1417 * PARAMETERS:
   1418 *  "params"
   1419 *      Address of ComCertSelParams object whose issuer criterion (if any) is
   1420 *      to be stored. Must be non-NULL.
   1421 *  "pIssuer"
   1422 *      Address where object pointer will be stored. Must be non-NULL.
   1423 *  "plContext"
   1424 *      Platform-specific context pointer.
   1425 * THREAD SAFETY:
   1426 *  Conditionally Thread Safe
   1427 *      (see Thread Safety Definitions in Programmer's Guide)
   1428 * RETURNS:
   1429 *  Returns NULL if the function succeeds.
   1430 *  Returns a CertSelector Error if the function fails in a non-fatal way.
   1431 *  Returns a Fatal Error if the function fails in an unrecoverable way.
   1432 */
   1433 PKIX_Error *
   1434 PKIX_ComCertSelParams_GetIssuer(
   1435        PKIX_ComCertSelParams *params,
   1436        PKIX_PL_X500Name **pIssuer,
   1437        void *plContext);
   1438 
   1439 /*
   1440 * FUNCTION: PKIX_ComCertSelParams_SetIssuer
   1441 * DESCRIPTION:
   1442 *
   1443 *  Sets the issuer criterion of the ComCertSelParams object pointed to by
   1444 *  "params" using an X500Name pointed to by "issuer". In order to match
   1445 *  against this criterion, a certificate's IssuerName must match the
   1446 *  criterion's issuer name.
   1447 *
   1448 *  If "issuer" is NULL, all certificates are considered to match this
   1449 *  criterion.
   1450 *
   1451 * PARAMETERS:
   1452 *  "params"
   1453 *      Address of ComCertSelParams object whose issuer criterion is to be set.
   1454 *      Must be non-NULL.
   1455 *  "issuer"
   1456 *      Address of X500Name used to set the criterion
   1457 *      (or NULL to disable the criterion).
   1458 *  "plContext"
   1459 *      Platform-specific context pointer.
   1460 * THREAD SAFETY:
   1461 *  Not Thread Safe - assumes exclusive access to "params"
   1462 *  (see Thread Safety Definitions in Programmer's Guide)
   1463 * RETURNS:
   1464 *  Returns NULL if the function succeeds.
   1465 *  Returns a CertSelector Error if the function fails in a non-fatal way.
   1466 *  Returns a Fatal Error if the function fails in an unrecoverable way.
   1467 */
   1468 PKIX_Error *
   1469 PKIX_ComCertSelParams_SetIssuer(
   1470        PKIX_ComCertSelParams *params,
   1471        PKIX_PL_X500Name *issuer,
   1472        void *plContext);
   1473 
   1474 /*
   1475 * FUNCTION: PKIX_ComCertSelParams_GetSubject
   1476 * DESCRIPTION:
   1477 *
   1478 *  Retrieves a pointer to the X500Name (if any) representing the subject
   1479 *  criterion that is set in the ComCertSelParams object pointed to by
   1480 *  "params" and stores it at "pSubject". In order to match against this
   1481 *  criterion, a certificate's SubjectName must match the criterion's subject
   1482 *  name.
   1483 *
   1484 *  If "params" does not have this criterion set, this function stores NULL at
   1485 *  "pSubject", in which case all certificates are considered to match this
   1486 *  criterion.
   1487 *
   1488 * PARAMETERS:
   1489 *  "params"
   1490 *      Address of ComCertSelParams object whose subject criterion (if any) is
   1491 *      to be stored. Must be non-NULL.
   1492 *  "pSubject"
   1493 *      Address where object pointer will be stored. Must be non-NULL.
   1494 *  "plContext"
   1495 *      Platform-specific context pointer.
   1496 * THREAD SAFETY:
   1497 *  Conditionally Thread Safe
   1498 *      (see Thread Safety Definitions in Programmer's Guide)
   1499 * RETURNS:
   1500 *  Returns NULL if the function succeeds.
   1501 *  Returns a CertSelector Error if the function fails in a non-fatal way.
   1502 *  Returns a Fatal Error if the function fails in an unrecoverable way.
   1503 */
   1504 PKIX_Error *
   1505 PKIX_ComCertSelParams_GetSubject(
   1506        PKIX_ComCertSelParams *params,
   1507        PKIX_PL_X500Name **pSubject,
   1508        void *plContext);
   1509 
   1510 /*
   1511 * FUNCTION: PKIX_ComCertSelParams_SetSubject
   1512 * DESCRIPTION:
   1513 *
   1514 *  Sets the subject criterion of the ComCertSelParams object pointed to by
   1515 *  "params" using an X500Name pointed to by "subject". In order to match
   1516 *  against this criterion, a certificate's SubjectName must match the
   1517 *  criterion's subject name.
   1518 *
   1519 *  If "subject" is NULL, all certificates are considered to match this
   1520 *  criterion.
   1521 *
   1522 * PARAMETERS:
   1523 *  "params"
   1524 *      Address of ComCertSelParams object whose subject criterion is to be
   1525 *      set. Must be non-NULL.
   1526 *  "subject"
   1527 *      Address of X500Name used to set the criterion
   1528 *      (or NULL to disable the criterion).
   1529 *  "plContext"
   1530 *      Platform-specific context pointer.
   1531 * THREAD SAFETY:
   1532 *  Not Thread Safe - assumes exclusive access to "params"
   1533 *  (see Thread Safety Definitions in Programmer's Guide)
   1534 * RETURNS:
   1535 *  Returns NULL if the function succeeds.
   1536 *  Returns a CertSelector Error if the function fails in a non-fatal way.
   1537 *  Returns a Fatal Error if the function fails in an unrecoverable way.
   1538 */
   1539 PKIX_Error *
   1540 PKIX_ComCertSelParams_SetSubject(
   1541        PKIX_ComCertSelParams *params,
   1542        PKIX_PL_X500Name *subject,
   1543        void *plContext);
   1544 
   1545 /*
   1546 * FUNCTION: PKIX_ComCertSelParams_GetSubjectAsByteArray
   1547 * DESCRIPTION:
   1548 *
   1549 *  Retrieves a pointer to the ByteArray (if any) representing the subject
   1550 *  criterion that is set in the ComCertSelParams object pointed to by
   1551 *  "params" and stores it at "pSubject". In order to match against this
   1552 *  criterion, a certificate's SubjectName must match the criterion's subject
   1553 *  name.
   1554 *
   1555 *  If "params" does not have this criterion set, this function stores NULL at
   1556 *  "pSubject", in which case all certificates are considered to match this
   1557 *  criterion.
   1558 *
   1559 * PARAMETERS:
   1560 *  "params"
   1561 *      Address of ComCertSelParams object whose subject criterion (if any) is
   1562 *      to be stored. Must be non-NULL.
   1563 *  "pSubject"
   1564 *      Address where object pointer will be stored. Must be non-NULL.
   1565 *  "plContext"
   1566 *      Platform-specific context pointer.
   1567 * THREAD SAFETY:
   1568 *  Conditionally Thread Safe
   1569 *      (see Thread Safety Definitions in Programmer's Guide)
   1570 * RETURNS:
   1571 *  Returns NULL if the function succeeds.
   1572 *  Returns a CertSelector Error if the function fails in a non-fatal way.
   1573 *  Returns a Fatal Error if the function fails in an unrecoverable way.
   1574 */
   1575 PKIX_Error *
   1576 PKIX_ComCertSelParams_GetSubjectAsByteArray(
   1577        PKIX_ComCertSelParams *params,
   1578        PKIX_PL_ByteArray **pSubject,
   1579        void *plContext);
   1580 
   1581 /*
   1582 * FUNCTION: PKIX_ComCertSelParams_SetSubjectAsByteArray
   1583 * DESCRIPTION:
   1584 *
   1585 *  Sets the subject criterion of the ComCertSelParams object pointed to by
   1586 *  "params" using a ByteArray pointed to by "subject". In order to match
   1587 *  against this criterion, a certificate's SubjectName must match the
   1588 *  criterion's subject name.
   1589 *
   1590 *  If "subject" is NULL, all certificates are considered to match this
   1591 *  criterion.
   1592 *
   1593 * PARAMETERS:
   1594 *  "params"
   1595 *      Address of ComCertSelParams object whose subject criterion is to be
   1596 *      set. Must be non-NULL.
   1597 *  "subject"
   1598 *      Address of ByteArray used to set the criterion
   1599 *      (or NULL to disable the criterion).
   1600 *  "plContext"
   1601 *      Platform-specific context pointer.
   1602 * THREAD SAFETY:
   1603 *  Not Thread Safe - assumes exclusive access to "params"
   1604 *  (see Thread Safety Definitions in Programmer's Guide)
   1605 * RETURNS:
   1606 *  Returns NULL if the function succeeds.
   1607 *  Returns a CertSelector Error if the function fails in a non-fatal way.
   1608 *  Returns a Fatal Error if the function fails in an unrecoverable way.
   1609 */
   1610 PKIX_Error *
   1611 PKIX_ComCertSelParams_SetSubjectAsByteArray(
   1612        PKIX_ComCertSelParams *params,
   1613        PKIX_PL_ByteArray *subject,
   1614        void *plContext);
   1615 
   1616 /*
   1617 * FUNCTION: PKIX_ComCertSelParams_GetNameConstraints
   1618 * DESCRIPTION:
   1619 *
   1620 *  Retrieves a pointer to the X500Name (if any) representing the name
   1621 *  constraints criterion that is set in the ComCertSelParams object pointed
   1622 *  to by "params" and stores it at "pConstraints". In order to match against
   1623 *  this criterion, a certificate's subject and subject alternative names must
   1624 *  be allowed by the criterion's name constraints.
   1625 *
   1626 *  If "params" does not have this criterion set, this function stores NULL at
   1627 *  "pConstraints", in which case all certificates are considered to match
   1628 *  this criterion.
   1629 *
   1630 * PARAMETERS:
   1631 *  "params"
   1632 *      Address of ComCertSelParams object whose name constraints criterion
   1633 *      (if any) is to be stored. Must be non-NULL.
   1634 *  "pConstraints"
   1635 *      Address where object pointer will be stored. Must be non-NULL.
   1636 *  "plContext"
   1637 *      Platform-specific context pointer.
   1638 * THREAD SAFETY:
   1639 *  Conditionally Thread Safe
   1640 *      (see Thread Safety Definitions in Programmer's Guide)
   1641 * RETURNS:
   1642 *  Returns NULL if the function succeeds.
   1643 *  Returns a CertSelector Error if the function fails in a non-fatal way.
   1644 *  Returns a Fatal Error if the function fails in an unrecoverable way.
   1645 */
   1646 PKIX_Error *
   1647 PKIX_ComCertSelParams_GetNameConstraints(
   1648        PKIX_ComCertSelParams *params,
   1649        PKIX_PL_CertNameConstraints **pConstraints,
   1650        void *plContext);
   1651 
   1652 /*
   1653 * FUNCTION: PKIX_ComCertSelParams_SetNameConstraints
   1654 * DESCRIPTION:
   1655 *
   1656 *  Sets the name constraints criterion of the ComCertSelParams object pointed
   1657 *  to by "params" using the CertNameConstraints pointed to by "constraints".
   1658 *  In order to match against this criterion, a certificate's subject and
   1659 *  subject alternative names must be allowed by the criterion's name
   1660 *  constraints.
   1661 *
   1662 *  If "constraints" is NULL, all certificates are considered to match this
   1663 *  criterion.
   1664 *
   1665 * PARAMETERS:
   1666 *  "params"
   1667 *      Address of ComCertSelParams object whose name constraints criterion is
   1668 *      to be set. Must be non-NULL.
   1669 *  "constraints"
   1670 *      Address of CertNameConstraints used to set the criterion
   1671 *      (or NULL to disable the criterion).
   1672 *  "plContext"
   1673 *      Platform-specific context pointer.
   1674 * THREAD SAFETY:
   1675 *  Not Thread Safe - assumes exclusive access to "params"
   1676 *  (see Thread Safety Definitions in Programmer's Guide)
   1677 * RETURNS:
   1678 *  Returns NULL if the function succeeds.
   1679 *  Returns a CertSelector Error if the function fails in a non-fatal way.
   1680 *  Returns a Fatal Error if the function fails in an unrecoverable way.
   1681 */
   1682 PKIX_Error *
   1683 PKIX_ComCertSelParams_SetNameConstraints(
   1684        PKIX_ComCertSelParams *params,
   1685        PKIX_PL_CertNameConstraints *constraints,
   1686        void *plContext);
   1687 
   1688 /*
   1689 * FUNCTION: PKIX_ComCertSelParams_GetMatchAllSubjAltNames
   1690 * DESCRIPTION:
   1691 *
   1692 *  Checks whether the ComCertSelParams object pointed to by "params" indicate
   1693 *  that all subject alternative names are to be matched and stores the Boolean
   1694 *  result at "pMatch". This Boolean value determines the behavior of the
   1695 *  subject alternative names criterion.
   1696 *
   1697 *  In order to match against the subject alternative names criterion, if the
   1698 *  Boolean value at "pMatch" is PKIX_TRUE, a certificate must contain all of
   1699 *  the criterion's subject alternative names. If the Boolean value at
   1700 *  "pMatch" is PKIX_FALSE, a certificate must contain at least one of the
   1701 *  criterion's subject alternative names. The default behavior is as if the
   1702 *  Boolean value at "pMatch" is PKIX_TRUE.
   1703 *
   1704 * PARAMETERS:
   1705 *  "params"
   1706 *      Address of ComCertSelParams object used to determine whether all
   1707 *      subject alternative names must be matched. Must be non-NULL.
   1708 *  "pMatch"
   1709 *      Address where object pointer will be stored. Must be non-NULL.
   1710 *  "plContext"
   1711 *      Platform-specific context pointer.
   1712 * THREAD SAFETY:
   1713 *  Conditionally Thread Safe
   1714 *      (see Thread Safety Definitions in Programmer's Guide)
   1715 * RETURNS:
   1716 *  Returns NULL if the function succeeds.
   1717 *  Returns a CertSelector Error if the function fails in a non-fatal way.
   1718 *  Returns a Fatal Error if the function fails in an unrecoverable way.
   1719 */
   1720 PKIX_Error *
   1721 PKIX_ComCertSelParams_GetMatchAllSubjAltNames(
   1722        PKIX_ComCertSelParams *params,
   1723        PKIX_Boolean *pMatch,
   1724        void *plContext);
   1725 
   1726 /*
   1727 * FUNCTION: PKIX_ComCertSelParams_SetMatchAllSubjAltNames
   1728 * DESCRIPTION:
   1729 *
   1730 *  Sets the match flag of the ComCertSelParams object pointed to by "params"
   1731 *  using the Boolean value of "match". This Boolean value determines the
   1732 *  behavior of the subject alternative names criterion.
   1733 *
   1734 *  In order to match against the subject alternative names criterion, if the
   1735 *  "match" is PKIX_TRUE, a certificate must contain all of the criterion's
   1736 *  subject alternative names. If the "match" is PKIX_FALSE, a certificate
   1737 *  must contain at least one of the criterion's subject alternative names.
   1738 *  The default behavior is as if "match" is PKIX_TRUE.
   1739 *
   1740 * PARAMETERS:
   1741 *  "params"
   1742 *      Address of ComCertSelParams object whose match flag is to be set.
   1743 *      Must be non-NULL.
   1744 *  "match"
   1745 *      Boolean value used to set the match flag.
   1746 *  "plContext"
   1747 *      Platform-specific context pointer.
   1748 * THREAD SAFETY:
   1749 *  Not Thread Safe - assumes exclusive access to "params"
   1750 *  (see Thread Safety Definitions in Programmer's Guide)
   1751 * RETURNS:
   1752 *  Returns NULL if the function succeeds.
   1753 *  Returns a CertSelector Error if the function fails in a non-fatal way.
   1754 *  Returns a Fatal Error if the function fails in an unrecoverable way.
   1755 */
   1756 PKIX_Error *
   1757 PKIX_ComCertSelParams_SetMatchAllSubjAltNames(
   1758        PKIX_ComCertSelParams *params,
   1759        PKIX_Boolean match,
   1760        void *plContext);
   1761 
   1762 /*
   1763 * FUNCTION: PKIX_ComCertSelParams_GetLeafCertFlag
   1764 * DESCRIPTION:
   1765 *
   1766 * Return "leafCert" flag of the ComCertSelParams structure. If set to true,
   1767 * the flag indicates that a selector should filter out all cert that are not
   1768 * qualified to be a leaf cert according to the specified key/ekey usages.
   1769 *
   1770 * PARAMETERS:
   1771 *  "params"
   1772 *      Address of ComCertSelParams object used to determine whether all
   1773 *      subject alternative names must be matched. Must be non-NULL.
   1774 *  "pLeafFlag"
   1775 *      Address of returned value.
   1776 *  "plContext"
   1777 *      Platform-specific context pointer.
   1778 * THREAD SAFETY:
   1779 *  Conditionally Thread Safe
   1780 *      (see Thread Safety Definitions in Programmer's Guide)
   1781 * RETURNS:
   1782 *  Returns NULL if the function succeeds.
   1783 *  Returns a CertSelector Error if the function fails in a non-fatal way.
   1784 *  Returns a Fatal Error if the function fails in an unrecoverable way.
   1785 */
   1786 PKIX_Error*
   1787 PKIX_ComCertSelParams_GetLeafCertFlag(
   1788        PKIX_ComCertSelParams *params,
   1789        PKIX_Boolean *pLeafFlag,
   1790        void *plContext);
   1791 
   1792 /*
   1793 * FUNCTION: PKIX_ComCertSelParams_SetLeafCertFlag
   1794 * DESCRIPTION:
   1795 *
   1796 * Sets a flag that if its value is true, indicates that the selector
   1797 * should only pick certs that qualifies to be leaf for this cert path
   1798 * validation.
   1799 *
   1800 * PARAMETERS:
   1801 *  "params"
   1802 *      Address of ComCertSelParams object whose match flag is to be set.
   1803 *      Must be non-NULL.
   1804 *  "leafFlag"
   1805 *      Boolean value used to set the leaf flag.
   1806 *  "plContext"
   1807 *      Platform-specific context pointer.
   1808 * THREAD SAFETY:
   1809 *  Not Thread Safe - assumes exclusive access to "params"
   1810 *  (see Thread Safety Definitions in Programmer's Guide)
   1811 * RETURNS:
   1812 *  Returns NULL if the function succeeds.
   1813 *  Returns a CertSelector Error if the function fails in a non-fatal way.
   1814 *  Returns a Fatal Error if the function fails in an unrecoverable way.
   1815 */
   1816 PKIX_Error *
   1817 PKIX_ComCertSelParams_SetLeafCertFlag(
   1818        PKIX_ComCertSelParams *params,
   1819        PKIX_Boolean leafFlag,
   1820        void *plContext);
   1821 
   1822 #ifdef __cplusplus
   1823 }
   1824 #endif
   1825 
   1826 #endif /* _PKIX_CERTSEL_H */