michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: /* michael@0: * pkix_comcrlselparams.c michael@0: * michael@0: * ComCRLSelParams Function Definitions michael@0: * michael@0: */ michael@0: michael@0: #include "pkix_comcrlselparams.h" michael@0: michael@0: /* --ComCRLSelParams-Private-Functions------------------------------------ */ michael@0: michael@0: /* michael@0: * FUNCTION: pkix_ComCrlSelParams_Destroy michael@0: * (see comments for PKIX_PL_DestructorCallback in pkix_pl_system.h) michael@0: */ michael@0: static PKIX_Error * michael@0: pkix_ComCRLSelParams_Destroy( michael@0: PKIX_PL_Object *object, michael@0: void *plContext) michael@0: { michael@0: PKIX_ComCRLSelParams *params = NULL; michael@0: michael@0: PKIX_ENTER(COMCRLSELPARAMS, "pkix_ComCRLSelParams_Destroy"); michael@0: PKIX_NULLCHECK_ONE(object); michael@0: michael@0: PKIX_CHECK(pkix_CheckType michael@0: (object, PKIX_COMCRLSELPARAMS_TYPE, plContext), michael@0: PKIX_OBJECTNOTCOMCRLSELPARAMS); michael@0: michael@0: params = (PKIX_ComCRLSelParams *)object; michael@0: michael@0: PKIX_DECREF(params->issuerNames); michael@0: PKIX_DECREF(params->cert); michael@0: PKIX_DECREF(params->date); michael@0: PKIX_DECREF(params->maxCRLNumber); michael@0: PKIX_DECREF(params->minCRLNumber); michael@0: PKIX_DECREF(params->crldpList); michael@0: michael@0: cleanup: michael@0: michael@0: PKIX_RETURN(COMCRLSELPARAMS); michael@0: } michael@0: michael@0: /* michael@0: * FUNCTION: pkix_ComCRLSelParams_ToString_Helper michael@0: * DESCRIPTION: michael@0: * michael@0: * Helper function that creates a string representation of ComCRLSelParams michael@0: * pointed to by "crlParams" and stores the result at "pString". michael@0: * michael@0: * PARAMETERS michael@0: * "crlParams" michael@0: * Address of ComCRLSelParams whose string representation is desired. michael@0: * Must be non-NULL. michael@0: * "pString" michael@0: * Address of object pointer's destination. Must be non-NULL. michael@0: * "plContext" - Platform-specific context pointer. michael@0: * michael@0: * THREAD SAFETY: michael@0: * Conditionally Thread Safe michael@0: * (see Thread Safety Definitions in Programmer's Guide) michael@0: * michael@0: * RETURNS: michael@0: * Returns NULL if the function succeeds. michael@0: * Returns a CRLEntry Error if the function fails in a non-fatal way. michael@0: * Returns a Fatal Error if the function fails in an unrecoverable way. michael@0: */ michael@0: static PKIX_Error * michael@0: pkix_ComCRLSelParams_ToString_Helper( michael@0: PKIX_ComCRLSelParams *crlParams, michael@0: PKIX_PL_String **pString, michael@0: void *plContext) michael@0: { michael@0: PKIX_PL_String *crlIssuerNamesString = NULL; michael@0: PKIX_PL_String *crlDateString = NULL; michael@0: PKIX_PL_String *crlMaxCRLNumberString = NULL; michael@0: PKIX_PL_String *crlMinCRLNumberString = NULL; michael@0: PKIX_PL_String *crlCertString = NULL; michael@0: PKIX_PL_String *crlParamsString = NULL; michael@0: char *asciiFormat = NULL; michael@0: PKIX_PL_String *formatString = NULL; michael@0: michael@0: PKIX_ENTER(COMCRLSELPARAMS, "pkix_ComCRLSelParams_ToString_Helper"); michael@0: PKIX_NULLCHECK_TWO(crlParams, pString); michael@0: michael@0: asciiFormat = michael@0: "\n\t[\n" michael@0: "\tIssuerNames: %s\n" michael@0: "\tDate: %s\n" michael@0: "\tmaxCRLNumber: %s\n" michael@0: "\tminCRLNumber: %s\n" michael@0: "\tCertificate: %s\n" michael@0: "\t]\n"; michael@0: michael@0: PKIX_CHECK(PKIX_PL_String_Create michael@0: (PKIX_ESCASCII, michael@0: asciiFormat, michael@0: 0, michael@0: &formatString, michael@0: plContext), michael@0: PKIX_STRINGCREATEFAILED); michael@0: michael@0: PKIX_TOSTRING michael@0: (crlParams->issuerNames, &crlIssuerNamesString, plContext, michael@0: PKIX_LISTTOSTRINGFAILED); michael@0: michael@0: PKIX_TOSTRING(crlParams->date, &crlDateString, plContext, michael@0: PKIX_DATETOSTRINGFAILED); michael@0: michael@0: PKIX_TOSTRING michael@0: (crlParams->maxCRLNumber, &crlMaxCRLNumberString, plContext, michael@0: PKIX_BIGINTTOSTRINGFAILED); michael@0: michael@0: PKIX_TOSTRING michael@0: (crlParams->minCRLNumber, &crlMinCRLNumberString, plContext, michael@0: PKIX_BIGINTTOSTRINGFAILED); michael@0: michael@0: PKIX_TOSTRING(crlParams->cert, &crlCertString, plContext, michael@0: PKIX_CERTTOSTRINGFAILED); michael@0: michael@0: PKIX_CHECK(PKIX_PL_Sprintf michael@0: (&crlParamsString, michael@0: plContext, michael@0: formatString, michael@0: crlIssuerNamesString, michael@0: crlDateString, michael@0: crlMaxCRLNumberString, michael@0: crlMinCRLNumberString, michael@0: crlCertString), michael@0: PKIX_SPRINTFFAILED); michael@0: michael@0: *pString = crlParamsString; michael@0: michael@0: cleanup: michael@0: michael@0: PKIX_DECREF(crlIssuerNamesString); michael@0: PKIX_DECREF(crlDateString); michael@0: PKIX_DECREF(crlMaxCRLNumberString); michael@0: PKIX_DECREF(crlMinCRLNumberString); michael@0: PKIX_DECREF(crlCertString); michael@0: PKIX_DECREF(formatString); michael@0: michael@0: PKIX_RETURN(COMCRLSELPARAMS); michael@0: } michael@0: michael@0: /* michael@0: * FUNCTION: pkix_ComCRLSelParams_ToString michael@0: * (see comments for PKIX_PL_ToStringCallback in pkix_pl_system.h) michael@0: */ michael@0: static PKIX_Error * michael@0: pkix_ComCRLSelParams_ToString( michael@0: PKIX_PL_Object *object, michael@0: PKIX_PL_String **pString, michael@0: void *plContext) michael@0: { michael@0: PKIX_PL_String *crlParamsString = NULL; michael@0: PKIX_ComCRLSelParams *crlParams = NULL; michael@0: michael@0: PKIX_ENTER(COMCRLSELPARAMS, "pkix_ComCRLSelParams_ToString"); michael@0: PKIX_NULLCHECK_TWO(object, pString); michael@0: michael@0: PKIX_CHECK(pkix_CheckType(object, PKIX_COMCRLSELPARAMS_TYPE, plContext), michael@0: PKIX_OBJECTNOTCOMCRLSELPARAMS); michael@0: michael@0: crlParams = (PKIX_ComCRLSelParams *) object; michael@0: michael@0: PKIX_CHECK(pkix_ComCRLSelParams_ToString_Helper michael@0: (crlParams, &crlParamsString, plContext), michael@0: PKIX_COMCRLSELPARAMSTOSTRINGHELPERFAILED); michael@0: michael@0: *pString = crlParamsString; michael@0: michael@0: cleanup: michael@0: michael@0: PKIX_RETURN(COMCRLSELPARAMS); michael@0: } michael@0: michael@0: /* michael@0: * FUNCTION: pkix_ComCRLSelParams_Hashcode michael@0: * (see comments for PKIX_PL_HashcodeCallback in pkix_pl_system.h) michael@0: */ michael@0: static PKIX_Error * michael@0: pkix_ComCRLSelParams_Hashcode( michael@0: PKIX_PL_Object *object, michael@0: PKIX_UInt32 *pHashcode, michael@0: void *plContext) michael@0: { michael@0: PKIX_ComCRLSelParams *crlParams = NULL; michael@0: PKIX_UInt32 namesHash = 0; michael@0: PKIX_UInt32 certHash = 0; michael@0: PKIX_UInt32 dateHash = 0; michael@0: PKIX_UInt32 maxCRLNumberHash = 0; michael@0: PKIX_UInt32 minCRLNumberHash = 0; michael@0: PKIX_UInt32 hash = 0; michael@0: michael@0: PKIX_ENTER(COMCRLSELPARAMS, "pkix_ComCRLSelParams_Hashcode"); michael@0: PKIX_NULLCHECK_TWO(object, pHashcode); michael@0: michael@0: PKIX_CHECK(pkix_CheckType(object, PKIX_COMCRLSELPARAMS_TYPE, plContext), michael@0: PKIX_OBJECTNOTCOMCRLSELPARAMS); michael@0: michael@0: crlParams = (PKIX_ComCRLSelParams *)object; michael@0: michael@0: PKIX_HASHCODE(crlParams->issuerNames, &namesHash, plContext, michael@0: PKIX_OBJECTHASHCODEFAILED); michael@0: michael@0: PKIX_HASHCODE(crlParams->cert, &certHash, plContext, michael@0: PKIX_OBJECTHASHCODEFAILED); michael@0: michael@0: PKIX_HASHCODE(crlParams->date, &dateHash, plContext, michael@0: PKIX_OBJECTHASHCODEFAILED); michael@0: michael@0: PKIX_HASHCODE(crlParams->maxCRLNumber, &maxCRLNumberHash, plContext, michael@0: PKIX_OBJECTHASHCODEFAILED); michael@0: michael@0: PKIX_HASHCODE(crlParams->minCRLNumber, &minCRLNumberHash, plContext, michael@0: PKIX_OBJECTHASHCODEFAILED); michael@0: michael@0: michael@0: hash = (((namesHash << 3) + certHash) << 3) + dateHash; michael@0: hash = (hash << 3) + maxCRLNumberHash + minCRLNumberHash; michael@0: michael@0: *pHashcode = hash; michael@0: michael@0: cleanup: michael@0: michael@0: PKIX_RETURN(COMCRLSELPARAMS); michael@0: } michael@0: michael@0: /* michael@0: * FUNCTION: pkix_ComCRLSelParams_Equals michael@0: * (see comments for PKIX_PL_Equals_Callback in pkix_pl_system.h) michael@0: */ michael@0: static PKIX_Error * michael@0: pkix_ComCRLSelParams_Equals( michael@0: PKIX_PL_Object *firstObject, michael@0: PKIX_PL_Object *secondObject, michael@0: PKIX_Boolean *pResult, michael@0: void *plContext) michael@0: { michael@0: PKIX_ComCRLSelParams *firstCrlParams = NULL; michael@0: PKIX_ComCRLSelParams *secondCrlParams = NULL; michael@0: PKIX_UInt32 secondType; michael@0: PKIX_Boolean cmpResult = PKIX_FALSE; michael@0: michael@0: PKIX_ENTER(COMCRLSELPARAMS, "pkix_ComCRLSelParams_Equals"); michael@0: PKIX_NULLCHECK_THREE(firstObject, secondObject, pResult); michael@0: michael@0: /* test that firstObject is a ComCRLSelParams */ michael@0: PKIX_CHECK(pkix_CheckType michael@0: (firstObject, PKIX_COMCRLSELPARAMS_TYPE, plContext), michael@0: PKIX_FIRSTOBJECTNOTCOMCRLSELPARAMS); michael@0: michael@0: firstCrlParams = (PKIX_ComCRLSelParams *)firstObject; michael@0: secondCrlParams = (PKIX_ComCRLSelParams *)secondObject; michael@0: michael@0: /* michael@0: * Since we know firstObject is a ComCRLSelParams, if both references michael@0: * are identical, they must be equal michael@0: */ michael@0: if (firstCrlParams == secondCrlParams){ michael@0: *pResult = PKIX_TRUE; michael@0: goto cleanup; michael@0: } michael@0: michael@0: /* michael@0: * If secondComCRLSelParams isn't a ComCRLSelParams, we don't michael@0: * throw an error. We simply return a Boolean result of FALSE michael@0: */ michael@0: *pResult = PKIX_FALSE; michael@0: PKIX_CHECK(PKIX_PL_Object_GetType michael@0: ((PKIX_PL_Object *)secondCrlParams, &secondType, plContext), michael@0: PKIX_COULDNOTGETTYPEOFSECONDARGUMENT); michael@0: michael@0: if (secondType != PKIX_COMCRLSELPARAMS_TYPE) { michael@0: goto cleanup; michael@0: } michael@0: michael@0: /* Compare Issuer Names */ michael@0: PKIX_EQUALS michael@0: (firstCrlParams->issuerNames, michael@0: secondCrlParams->issuerNames, michael@0: &cmpResult, michael@0: plContext, michael@0: PKIX_LISTEQUALSFAILED); michael@0: michael@0: if (cmpResult != PKIX_TRUE) { michael@0: goto cleanup; michael@0: } michael@0: michael@0: /* Compare Date */ michael@0: PKIX_EQUALS michael@0: (firstCrlParams->date, michael@0: secondCrlParams->date, michael@0: &cmpResult, michael@0: plContext, michael@0: PKIX_DATEEQUALSFAILED); michael@0: michael@0: if (cmpResult != PKIX_TRUE) { michael@0: goto cleanup; michael@0: } michael@0: michael@0: /* Compare Max CRL Number */ michael@0: PKIX_EQUALS michael@0: (firstCrlParams->maxCRLNumber, michael@0: secondCrlParams->maxCRLNumber, michael@0: &cmpResult, michael@0: plContext, michael@0: PKIX_BIGINTEQUALSFAILED); michael@0: michael@0: if (cmpResult != PKIX_TRUE) { michael@0: goto cleanup; michael@0: } michael@0: michael@0: /* Compare Min CRL Number */ michael@0: PKIX_EQUALS michael@0: (firstCrlParams->minCRLNumber, michael@0: secondCrlParams->minCRLNumber, michael@0: &cmpResult, michael@0: plContext, michael@0: PKIX_BIGINTEQUALSFAILED); michael@0: michael@0: if (cmpResult != PKIX_TRUE) { michael@0: goto cleanup; michael@0: } michael@0: michael@0: /* Compare Cert */ michael@0: PKIX_EQUALS michael@0: (firstCrlParams->cert, michael@0: secondCrlParams->cert, michael@0: &cmpResult, michael@0: plContext, michael@0: PKIX_CERTEQUALSFAILED); michael@0: michael@0: *pResult = cmpResult; michael@0: michael@0: cleanup: michael@0: michael@0: PKIX_RETURN(COMCRLSELPARAMS); michael@0: } michael@0: michael@0: /* michael@0: * FUNCTION: pkix_ComCRLSelParams_Duplicate michael@0: * (see comments for PKIX_PL_Duplicate_Callback in pkix_pl_system.h) michael@0: */ michael@0: static PKIX_Error * michael@0: pkix_ComCRLSelParams_Duplicate( michael@0: PKIX_PL_Object *object, michael@0: PKIX_PL_Object **pNewObject, michael@0: void *plContext) michael@0: { michael@0: PKIX_ComCRLSelParams *old; michael@0: PKIX_ComCRLSelParams *new = NULL; michael@0: michael@0: PKIX_ENTER(COMCRLSELPARAMS, "pkix_ComCRLSelParams_Duplicate"); michael@0: PKIX_NULLCHECK_TWO(object, pNewObject); michael@0: michael@0: PKIX_CHECK(pkix_CheckType(object, PKIX_COMCRLSELPARAMS_TYPE, plContext), michael@0: PKIX_OBJECTNOTCOMCRLSELPARAMS); michael@0: michael@0: old = (PKIX_ComCRLSelParams *)object; michael@0: michael@0: PKIX_CHECK(PKIX_PL_Object_Alloc michael@0: (PKIX_COMCRLSELPARAMS_TYPE, michael@0: (PKIX_UInt32)(sizeof (PKIX_ComCRLSelParams)), michael@0: (PKIX_PL_Object **)&new, michael@0: plContext), michael@0: PKIX_OBJECTALLOCFAILED); michael@0: michael@0: PKIX_DUPLICATE(old->cert, &new->cert, plContext, michael@0: PKIX_OBJECTDUPLICATECERTFAILED); michael@0: michael@0: PKIX_DUPLICATE(old->crldpList, &new->crldpList, plContext, michael@0: PKIX_OBJECTDUPLICATECERTFAILED); michael@0: michael@0: PKIX_DUPLICATE(old->issuerNames, &new->issuerNames, plContext, michael@0: PKIX_OBJECTDUPLICATEISSUERNAMESFAILED); michael@0: michael@0: PKIX_DUPLICATE(old->date, &new->date, plContext, michael@0: PKIX_OBJECTDUPLICATEDATEFAILED); michael@0: michael@0: PKIX_DUPLICATE(old->maxCRLNumber, &new->maxCRLNumber, plContext, michael@0: PKIX_OBJECTDUPLICATEMAXCRLNUMBERFAILED); michael@0: michael@0: PKIX_DUPLICATE(old->minCRLNumber, &new->minCRLNumber, plContext, michael@0: PKIX_OBJECTDUPLICATEMINCRLNUMBERFAILED); michael@0: michael@0: *pNewObject = (PKIX_PL_Object *)new; michael@0: michael@0: cleanup: michael@0: michael@0: if (PKIX_ERROR_RECEIVED){ michael@0: PKIX_DECREF(new); michael@0: } michael@0: michael@0: PKIX_RETURN(COMCRLSELPARAMS); michael@0: } michael@0: michael@0: /* michael@0: * FUNCTION: pkix_ComCrlSelParams_RegisterSelf michael@0: * DESCRIPTION: michael@0: * Registers PKIX_COMCRLSELPARAMS_TYPE and its related functions with michael@0: * systemClasses[] michael@0: * THREAD SAFETY: michael@0: * Not Thread Safe - for performance and complexity reasons michael@0: * michael@0: * Since this function is only called by PKIX_PL_Initialize, which should michael@0: * only be called once, it is acceptable that this function is not michael@0: * thread-safe. michael@0: */ michael@0: PKIX_Error * michael@0: pkix_ComCRLSelParams_RegisterSelf(void *plContext) michael@0: { michael@0: extern pkix_ClassTable_Entry systemClasses[PKIX_NUMTYPES]; michael@0: pkix_ClassTable_Entry entry; michael@0: michael@0: PKIX_ENTER(COMCRLSELPARAMS, "pkix_ComCRLSelParams_RegisterSelf"); michael@0: michael@0: entry.description = "ComCRLSelParams"; michael@0: entry.objCounter = 0; michael@0: entry.typeObjectSize = sizeof(PKIX_ComCRLSelParams); michael@0: entry.destructor = pkix_ComCRLSelParams_Destroy; michael@0: entry.equalsFunction = pkix_ComCRLSelParams_Equals; michael@0: entry.hashcodeFunction = pkix_ComCRLSelParams_Hashcode; michael@0: entry.toStringFunction = pkix_ComCRLSelParams_ToString; michael@0: entry.comparator = NULL; michael@0: entry.duplicateFunction = pkix_ComCRLSelParams_Duplicate; michael@0: michael@0: systemClasses[PKIX_COMCRLSELPARAMS_TYPE] = entry; michael@0: michael@0: PKIX_RETURN(COMCRLSELPARAMS); michael@0: } michael@0: michael@0: /* --ComCRLSelParams-Public-Functions------------------------------------- */ michael@0: michael@0: /* michael@0: * FUNCTION: PKIX_ComCRLSelParams_Create (see comments in pkix_crlsel.h) michael@0: */ michael@0: PKIX_Error * michael@0: PKIX_ComCRLSelParams_Create( michael@0: PKIX_ComCRLSelParams **pParams, michael@0: void *plContext) michael@0: { michael@0: PKIX_ComCRLSelParams *params = NULL; michael@0: michael@0: PKIX_ENTER(COMCRLSELPARAMS, "PKIX_ComCRLSelParams_Create"); michael@0: PKIX_NULLCHECK_ONE(pParams); michael@0: michael@0: PKIX_CHECK(PKIX_PL_Object_Alloc michael@0: (PKIX_COMCRLSELPARAMS_TYPE, michael@0: sizeof (PKIX_ComCRLSelParams), michael@0: (PKIX_PL_Object **)¶ms, michael@0: plContext), michael@0: PKIX_COULDNOTCREATECOMMONCRLSELECTORPARAMSOBJECT); michael@0: michael@0: /* initialize fields */ michael@0: params->issuerNames = NULL; michael@0: params->cert = NULL; michael@0: params->crldpList = NULL; michael@0: params->date = NULL; michael@0: params->nistPolicyEnabled = PKIX_TRUE; michael@0: params->maxCRLNumber = NULL; michael@0: params->minCRLNumber = NULL; michael@0: michael@0: *pParams = params; michael@0: michael@0: cleanup: michael@0: michael@0: PKIX_RETURN(COMCRLSELPARAMS); michael@0: } michael@0: michael@0: /* michael@0: * FUNCTION: PKIX_ComCRLSelParams_GetIssuerNames (see comments in pkix_crlsel.h) michael@0: */ michael@0: PKIX_Error * michael@0: PKIX_ComCRLSelParams_GetIssuerNames( michael@0: PKIX_ComCRLSelParams *params, michael@0: PKIX_List **pIssuerNames, michael@0: void *plContext) michael@0: { michael@0: PKIX_ENTER(COMCRLSELPARAMS, "PKIX_ComCRLSelParams_GetIssuerNames"); michael@0: PKIX_NULLCHECK_TWO(params, pIssuerNames); michael@0: michael@0: PKIX_INCREF(params->issuerNames); michael@0: michael@0: *pIssuerNames = params->issuerNames; michael@0: michael@0: cleanup: michael@0: PKIX_RETURN(COMCRLSELPARAMS); michael@0: } michael@0: michael@0: /* michael@0: * FUNCTION: PKIX_ComCRLSelParams_SetIssuerNames (see comments in pkix_crlsel.h) michael@0: */ michael@0: PKIX_Error * michael@0: PKIX_ComCRLSelParams_SetIssuerNames( michael@0: PKIX_ComCRLSelParams *params, michael@0: PKIX_List *names, michael@0: void *plContext) michael@0: { michael@0: PKIX_ENTER(COMCRLSELPARAMS, "PKIX_ComCRLSelParams_SetIssuerNames"); michael@0: PKIX_NULLCHECK_ONE(params); /* allows null for names from spec */ michael@0: michael@0: PKIX_DECREF(params->issuerNames); michael@0: michael@0: PKIX_INCREF(names); /* if NULL, allows to reset for no action */ michael@0: michael@0: params->issuerNames = names; michael@0: michael@0: PKIX_CHECK(PKIX_PL_Object_InvalidateCache michael@0: ((PKIX_PL_Object *)params, plContext), michael@0: PKIX_OBJECTINVALIDATECACHEFAILED); michael@0: michael@0: cleanup: michael@0: michael@0: PKIX_RETURN(COMCRLSELPARAMS); michael@0: } michael@0: michael@0: /* michael@0: * FUNCTION: PKIX_ComCRLSelParams_AddIssuerName (see comments in pkix_crlsel.h) michael@0: */ michael@0: PKIX_Error * michael@0: PKIX_ComCRLSelParams_AddIssuerName( michael@0: PKIX_ComCRLSelParams *params, michael@0: PKIX_PL_X500Name *name, michael@0: void *plContext) michael@0: { michael@0: PKIX_List *list = NULL; michael@0: michael@0: PKIX_ENTER(COMCRLSELPARAMS, "PKIX_ComCRLSelParams_AddIssuerName"); michael@0: PKIX_NULLCHECK_ONE(params); michael@0: michael@0: if (name != NULL) { michael@0: michael@0: if (params->issuerNames == NULL) { michael@0: michael@0: PKIX_CHECK(PKIX_List_Create(&list, plContext), michael@0: PKIX_LISTCREATEFAILED); michael@0: params->issuerNames = list; michael@0: } michael@0: michael@0: PKIX_CHECK(PKIX_List_AppendItem michael@0: (params->issuerNames, (PKIX_PL_Object *)name, plContext), michael@0: PKIX_LISTAPPENDITEMFAILED); michael@0: michael@0: PKIX_CHECK(PKIX_PL_Object_InvalidateCache michael@0: ((PKIX_PL_Object *)params, plContext), michael@0: PKIX_OBJECTINVALIDATECACHEFAILED); michael@0: michael@0: } michael@0: michael@0: cleanup: michael@0: michael@0: PKIX_RETURN(COMCRLSELPARAMS); michael@0: } michael@0: michael@0: michael@0: /* michael@0: * FUNCTION: PKIX_ComCRLSelParams_GetCertificateChecking michael@0: * (see comments in pkix_crlsel.h) michael@0: */ michael@0: PKIX_Error * michael@0: PKIX_ComCRLSelParams_GetCertificateChecking( michael@0: PKIX_ComCRLSelParams *params, michael@0: PKIX_PL_Cert **pCert, michael@0: void *plContext) michael@0: { michael@0: PKIX_ENTER(COMCRLSELPARAMS, michael@0: "PKIX_ComCRLSelParams_GetCertificateChecking"); michael@0: PKIX_NULLCHECK_TWO(params, pCert); michael@0: michael@0: PKIX_INCREF(params->cert); michael@0: michael@0: *pCert = params->cert; michael@0: michael@0: cleanup: michael@0: PKIX_RETURN(COMCRLSELPARAMS); michael@0: } michael@0: michael@0: /* michael@0: * FUNCTION: PKIX_ComCRLSelParams_SetCertificateChecking michael@0: * (see comments in pkix_crlsel.h) michael@0: */ michael@0: PKIX_Error * michael@0: PKIX_ComCRLSelParams_SetCertificateChecking( michael@0: PKIX_ComCRLSelParams *params, michael@0: PKIX_PL_Cert *cert, michael@0: void *plContext) michael@0: { michael@0: PKIX_ENTER(COMCRLSELPARAMS, michael@0: "PKIX_ComCRLSelParams_SetCertificateChecking"); michael@0: PKIX_NULLCHECK_ONE(params); /* allows cert to be NULL from spec */ michael@0: michael@0: PKIX_DECREF(params->cert); michael@0: michael@0: PKIX_INCREF(cert); michael@0: michael@0: params->cert = cert; michael@0: michael@0: PKIX_CHECK(PKIX_PL_Object_InvalidateCache michael@0: ((PKIX_PL_Object *)params, plContext), michael@0: PKIX_OBJECTINVALIDATECACHEFAILED); michael@0: michael@0: cleanup: michael@0: michael@0: PKIX_RETURN(COMCRLSELPARAMS); michael@0: } michael@0: michael@0: michael@0: /* michael@0: * FUNCTION: PKIX_ComCRLSelParams_GetDateAndTime (see comments in pkix_crlsel.h) michael@0: */ michael@0: PKIX_Error * michael@0: PKIX_ComCRLSelParams_GetDateAndTime( michael@0: PKIX_ComCRLSelParams *params, michael@0: PKIX_PL_Date **pDate, michael@0: void *plContext) michael@0: { michael@0: PKIX_ENTER(COMCRLSELPARAMS, michael@0: "PKIX_ComCRLSelParams_GetDateAndTime"); michael@0: PKIX_NULLCHECK_TWO(params, pDate); michael@0: michael@0: PKIX_INCREF(params->date); michael@0: michael@0: *pDate = params->date; michael@0: michael@0: cleanup: michael@0: PKIX_RETURN(COMCRLSELPARAMS); michael@0: } michael@0: michael@0: /* michael@0: * FUNCTION: PKIX_ComCRLSelParams_SetDateAndTime (see comments in pkix_crlsel.h) michael@0: */ michael@0: PKIX_Error * michael@0: PKIX_ComCRLSelParams_SetDateAndTime( michael@0: PKIX_ComCRLSelParams *params, michael@0: PKIX_PL_Date *date, michael@0: void *plContext) michael@0: { michael@0: PKIX_ENTER(COMCRLSELPARAMS, michael@0: "PKIX_ComCRLSelParams_SetDateAndTime"); michael@0: PKIX_NULLCHECK_ONE(params); /* allows date to be NULL from spec */ michael@0: michael@0: PKIX_DECREF (params->date); michael@0: michael@0: PKIX_INCREF(date); michael@0: michael@0: params->date = date; michael@0: michael@0: PKIX_CHECK(PKIX_PL_Object_InvalidateCache michael@0: ((PKIX_PL_Object *)params, plContext), michael@0: PKIX_OBJECTINVALIDATECACHEFAILED); michael@0: michael@0: cleanup: michael@0: michael@0: PKIX_RETURN(COMCRLSELPARAMS); michael@0: } michael@0: michael@0: /* michael@0: * FUNCTION: PKIX_ComCRLSelParams_GetDateAndTime (see comments in pkix_crlsel.h) michael@0: */ michael@0: PKIX_Error * michael@0: PKIX_ComCRLSelParams_GetNISTPolicyEnabled( michael@0: PKIX_ComCRLSelParams *params, michael@0: PKIX_Boolean *pEnabled, michael@0: void *plContext) michael@0: { michael@0: PKIX_ENTER(COMCRLSELPARAMS, michael@0: "PKIX_ComCRLSelParams_GetNISTPolicyEnabled"); michael@0: PKIX_NULLCHECK_TWO(params, pEnabled); michael@0: michael@0: *pEnabled = params->nistPolicyEnabled; michael@0: michael@0: PKIX_RETURN(COMCRLSELPARAMS); michael@0: } michael@0: michael@0: /* michael@0: * FUNCTION: PKIX_ComCRLSelParams_SetDateAndTime (see comments in pkix_crlsel.h) michael@0: */ michael@0: PKIX_Error * michael@0: PKIX_ComCRLSelParams_SetNISTPolicyEnabled( michael@0: PKIX_ComCRLSelParams *params, michael@0: PKIX_Boolean enabled, michael@0: void *plContext) michael@0: { michael@0: PKIX_ENTER(COMCRLSELPARAMS, michael@0: "PKIX_ComCRLSelParams_SetNISTPolicyEnabled"); michael@0: PKIX_NULLCHECK_ONE(params); /* allows date to be NULL from spec */ michael@0: michael@0: params->nistPolicyEnabled = enabled; michael@0: michael@0: PKIX_CHECK(PKIX_PL_Object_InvalidateCache michael@0: ((PKIX_PL_Object *)params, plContext), michael@0: PKIX_OBJECTINVALIDATECACHEFAILED); michael@0: michael@0: cleanup: michael@0: michael@0: PKIX_RETURN(COMCRLSELPARAMS); michael@0: } michael@0: michael@0: /* michael@0: * FUNCTION: PKIX_ComCRLSelParams_GetMaxCRLNumber michael@0: * (see comments in pkix_crlsel.h) michael@0: */ michael@0: PKIX_Error * michael@0: PKIX_ComCRLSelParams_GetMaxCRLNumber( michael@0: PKIX_ComCRLSelParams *params, michael@0: PKIX_PL_BigInt **pMaxCRLNumber, michael@0: void *plContext) michael@0: { michael@0: PKIX_ENTER(COMCRLSELPARAMS, michael@0: "PKIX_ComCRLSelParams_GetMaxCRLNumber"); michael@0: PKIX_NULLCHECK_TWO(params, pMaxCRLNumber); michael@0: michael@0: PKIX_INCREF(params->maxCRLNumber); michael@0: michael@0: *pMaxCRLNumber = params->maxCRLNumber; michael@0: michael@0: cleanup: michael@0: PKIX_RETURN(COMCRLSELPARAMS); michael@0: } michael@0: michael@0: /* michael@0: * FUNCTION: PKIX_ComCRLSelParams_SetMaxCRLNumber michael@0: * (see comments in pkix_crlsel.h) michael@0: */ michael@0: PKIX_Error * michael@0: PKIX_ComCRLSelParams_SetMaxCRLNumber( michael@0: PKIX_ComCRLSelParams *params, michael@0: PKIX_PL_BigInt *maxCRLNumber, michael@0: void *plContext) michael@0: { michael@0: PKIX_ENTER(COMCRLSELPARAMS, michael@0: "PKIX_ComCRLSelParams_SetMaxCRLNumber"); michael@0: PKIX_NULLCHECK_ONE(params); /* maxCRLNumber can be NULL - from spec */ michael@0: michael@0: PKIX_DECREF(params->maxCRLNumber); michael@0: michael@0: PKIX_INCREF(maxCRLNumber); michael@0: michael@0: params->maxCRLNumber = maxCRLNumber; michael@0: michael@0: PKIX_CHECK(PKIX_PL_Object_InvalidateCache michael@0: ((PKIX_PL_Object *)params, plContext), michael@0: PKIX_OBJECTINVALIDATECACHEFAILED); michael@0: michael@0: cleanup: michael@0: michael@0: PKIX_RETURN(COMCRLSELPARAMS); michael@0: } michael@0: michael@0: michael@0: /* michael@0: * FUNCTION: PKIX_ComCRLSelParams_GetMinCRLNumber michael@0: * (see comments in pkix_crlsel.h) michael@0: */ michael@0: PKIX_Error * michael@0: PKIX_ComCRLSelParams_GetMinCRLNumber( michael@0: PKIX_ComCRLSelParams *params, michael@0: PKIX_PL_BigInt **pMinCRLNumber, michael@0: void *plContext) michael@0: { michael@0: PKIX_ENTER(COMCRLSELPARAMS, michael@0: "PKIX_ComCRLSelParams_GetMinCRLNumber"); michael@0: PKIX_NULLCHECK_TWO(params, pMinCRLNumber); michael@0: michael@0: PKIX_INCREF(params->minCRLNumber); michael@0: michael@0: *pMinCRLNumber = params->minCRLNumber; michael@0: michael@0: cleanup: michael@0: PKIX_RETURN(COMCRLSELPARAMS); michael@0: } michael@0: michael@0: /* michael@0: * FUNCTION: PKIX_ComCRLSelParams_SetMinCRLNumber michael@0: * (see comments in pkix_crlsel.h) michael@0: */ michael@0: PKIX_Error * michael@0: PKIX_ComCRLSelParams_SetMinCRLNumber( michael@0: PKIX_ComCRLSelParams *params, michael@0: PKIX_PL_BigInt *minCRLNumber, michael@0: void *plContext) michael@0: { michael@0: PKIX_ENTER(COMCRLSELPARAMS, michael@0: "PKIX_ComCRLSelParams_SetMinCRLNumber"); michael@0: PKIX_NULLCHECK_ONE(params); /* minCRLNumber can be NULL - from spec */ michael@0: michael@0: PKIX_DECREF(params->minCRLNumber); michael@0: michael@0: PKIX_INCREF(minCRLNumber); michael@0: michael@0: params->minCRLNumber = minCRLNumber; michael@0: michael@0: PKIX_CHECK(PKIX_PL_Object_InvalidateCache michael@0: ((PKIX_PL_Object *)params, plContext), michael@0: PKIX_OBJECTINVALIDATECACHEFAILED); michael@0: michael@0: cleanup: michael@0: michael@0: PKIX_RETURN(COMCRLSELPARAMS); michael@0: } michael@0: michael@0: michael@0: PKIX_Error* michael@0: PKIX_ComCRLSelParams_SetCrlDp( michael@0: PKIX_ComCRLSelParams *params, michael@0: PKIX_List *crldpList, michael@0: void *plContext) michael@0: { michael@0: PKIX_ENTER(COMCRLSELPARAMS, "PKIX_ComCRLSelParams_SetCrlDp"); michael@0: PKIX_NULLCHECK_ONE(params); /* minCRLNumber can be NULL - from spec */ michael@0: michael@0: PKIX_INCREF(crldpList); michael@0: params->crldpList = crldpList; michael@0: michael@0: PKIX_CHECK(PKIX_PL_Object_InvalidateCache michael@0: ((PKIX_PL_Object *)params, plContext), michael@0: PKIX_OBJECTINVALIDATECACHEFAILED); michael@0: cleanup: michael@0: michael@0: PKIX_RETURN(COMCRLSELPARAMS); michael@0: }