security/nss/lib/libpkix/pkix/certsel/pkix_comcertselparams.c

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rwxr-xr-x

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /* This Source Code Form is subject to the terms of the Mozilla Public
     2  * License, v. 2.0. If a copy of the MPL was not distributed with this
     3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     4 /*
     5  * pkix_comcertselparams.c
     6  *
     7  * ComCertSelParams Object Functions
     8  *
     9  */
    11 #include "pkix_comcertselparams.h"
    13 /* --Private-Functions-------------------------------------------- */
    15 /*
    16  * FUNCTION: pkix_ComCertSelParams_Destroy
    17  * (see comments for PKIX_PL_DestructorCallback in pkix_pl_system.h)
    18  */
    19 static PKIX_Error *
    20 pkix_ComCertSelParams_Destroy(
    21         PKIX_PL_Object *object,
    22         void *plContext)
    23 {
    24         PKIX_ComCertSelParams *params = NULL;
    26         PKIX_ENTER(COMCERTSELPARAMS, "pkix_ComCertSelParams_Destroy");
    27         PKIX_NULLCHECK_ONE(object);
    29         /* Check that this object is a comCertSelParams object */
    30         PKIX_CHECK(pkix_CheckType
    31                     (object, PKIX_COMCERTSELPARAMS_TYPE, plContext),
    32                     PKIX_OBJECTNOTCOMCERTSELPARAMS);
    34         params = (PKIX_ComCertSelParams *)object;
    36         PKIX_DECREF(params->subject);
    37         PKIX_DECREF(params->policies);
    38         PKIX_DECREF(params->cert);
    39         PKIX_DECREF(params->nameConstraints);
    40         PKIX_DECREF(params->pathToNames);
    41         PKIX_DECREF(params->subjAltNames);
    42         PKIX_DECREF(params->date);
    43         PKIX_DECREF(params->extKeyUsage);
    44         PKIX_DECREF(params->certValid);
    45         PKIX_DECREF(params->issuer);
    46         PKIX_DECREF(params->serialNumber);
    47         PKIX_DECREF(params->authKeyId);
    48         PKIX_DECREF(params->subjKeyId);
    49         PKIX_DECREF(params->subjPubKey);
    50         PKIX_DECREF(params->subjPKAlgId);
    52 cleanup:
    54         PKIX_RETURN(COMCERTSELPARAMS);
    55 }
    57 /*
    58  * FUNCTION: pkix_ComCertSelParams_Duplicate
    59  * (see comments for PKIX_PL_DuplicateCallback in pkix_pl_system.h)
    60  */
    61 static PKIX_Error *
    62 pkix_ComCertSelParams_Duplicate(
    63         PKIX_PL_Object *object,
    64         PKIX_PL_Object **pNewObject,
    65         void *plContext)
    66 {
    67         PKIX_ComCertSelParams *params = NULL;
    68         PKIX_ComCertSelParams *paramsDuplicate = NULL;
    70         PKIX_ENTER(COMCERTSELPARAMS, "pkix_ComCertSelParams_Duplicate");
    71         PKIX_NULLCHECK_TWO(object, pNewObject);
    73         PKIX_CHECK(pkix_CheckType
    74                     (object, PKIX_COMCERTSELPARAMS_TYPE, plContext),
    75                     PKIX_OBJECTNOTCOMCERTSELPARAMS);
    77         params = (PKIX_ComCertSelParams *)object;
    79         PKIX_CHECK(PKIX_ComCertSelParams_Create(&paramsDuplicate, plContext),
    80                     PKIX_COMCERTSELPARAMSCREATEFAILED);
    82         paramsDuplicate->minPathLength = params->minPathLength;
    83         paramsDuplicate->matchAllSubjAltNames = params->matchAllSubjAltNames;
    85         PKIX_DUPLICATE(params->subject, &paramsDuplicate->subject, plContext,
    86                 PKIX_OBJECTDUPLICATEFAILED);
    88         PKIX_DUPLICATE(params->policies, &paramsDuplicate->policies, plContext,
    89                 PKIX_OBJECTDUPLICATEFAILED);
    91         if (params->cert){
    92                 PKIX_CHECK(PKIX_PL_Object_Duplicate
    93                             ((PKIX_PL_Object *)params->cert,
    94                             (PKIX_PL_Object **)&paramsDuplicate->cert,
    95                             plContext),
    96                             PKIX_OBJECTDUPLICATEFAILED);
    97         }
    99         PKIX_DUPLICATE
   100                 (params->nameConstraints,
   101                 &paramsDuplicate->nameConstraints,
   102                 plContext,
   103                 PKIX_OBJECTDUPLICATEFAILED);
   105         PKIX_DUPLICATE
   106                 (params->pathToNames,
   107                 &paramsDuplicate->pathToNames,
   108                 plContext,
   109                 PKIX_OBJECTDUPLICATEFAILED);
   111         PKIX_DUPLICATE
   112                 (params->subjAltNames,
   113                 &paramsDuplicate->subjAltNames,
   114                 plContext,
   115                 PKIX_OBJECTDUPLICATEFAILED);
   117         if (params->date){
   118                 PKIX_CHECK(PKIX_PL_Object_Duplicate
   119                             ((PKIX_PL_Object *)params->date,
   120                             (PKIX_PL_Object **)&paramsDuplicate->date,
   121                             plContext),
   122                             PKIX_OBJECTDUPLICATEFAILED);
   123         }
   125         paramsDuplicate->keyUsage = params->keyUsage;
   127         PKIX_DUPLICATE(params->certValid,
   128                 &paramsDuplicate->certValid,
   129                 plContext,
   130                 PKIX_OBJECTDUPLICATEFAILED);
   132         PKIX_DUPLICATE(params->issuer,
   133                 &paramsDuplicate->issuer,
   134                 plContext,
   135                 PKIX_OBJECTDUPLICATEFAILED);
   137         PKIX_DUPLICATE(params->serialNumber,
   138                 &paramsDuplicate->serialNumber,
   139                 plContext,
   140                 PKIX_OBJECTDUPLICATEFAILED);
   142         PKIX_DUPLICATE(params->authKeyId,
   143                 &paramsDuplicate->authKeyId,
   144                 plContext,
   145                 PKIX_OBJECTDUPLICATEFAILED);
   147         PKIX_DUPLICATE(params->subjKeyId,
   148                 &paramsDuplicate->subjKeyId,
   149                 plContext,
   150                 PKIX_OBJECTDUPLICATEFAILED);
   152         PKIX_DUPLICATE(params->subjPubKey,
   153                 &paramsDuplicate->subjPubKey,
   154                 plContext,
   155                 PKIX_OBJECTDUPLICATEFAILED);
   157         PKIX_DUPLICATE(params->subjPKAlgId,
   158                 &paramsDuplicate->subjPKAlgId,
   159                 plContext,
   160                 PKIX_OBJECTDUPLICATEFAILED);
   162         paramsDuplicate->leafCertFlag = params->leafCertFlag;
   164         *pNewObject = (PKIX_PL_Object *)paramsDuplicate;
   166 cleanup:
   168         if (PKIX_ERROR_RECEIVED){
   169                 PKIX_DECREF(paramsDuplicate);
   170         }
   172         PKIX_RETURN(COMCERTSELPARAMS);
   173 }
   175 /*
   176  * FUNCTION: pkix_ComCertSelParams_RegisterSelf
   177  * DESCRIPTION:
   178  *  Registers PKIX_COMCERTSELPARAMS_TYPE and its related functions with
   179  *  systemClasses[]
   180  * THREAD SAFETY:
   181  *  Not Thread Safe - for performance and complexity reasons
   182  *
   183  *  Since this function is only called by PKIX_PL_Initialize, which should
   184  *  only be called once, it is acceptable that this function is not
   185  *  thread-safe.
   186  */
   187 PKIX_Error *
   188 pkix_ComCertSelParams_RegisterSelf(void *plContext)
   189 {
   190         extern pkix_ClassTable_Entry systemClasses[PKIX_NUMTYPES];
   191         pkix_ClassTable_Entry* entry = &systemClasses[PKIX_COMCERTSELPARAMS_TYPE];
   193         PKIX_ENTER(COMCERTSELPARAMS, "pkix_ComCertSelParams_RegisterSelf");
   195         entry->description = "ComCertSelParams";
   196         entry->typeObjectSize = sizeof(PKIX_ComCertSelParams);
   197         entry->destructor = pkix_ComCertSelParams_Destroy;
   198         entry->duplicateFunction = pkix_ComCertSelParams_Duplicate;
   200         PKIX_RETURN(COMCERTSELPARAMS);
   201 }
   203 /* --Public-Functions--------------------------------------------- */
   206 /*
   207  * FUNCTION: PKIX_ComCertSelParams_Create (see comments in pkix_certsel.h)
   208  */
   209 PKIX_Error *
   210 PKIX_ComCertSelParams_Create(
   211         PKIX_ComCertSelParams **pParams,
   212         void *plContext)
   213 {
   214         PKIX_ComCertSelParams *params = NULL;
   216         PKIX_ENTER(COMCERTSELPARAMS, "PKIX_ComCertSelParams_Create");
   217         PKIX_NULLCHECK_ONE(pParams);
   219         PKIX_CHECK(PKIX_PL_Object_Alloc
   220                     (PKIX_COMCERTSELPARAMS_TYPE,
   221                     sizeof (PKIX_ComCertSelParams),
   222                     (PKIX_PL_Object **)&params,
   223                     plContext),
   224                     PKIX_COULDNOTCREATECOMMONCERTSELPARAMSOBJECT);
   226         /* initialize fields */
   227         params->version = 0xFFFFFFFF;
   228         params->minPathLength = -1;
   229         params->matchAllSubjAltNames = PKIX_TRUE;
   230         params->subject = NULL;
   231         params->policies = NULL;
   232         params->cert = NULL;
   233         params->nameConstraints = NULL;
   234         params->pathToNames = NULL;
   235         params->subjAltNames = NULL;
   236         params->extKeyUsage = NULL;
   237         params->keyUsage = 0;
   238         params->extKeyUsage = NULL;
   239         params->keyUsage = 0;
   240         params->date = NULL;
   241         params->certValid = NULL;
   242         params->issuer = NULL;
   243         params->serialNumber = NULL;
   244         params->authKeyId = NULL;
   245         params->subjKeyId = NULL;
   246         params->subjPubKey = NULL;
   247         params->subjPKAlgId = NULL;
   248         params->leafCertFlag = PKIX_FALSE;
   250         *pParams = params;
   252 cleanup:
   254         PKIX_RETURN(COMCERTSELPARAMS);
   256 }
   258 /*
   259  * FUNCTION: PKIX_ComCertSelParams_GetSubject (see comments in pkix_certsel.h)
   260  */
   261 PKIX_Error *
   262 PKIX_ComCertSelParams_GetSubject(
   263         PKIX_ComCertSelParams *params,
   264         PKIX_PL_X500Name **pSubject,
   265         void *plContext)
   266 {
   267         PKIX_ENTER(COMCERTSELPARAMS, "PKIX_ComCertSelParams_GetSubject");
   268         PKIX_NULLCHECK_TWO(params, pSubject);
   270         PKIX_INCREF(params->subject);
   272         *pSubject = params->subject;
   274 cleanup:
   275         PKIX_RETURN(COMCERTSELPARAMS);
   276 }
   278 /*
   279  * FUNCTION: PKIX_ComCertSelParams_SetSubject (see comments in pkix_certsel.h)
   280  */
   281 PKIX_Error *
   282 PKIX_ComCertSelParams_SetSubject(
   283         PKIX_ComCertSelParams *params,
   284         PKIX_PL_X500Name *subject,
   285         void *plContext)
   286 {
   287         PKIX_ENTER(COMCERTSELPARAMS, "PKIX_ComCertSelParams_SetSubject");
   288         PKIX_NULLCHECK_ONE(params);
   290         PKIX_DECREF(params->subject);
   292         PKIX_INCREF(subject);
   294         params->subject = subject;
   296         PKIX_CHECK(PKIX_PL_Object_InvalidateCache
   297                     ((PKIX_PL_Object *)params, plContext),
   298                     PKIX_OBJECTINVALIDATECACHEFAILED);
   300 cleanup:
   302         PKIX_RETURN(COMCERTSELPARAMS);
   303 }
   306 /*
   307  * FUNCTION: PKIX_ComCertSelParams_GetBasicConstraints
   308  *      (see comments in pkix_certsel.h)
   309  */
   310 PKIX_Error *
   311 PKIX_ComCertSelParams_GetBasicConstraints(
   312         PKIX_ComCertSelParams *params,
   313         PKIX_Int32 *pMinPathLength,
   314         void *plContext)
   315 {
   316         PKIX_ENTER(COMCERTSELPARAMS,
   317                     "PKIX_ComCertSelParams_GetBasicConstraints");
   318         PKIX_NULLCHECK_TWO(params, pMinPathLength);
   320         *pMinPathLength = params->minPathLength;
   322         PKIX_RETURN(COMCERTSELPARAMS);
   323 }
   326 /*
   327  * FUNCTION: PKIX_ComCertSelParams_SetBasicConstraints
   328  *      (see comments in pkix_certsel.h)
   329  */
   330 PKIX_Error *
   331 PKIX_ComCertSelParams_SetBasicConstraints(
   332         PKIX_ComCertSelParams *params,
   333         PKIX_Int32 minPathLength,
   334         void *plContext)
   335 {
   336         PKIX_ENTER(COMCERTSELPARAMS,
   337                     "PKIX_ComCertSelParams_SetBasicConstraints");
   338         PKIX_NULLCHECK_ONE(params);
   340         params->minPathLength = minPathLength;
   342         PKIX_CHECK(PKIX_PL_Object_InvalidateCache
   343                     ((PKIX_PL_Object *)params, plContext),
   344                     PKIX_OBJECTINVALIDATECACHEFAILED);
   346 cleanup:
   348         PKIX_RETURN(COMCERTSELPARAMS);
   349 }
   352 /*
   353  * FUNCTION: PKIX_ComCertSelParams_GetPolicy (see comments in pkix_certsel.h)
   354  */
   355 PKIX_Error *
   356 PKIX_ComCertSelParams_GetPolicy(
   357         PKIX_ComCertSelParams *params,
   358         PKIX_List **pPolicy, /* List of PKIX_PL_OID */
   359         void *plContext)
   360 {
   361         PKIX_ENTER(COMCERTSELPARAMS, "PKIX_ComCertSelParams_GetPolicy");
   362         PKIX_NULLCHECK_TWO(params, pPolicy);
   364         PKIX_INCREF(params->policies);
   365         *pPolicy = params->policies;
   367 cleanup:
   368         PKIX_RETURN(COMCERTSELPARAMS);
   369 }
   371 /*
   372  * FUNCTION: PKIX_ComCertSelParams_SetPolicy (see comments in pkix_certsel.h)
   373  */
   374 PKIX_Error *
   375 PKIX_ComCertSelParams_SetPolicy(
   376         PKIX_ComCertSelParams *params,
   377         PKIX_List *policy, /* List of PKIX_PL_OID */
   378         void *plContext)
   379 {
   380         PKIX_ENTER(COMCERTSELPARAMS, "PKIX_ComCertSelParams_SetPolicy");
   381         PKIX_NULLCHECK_ONE(params);
   383         PKIX_DECREF(params->policies);
   384         PKIX_INCREF(policy);
   385         params->policies = policy;
   387         PKIX_CHECK(PKIX_PL_Object_InvalidateCache
   388                     ((PKIX_PL_Object *)params, plContext),
   389                     PKIX_OBJECTINVALIDATECACHEFAILED);
   390 cleanup:
   392         PKIX_RETURN(COMCERTSELPARAMS);
   393 }
   395 /*
   396  * FUNCTION: PKIX_ComCertSelParams_GetCertificate
   397  * (see comments in pkix_certsel.h)
   398  */
   399 PKIX_Error *
   400 PKIX_ComCertSelParams_GetCertificate(
   401         PKIX_ComCertSelParams *params,
   402         PKIX_PL_Cert **pCert,
   403         void *plContext)
   404 {
   405         PKIX_ENTER(COMCERTSELPARAMS, "PKIX_ComCertSelParams_GetCertificate");
   406         PKIX_NULLCHECK_TWO(params, pCert);
   408         PKIX_INCREF(params->cert);
   409         *pCert = params->cert;
   411 cleanup:
   412         PKIX_RETURN(COMCERTSELPARAMS);
   413 }
   415 /*
   416  * FUNCTION: PKIX_ComCertSelParams_SetCertificate
   417  * (see comments in pkix_certsel.h)
   418  */
   419 PKIX_Error *
   420 PKIX_ComCertSelParams_SetCertificate(
   421         PKIX_ComCertSelParams *params,
   422         PKIX_PL_Cert *cert,
   423         void *plContext)
   424 {
   425         PKIX_ENTER(COMCERTSELPARAMS, "PKIX_ComCertSelParams_SetCertificate");
   426         PKIX_NULLCHECK_ONE(params);
   428         PKIX_DECREF(params->cert);
   429         PKIX_INCREF(cert);
   430         params->cert = cert;
   432         PKIX_CHECK(PKIX_PL_Object_InvalidateCache
   433                     ((PKIX_PL_Object *)params, plContext),
   434                     PKIX_OBJECTINVALIDATECACHEFAILED);
   435 cleanup:
   437         PKIX_RETURN(COMCERTSELPARAMS);
   438 }
   440 /*
   441  * FUNCTION: PKIX_ComCertSelParams_GetCertificateValid
   442  *      (see comments in pkix_certsel.h)
   443  */
   444 PKIX_Error *
   445 PKIX_ComCertSelParams_GetCertificateValid(
   446         PKIX_ComCertSelParams *params,
   447         PKIX_PL_Date **pDate,
   448         void *plContext)
   449 {
   450         PKIX_ENTER(COMCERTSELPARAMS,
   451                     "PKIX_ComCertSelParams_GetCertificateValid");
   453         PKIX_NULLCHECK_TWO(params, pDate);
   455         PKIX_INCREF(params->date);
   456         *pDate = params->date;
   458 cleanup:
   459         PKIX_RETURN(COMCERTSELPARAMS);
   460 }
   462 /*
   463  * FUNCTION: PKIX_ComCertSelParams_SetCertificateValid
   464  *      (see comments in pkix_certsel.h)
   465  */
   466 PKIX_Error *
   467 PKIX_ComCertSelParams_SetCertificateValid(
   468         PKIX_ComCertSelParams *params,
   469         PKIX_PL_Date *date,
   470         void *plContext)
   471 {
   472         PKIX_ENTER(COMCERTSELPARAMS,
   473                     "PKIX_ComCertSelParams_SetCertificateValid");
   474         PKIX_NULLCHECK_ONE(params);
   476         PKIX_DECREF(params->date);
   477         PKIX_INCREF(date);
   478         params->date = date;
   480         PKIX_CHECK(PKIX_PL_Object_InvalidateCache
   481                     ((PKIX_PL_Object *)params, plContext),
   482                     PKIX_OBJECTINVALIDATECACHEFAILED);
   483 cleanup:
   485         PKIX_RETURN(COMCERTSELPARAMS);
   486 }
   488 /*
   489  * FUNCTION: PKIX_ComCertSelParams_GetNameConstraints
   490  * (see comments in pkix_certsel.h)
   491  */
   492 PKIX_Error *
   493 PKIX_ComCertSelParams_GetNameConstraints(
   494         PKIX_ComCertSelParams *params,
   495         PKIX_PL_CertNameConstraints **pNameConstraints,
   496         void *plContext)
   497 {
   498         PKIX_ENTER(COMCERTSELPARAMS,
   499                 "PKIX_ComCertSelParams_GetNameConstraints");
   500         PKIX_NULLCHECK_TWO(params, pNameConstraints);
   502         PKIX_INCREF(params->nameConstraints);
   504         *pNameConstraints = params->nameConstraints;
   506 cleanup:
   507         PKIX_RETURN(COMCERTSELPARAMS);
   508 }
   510 /*
   511  * FUNCTION: PKIX_ComCertSelParams_SetNameConstraints
   512  * (see comments in pkix_certsel.h)
   513  */
   514 PKIX_Error *
   515 PKIX_ComCertSelParams_SetNameConstraints(
   516         PKIX_ComCertSelParams *params,
   517         PKIX_PL_CertNameConstraints *nameConstraints,
   518         void *plContext)
   519 {
   520         PKIX_ENTER(COMCERTSELPARAMS,
   521                 "PKIX_ComCertSelParams_SetNameConstraints");
   522         PKIX_NULLCHECK_ONE(params);
   524         PKIX_DECREF(params->nameConstraints);
   525         PKIX_INCREF(nameConstraints);
   526         params->nameConstraints = nameConstraints;
   528         PKIX_CHECK(PKIX_PL_Object_InvalidateCache
   529                     ((PKIX_PL_Object *)params, plContext),
   530                     PKIX_OBJECTINVALIDATECACHEFAILED);
   532 cleanup:
   534         PKIX_RETURN(COMCERTSELPARAMS);
   535 }
   537 /*
   538  * FUNCTION: PKIX_ComCertSelParams_GetPathToNames
   539  * (see comments in pkix_certsel.h)
   540  */PKIX_Error *
   541 PKIX_ComCertSelParams_GetPathToNames(
   542         PKIX_ComCertSelParams *params,
   543         PKIX_List **pNames,  /* list of PKIX_PL_GeneralName */
   544         void *plContext)
   545 {
   546         PKIX_ENTER(COMCERTSELPARAMS, "PKIX_ComCertSelParams_GetPathToNames");
   547         PKIX_NULLCHECK_TWO(params, pNames);
   549         PKIX_INCREF(params->pathToNames);
   551         *pNames = params->pathToNames;
   553 cleanup:
   554         PKIX_RETURN(COMCERTSELPARAMS);
   555 }
   557 /*
   558  * FUNCTION: PKIX_ComCertSelParams_SetPathToNames
   559  * (see comments in pkix_certsel.h)
   560  */
   561 PKIX_Error *
   562 PKIX_ComCertSelParams_SetPathToNames(
   563         PKIX_ComCertSelParams *params,
   564         PKIX_List *names,  /* list of PKIX_PL_GeneralName */
   565         void *plContext)
   566 {
   567         PKIX_ENTER(COMCERTSELPARAMS, "PKIX_ComCertSelParams_SetPathToNames");
   568         PKIX_NULLCHECK_ONE(params);
   570         PKIX_DECREF(params->pathToNames);
   571         PKIX_INCREF(names);
   573         params->pathToNames = names;
   575         PKIX_CHECK(PKIX_PL_Object_InvalidateCache
   576                     ((PKIX_PL_Object *)params, plContext),
   577                     PKIX_OBJECTINVALIDATECACHEFAILED);
   579 cleanup:
   581         PKIX_RETURN(COMCERTSELPARAMS);
   582 }
   584 /*
   585  * FUNCTION: PKIX_ComCertSelParams_AddPathToName
   586  * (see comments in pkix_certsel.h)
   587  */
   588 PKIX_Error *
   589 PKIX_ComCertSelParams_AddPathToName(
   590         PKIX_ComCertSelParams *params,
   591         PKIX_PL_GeneralName *name,
   592         void *plContext)
   593 {
   594         PKIX_List *pathToNamesList = NULL;
   596         PKIX_ENTER(COMCERTSELPARAMS, "PKIX_ComCertSelParams_AddPathToName");
   597         PKIX_NULLCHECK_ONE(params);
   599         if (name == NULL) {
   600                 goto cleanup;
   601         }
   603         if (params->pathToNames == NULL) {
   604                 /* Create a list for name item */
   605                 PKIX_CHECK(PKIX_List_Create(&pathToNamesList, plContext),
   606                     PKIX_LISTCREATEFAILED);
   608                 params->pathToNames = pathToNamesList;
   609         }
   611         PKIX_CHECK(PKIX_List_AppendItem
   612                     (params->pathToNames, (PKIX_PL_Object *)name, plContext),
   613                     PKIX_LISTAPPENDITEMFAILED);
   615         PKIX_CHECK(PKIX_PL_Object_InvalidateCache
   616                     ((PKIX_PL_Object *)params, plContext),
   617                     PKIX_OBJECTINVALIDATECACHEFAILED);
   619 cleanup:
   621         PKIX_RETURN(COMCERTSELPARAMS);
   622 }
   624 /*
   625  * FUNCTION: PKIX_ComCertSelParams_GetSubjAltNames
   626  * (see comments in pkix_certsel.h)
   627  */
   628 PKIX_Error *
   629 PKIX_ComCertSelParams_GetSubjAltNames(
   630         PKIX_ComCertSelParams *params,
   631         PKIX_List **pNames, /* list of PKIX_PL_GeneralName */
   632         void *plContext)
   633 {
   634         PKIX_ENTER(COMCERTSELPARAMS, "PKIX_ComCertSelParams_GetSubjAltNames");
   635         PKIX_NULLCHECK_TWO(params, pNames);
   637         PKIX_INCREF(params->subjAltNames);
   639         *pNames = params->subjAltNames;
   641 cleanup:
   642         PKIX_RETURN(COMCERTSELPARAMS);
   643 }
   645 /*
   646  * FUNCTION: PKIX_ComCertSelParams_SetSubjAltNames
   647  * (see comments in pkix_certsel.h)
   648  */
   649 PKIX_Error *
   650 PKIX_ComCertSelParams_SetSubjAltNames(
   651         PKIX_ComCertSelParams *params,
   652         PKIX_List *names,  /* list of PKIX_PL_GeneralName */
   653         void *plContext)
   654 {
   655         PKIX_ENTER(COMCERTSELPARAMS, "PKIX_ComCertSelParams_SetSubjAltNames");
   656         PKIX_NULLCHECK_TWO(params, names);
   658         PKIX_DECREF(params->subjAltNames);
   659         PKIX_INCREF(names);
   661         params->subjAltNames = names;
   663 cleanup:
   664         PKIX_RETURN(COMCERTSELPARAMS);
   665 }
   667 /*
   668  * FUNCTION: PKIX_ComCertSelParams_AddSubjAltNames
   669  * (see comments in pkix_certsel.h)
   670  */
   671 PKIX_Error *
   672 PKIX_ComCertSelParams_AddSubjAltName(
   673         PKIX_ComCertSelParams *params,
   674         PKIX_PL_GeneralName *name,
   675         void *plContext)
   676 {
   677         PKIX_List *list = NULL;
   679         PKIX_ENTER(COMCERTSELPARAMS, "PKIX_ComCertSelParams_AddSubjAltName");
   680         PKIX_NULLCHECK_TWO(params, name);
   682         if (params->subjAltNames == NULL) {
   683                 PKIX_CHECK(PKIX_List_Create(&list, plContext),
   684                         PKIX_LISTCREATEFAILED);
   685                 params->subjAltNames = list;
   686         }
   688         PKIX_CHECK(PKIX_List_AppendItem
   689                     (params->subjAltNames, (PKIX_PL_Object *)name, plContext),
   690                     PKIX_LISTAPPENDITEMFAILED);
   692 cleanup:
   694         PKIX_RETURN(COMCERTSELPARAMS)
   695 }
   697 /*
   698  * FUNCTION: PKIX_ComCertSelParams_GetMatchAllSubjAltNames
   699  * (see comments in pkix_certsel.h)
   700  */
   701 PKIX_Error *
   702 PKIX_ComCertSelParams_GetMatchAllSubjAltNames(
   703         PKIX_ComCertSelParams *params,
   704         PKIX_Boolean *pMatch,
   705         void *plContext)
   706 {
   707         PKIX_ENTER(COMCERTSELPARAMS,
   708                 "PKIX_ComCertSelParams_GetMatchAllSubjAltNames");
   709         PKIX_NULLCHECK_TWO(params, pMatch);
   711         *pMatch = params->matchAllSubjAltNames;
   713         PKIX_RETURN(COMCERTSELPARAMS);
   714 }
   716 /*
   717  * FUNCTION: PKIX_ComCertSelParams_SetMatchAllSubjAltNames
   718  * (see comments in pkix_certsel.h)
   719  */
   720 PKIX_Error *
   721 PKIX_ComCertSelParams_SetMatchAllSubjAltNames(
   722         PKIX_ComCertSelParams *params,
   723         PKIX_Boolean match,
   724         void *plContext)
   725 {
   726         PKIX_ENTER(COMCERTSELPARAMS,
   727                 "PKIX_ComCertSelParams_SetMatchAllSubjAltNames");
   728         PKIX_NULLCHECK_ONE(params);
   730         params->matchAllSubjAltNames = match;
   732         PKIX_RETURN(COMCERTSELPARAMS);
   733 }
   735 /*
   736  * FUNCTION: PKIX_ComCertSelParams_GetExtendedKeyUsage
   737  * (see comments in pkix_certsel.h)
   738  */
   739 PKIX_Error *
   740 PKIX_ComCertSelParams_GetExtendedKeyUsage(
   741         PKIX_ComCertSelParams *params,
   742         PKIX_List **pExtKeyUsage, /* list of PKIX_PL_OID */
   743         void *plContext)
   744 {
   745         PKIX_ENTER(COMCERTSELPARAMS,
   746                 "PKIX_ComCertSelParams_GetExtendedKeyUsage");
   747         PKIX_NULLCHECK_TWO(params, pExtKeyUsage);
   749         PKIX_INCREF(params->extKeyUsage);
   750         *pExtKeyUsage = params->extKeyUsage;
   752 cleanup:
   753         PKIX_RETURN(COMCERTSELPARAMS);
   754 }
   756 /*
   757  * FUNCTION: PKIX_ComCertSelParams_SetExtendedKeyUsage
   758  * (see comments in pkix_certsel.h)
   759  */
   760 PKIX_Error *
   761 PKIX_ComCertSelParams_SetExtendedKeyUsage(
   762         PKIX_ComCertSelParams *params,
   763         PKIX_List *extKeyUsage,  /* list of PKIX_PL_OID */
   764         void *plContext)
   765 {
   766         PKIX_ENTER(COMCERTSELPARAMS,
   767                 "PKIX_ComCertSelParams_SetExtendedKeyUsage");
   768         PKIX_NULLCHECK_ONE(params);
   770         PKIX_DECREF(params->extKeyUsage);
   771         PKIX_INCREF(extKeyUsage);
   773         params->extKeyUsage = extKeyUsage;
   775 cleanup:
   776         PKIX_RETURN(COMCERTSELPARAMS);
   777 }
   779 /*
   780  * FUNCTION: PKIX_ComCertSelParams_GetKeyUsage
   781  * (see comments in pkix_certsel.h)
   782  */
   783 PKIX_Error *
   784 PKIX_ComCertSelParams_GetKeyUsage(
   785         PKIX_ComCertSelParams *params,
   786         PKIX_UInt32 *pKeyUsage,
   787         void *plContext)
   788 {
   789         PKIX_ENTER(COMCERTSELPARAMS,
   790                 "PKIX_ComCertSelParams_GetKeyUsage");
   791         PKIX_NULLCHECK_TWO(params, pKeyUsage);
   793         *pKeyUsage = params->keyUsage;
   795         PKIX_RETURN(COMCERTSELPARAMS);
   796 }
   798 /*
   799  * FUNCTION: PKIX_ComCertSelParams_SetKeyUsage
   800  * (see comments in pkix_certsel.h)
   801  */
   802 PKIX_Error *
   803 PKIX_ComCertSelParams_SetKeyUsage(
   804         PKIX_ComCertSelParams *params,
   805         PKIX_UInt32 keyUsage,
   806         void *plContext)
   807 {
   808         PKIX_ENTER(COMCERTSELPARAMS,
   809                 "PKIX_ComCertSelParams_SetKeyUsage");
   810         PKIX_NULLCHECK_ONE(params);
   812         params->keyUsage = keyUsage;
   814         PKIX_RETURN(COMCERTSELPARAMS);
   815 }
   817 /*
   818  * FUNCTION: PKIX_ComCertSelParams_GetIssuer
   819  * (see comments in pkix_certsel.h)
   820  */
   821 PKIX_Error *
   822 PKIX_ComCertSelParams_GetIssuer(
   823         PKIX_ComCertSelParams *params,
   824         PKIX_PL_X500Name **pIssuer,
   825         void *plContext)
   826 {
   827         PKIX_ENTER(COMCERTSELPARAMS, "PKIX_ComCertSelParams_GetIssuer");
   828         PKIX_NULLCHECK_TWO(params, pIssuer);
   830         PKIX_INCREF(params->issuer);
   831         *pIssuer = params->issuer;
   833 cleanup:
   834         PKIX_RETURN(COMCERTSELPARAMS);
   835 }
   837 /*
   838  * FUNCTION: PKIX_ComCertSelParams_SetIssuer
   839  * (see comments in pkix_certsel.h)
   840  */
   841 PKIX_Error *
   842 PKIX_ComCertSelParams_SetIssuer(
   843         PKIX_ComCertSelParams *params,
   844         PKIX_PL_X500Name *issuer,
   845         void *plContext)
   846 {
   847         PKIX_ENTER(COMCERTSELPARAMS, "PKIX_ComCertSelParams_SetIssuer");
   848         PKIX_NULLCHECK_ONE(params);
   850         PKIX_DECREF(params->issuer);
   851         PKIX_INCREF(issuer);
   852         params->issuer = issuer;
   854         PKIX_CHECK(PKIX_PL_Object_InvalidateCache
   855                     ((PKIX_PL_Object *)params, plContext),
   856                     PKIX_OBJECTINVALIDATECACHEFAILED);
   858 cleanup:
   860         PKIX_RETURN(COMCERTSELPARAMS);
   861 }
   863 /*
   864  * FUNCTION: PKIX_ComCertSelParams_GetSerialNumber
   865  * (see comments in pkix_certsel.h)
   866  */
   867 PKIX_Error *
   868 PKIX_ComCertSelParams_GetSerialNumber(
   869         PKIX_ComCertSelParams *params,
   870         PKIX_PL_BigInt **pSerialNumber,
   871         void *plContext)
   872 {
   873         PKIX_ENTER(COMCERTSELPARAMS, "PKIX_ComCertSelParams_GetSerialNumber");
   874         PKIX_NULLCHECK_TWO(params, pSerialNumber);
   876         PKIX_INCREF(params->serialNumber);
   877         *pSerialNumber = params->serialNumber;
   879 cleanup:
   880         PKIX_RETURN(COMCERTSELPARAMS);
   881 }
   883 /*
   884  * FUNCTION: PKIX_ComCertSelParams_SetSerialNumber
   885  * (see comments in pkix_certsel.h)
   886  */
   887 PKIX_Error *
   888 PKIX_ComCertSelParams_SetSerialNumber(
   889         PKIX_ComCertSelParams *params,
   890         PKIX_PL_BigInt *serialNumber,
   891         void *plContext)
   892 {
   893         PKIX_ENTER(COMCERTSELPARAMS, "PKIX_ComCertSelParams_SetSerialNumber");
   894         PKIX_NULLCHECK_ONE(params);
   896         PKIX_DECREF(params->serialNumber);
   897         PKIX_INCREF(serialNumber);
   898         params->serialNumber = serialNumber;
   900         PKIX_CHECK(PKIX_PL_Object_InvalidateCache
   901                     ((PKIX_PL_Object *)params, plContext),
   902                     PKIX_OBJECTINVALIDATECACHEFAILED);
   904 cleanup:
   906         PKIX_RETURN(COMCERTSELPARAMS);
   907 }
   909 /*
   910  * FUNCTION: PKIX_ComCertSelParams_GetVersion
   911  * (see comments in pkix_certsel.h)
   912  */
   913 PKIX_Error *
   914 PKIX_ComCertSelParams_GetVersion(
   915         PKIX_ComCertSelParams *params,
   916         PKIX_UInt32 *pVersion,
   917         void *plContext)
   918 {
   919         PKIX_ENTER(COMCERTSELPARAMS, "PKIX_ComCertSelParams_GetVersion");
   920         PKIX_NULLCHECK_TWO(params, pVersion);
   922         *pVersion = params->version;
   924         PKIX_RETURN(COMCERTSELPARAMS);
   925 }
   927 /*
   928  * FUNCTION: PKIX_ComCertSelParams_SetVersion
   929  * (see comments in pkix_certsel.h)
   930  */
   931 PKIX_Error *
   932 PKIX_ComCertSelParams_SetVersion(
   933         PKIX_ComCertSelParams *params,
   934         PKIX_Int32 version,
   935         void *plContext)
   936 {
   937         PKIX_ENTER(COMCERTSELPARAMS, "PKIX_ComCertSelParams_SetVersion");
   938         PKIX_NULLCHECK_ONE(params);
   940         params->version = version;
   942         PKIX_CHECK(PKIX_PL_Object_InvalidateCache
   943                     ((PKIX_PL_Object *)params, plContext),
   944                     PKIX_OBJECTINVALIDATECACHEFAILED);
   946 cleanup:
   948         PKIX_RETURN(COMCERTSELPARAMS);
   949 }
   951 /*
   952  * FUNCTION: PKIX_ComCertSelParams_GetSubjKeyIdentifier
   953  * (see comments in pkix_certsel.h)
   954  */
   955 PKIX_Error *
   956 PKIX_ComCertSelParams_GetSubjKeyIdentifier(
   957         PKIX_ComCertSelParams *params,
   958         PKIX_PL_ByteArray **pSubjKeyId,
   959         void *plContext)
   960 {
   961         PKIX_ENTER(COMCERTSELPARAMS,
   962                     "PKIX_ComCertSelParams_GetSubjKeyIdentifier");
   963         PKIX_NULLCHECK_TWO(params, pSubjKeyId);
   965         PKIX_INCREF(params->subjKeyId);
   967         *pSubjKeyId = params->subjKeyId;
   969 cleanup:
   970         PKIX_RETURN(COMCERTSELPARAMS);
   971 }
   973 /*
   974  * FUNCTION: PKIX_ComCertSelParams_SetSubjKeyIdentifier
   975  * (see comments in pkix_certsel.h)
   976  */
   977 PKIX_Error *
   978 PKIX_ComCertSelParams_SetSubjKeyIdentifier(
   979         PKIX_ComCertSelParams *params,
   980         PKIX_PL_ByteArray *subjKeyId,
   981         void *plContext)
   982 {
   983         PKIX_ENTER(COMCERTSELPARAMS,
   984                     "PKIX_ComCertSelParams_SetSubjKeyIdentifier");
   985         PKIX_NULLCHECK_ONE(params);
   987         PKIX_DECREF(params->subjKeyId);
   988         PKIX_INCREF(subjKeyId);
   990         params->subjKeyId = subjKeyId;
   992         PKIX_CHECK(PKIX_PL_Object_InvalidateCache
   993                     ((PKIX_PL_Object *)params, plContext),
   994                     PKIX_OBJECTINVALIDATECACHEFAILED);
   996 cleanup:
   998         PKIX_RETURN(COMCERTSELPARAMS);
   999 }
  1001 /*
  1002  * FUNCTION: PKIX_ComCertSelParams_GetAuthorityKeyIdentifier
  1003  * (see comments in pkix_certsel.h)
  1004  */
  1005 PKIX_Error *
  1006 PKIX_ComCertSelParams_GetAuthorityKeyIdentifier(
  1007         PKIX_ComCertSelParams *params,
  1008         PKIX_PL_ByteArray **pAuthKeyId,
  1009         void *plContext)
  1011         PKIX_ENTER(COMCERTSELPARAMS,
  1012                     "PKIX_ComCertSelParams_GetAuthorityKeyIdentifier");
  1013         PKIX_NULLCHECK_TWO(params, pAuthKeyId);
  1015         PKIX_INCREF(params->authKeyId);
  1017         *pAuthKeyId = params->authKeyId;
  1019 cleanup:
  1020         PKIX_RETURN(COMCERTSELPARAMS);
  1023 /*
  1024  * FUNCTION: PKIX_ComCertSelParams_SetAuthorityKeyIdentifier
  1025  * (see comments in pkix_certsel.h)
  1026  */
  1027 PKIX_Error *
  1028 PKIX_ComCertSelParams_SetAuthorityKeyIdentifier(
  1029         PKIX_ComCertSelParams *params,
  1030         PKIX_PL_ByteArray *authKeyId,
  1031         void *plContext)
  1033         PKIX_ENTER(COMCERTSELPARAMS,
  1034                     "PKIX_ComCertSelParams_SetAuthKeyIdentifier");
  1035         PKIX_NULLCHECK_ONE(params);
  1037         PKIX_DECREF(params->authKeyId);
  1038         PKIX_INCREF(authKeyId);
  1040         params->authKeyId = authKeyId;
  1042         PKIX_CHECK(PKIX_PL_Object_InvalidateCache
  1043                     ((PKIX_PL_Object *)params, plContext),
  1044                     PKIX_OBJECTINVALIDATECACHEFAILED);
  1046 cleanup:
  1048         PKIX_RETURN(COMCERTSELPARAMS);
  1051 /*
  1052  * FUNCTION: PKIX_ComCertSelParams_GetSubjPubKey
  1053  * (see comments in pkix_certsel.h)
  1054  */
  1055 PKIX_Error *
  1056 PKIX_ComCertSelParams_GetSubjPubKey(
  1057         PKIX_ComCertSelParams *params,
  1058         PKIX_PL_PublicKey **pSubjPubKey,
  1059         void *plContext)
  1061         PKIX_ENTER(COMCERTSELPARAMS, "PKIX_ComCertSelParams_GetSubjPubKey");
  1062         PKIX_NULLCHECK_TWO(params, pSubjPubKey);
  1064         PKIX_INCREF(params->subjPubKey);
  1066         *pSubjPubKey = params->subjPubKey;
  1068 cleanup:
  1069         PKIX_RETURN(COMCERTSELPARAMS);
  1072 /*
  1073  * FUNCTION: PKIX_ComCertSelParams_SetSubjPubKey
  1074  * (see comments in pkix_certsel.h)
  1075  */
  1076 PKIX_Error *
  1077 PKIX_ComCertSelParams_SetSubjPubKey(
  1078         PKIX_ComCertSelParams *params,
  1079         PKIX_PL_PublicKey *subjPubKey,
  1080         void *plContext)
  1082         PKIX_ENTER(COMCERTSELPARAMS,
  1083                     "PKIX_ComCertSelParams_SetSubjPubKey");
  1084         PKIX_NULLCHECK_ONE(params);
  1086         PKIX_DECREF(params->subjPubKey);
  1087         PKIX_INCREF(subjPubKey);
  1089         params->subjPubKey = subjPubKey;
  1091         PKIX_CHECK(PKIX_PL_Object_InvalidateCache
  1092                     ((PKIX_PL_Object *)params, plContext),
  1093                     PKIX_OBJECTINVALIDATECACHEFAILED);
  1095 cleanup:
  1097         PKIX_RETURN(COMCERTSELPARAMS);
  1100 /*
  1101  * FUNCTION: PKIX_ComCertSelParams_GetSubjPKAlgId
  1102  * (see comments in pkix_certsel.h)
  1103  */
  1104 PKIX_Error *
  1105 PKIX_ComCertSelParams_GetSubjPKAlgId(
  1106         PKIX_ComCertSelParams *params,
  1107         PKIX_PL_OID **pAlgId,
  1108         void *plContext)
  1110         PKIX_ENTER(COMCERTSELPARAMS, "PKIX_ComCertSelParams_GetSubjPKAlgId");
  1111         PKIX_NULLCHECK_TWO(params, pAlgId);
  1113         PKIX_INCREF(params->subjPKAlgId);
  1115         *pAlgId = params->subjPKAlgId;
  1117 cleanup:
  1118         PKIX_RETURN(COMCERTSELPARAMS);
  1121 /*
  1122  * FUNCTION: PKIX_ComCertSelParams_SetSubjPKAlgId
  1123  * (see comments in pkix_certsel.h)
  1124  */
  1125 PKIX_Error *
  1126 PKIX_ComCertSelParams_SetSubjPKAlgId(
  1127         PKIX_ComCertSelParams *params,
  1128         PKIX_PL_OID *algId,
  1129         void *plContext)
  1131         PKIX_ENTER(COMCERTSELPARAMS, "PKIX_ComCertSelParams_SetSubjPKAlgId");
  1132         PKIX_NULLCHECK_ONE(params);
  1134         PKIX_DECREF(params->subjPKAlgId);
  1135         PKIX_INCREF(algId);
  1137         params->subjPKAlgId = algId;
  1139         PKIX_CHECK(PKIX_PL_Object_InvalidateCache
  1140                     ((PKIX_PL_Object *)params, plContext),
  1141                     PKIX_OBJECTINVALIDATECACHEFAILED);
  1143 cleanup:
  1145         PKIX_RETURN(COMCERTSELPARAMS);
  1148 /*
  1149  * FUNCTION: PKIX_ComCertSelParams_GetLeafCertFlag
  1150  * (see comments in pkix_certsel.h)
  1151  */
  1152 PKIX_Error*
  1153 PKIX_ComCertSelParams_GetLeafCertFlag(
  1154         PKIX_ComCertSelParams *params,
  1155         PKIX_Boolean *pLeafFlag,
  1156         void *plContext)
  1158         PKIX_ENTER(COMCERTSELPARAMS, "PKIX_ComCertSelParams_GetLeafCertFlag");
  1159         PKIX_NULLCHECK_TWO(params, pLeafFlag);
  1161         *pLeafFlag = params->leafCertFlag;
  1163         PKIX_RETURN(COMCERTSELPARAMS);
  1166 /*
  1167  * FUNCTION: PKIX_ComCertSelParams_SetLeafCertFlag
  1168  * (see comments in pkix_certsel.h)
  1169  */
  1170 PKIX_Error *
  1171 PKIX_ComCertSelParams_SetLeafCertFlag(
  1172         PKIX_ComCertSelParams *params,
  1173         PKIX_Boolean leafFlag,
  1174         void *plContext)
  1176         PKIX_ENTER(COMCERTSELPARAMS, "PKIX_ComCertSelParams_SetLeafCertFlag");
  1177         PKIX_NULLCHECK_ONE(params);
  1179         params->leafCertFlag = leafFlag;
  1181         PKIX_CHECK(PKIX_PL_Object_InvalidateCache
  1182                     ((PKIX_PL_Object *)params, plContext),
  1183                     PKIX_OBJECTINVALIDATECACHEFAILED);
  1185 cleanup:
  1187         PKIX_RETURN(COMCERTSELPARAMS);

mercurial