Index: mozilla/security/nss/lib/libpkix/pkix_pl_nss/pki/pkix_pl_crldp.c |
=================================================================== |
--- mozilla/security/nss/lib/libpkix/pkix_pl_nss/pki/pkix_pl_crldp.c (revision 191424) |
+++ mozilla/security/nss/lib/libpkix/pkix_pl_nss/pki/pkix_pl_crldp.c (working copy) |
@@ -1,151 +0,0 @@ |
-/* This Source Code Form is subject to the terms of the Mozilla Public |
- * License, v. 2.0. If a copy of the MPL was not distributed with this |
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
-/* |
- * pkix_pl_crldp.c |
- * |
- * Crl DP Object Functions |
- * |
- */ |
- |
-#include "pkix_pl_crldp.h" |
- |
-static PKIX_Error * |
-pkix_pl_CrlDp_Destroy( |
- PKIX_PL_Object *object, |
- void *plContext) |
-{ |
- pkix_pl_CrlDp *crldp = NULL; |
- |
- PKIX_ENTER(CRLCHECKER, "pkix_CrlDp_Destroy"); |
- PKIX_NULLCHECK_ONE(object); |
- |
- /* Check that this object is a default CRL checker state */ |
- PKIX_CHECK( |
- pkix_CheckType(object, PKIX_CRLDP_TYPE, plContext), |
- PKIX_OBJECTNOTCRLCHECKER); |
- |
- crldp = (pkix_pl_CrlDp *)object; |
- if (crldp->distPointType == relativeDistinguishedName) { |
- CERT_DestroyName(crldp->name.issuerName); |
- crldp->name.issuerName = NULL; |
- } |
- crldp->nssdp = NULL; |
-cleanup: |
- PKIX_RETURN(CRLCHECKER); |
-} |
- |
-/* |
- * FUNCTION: pkix_pl_CrlDp_RegisterSelf |
- * |
- * DESCRIPTION: |
- * Registers PKIX_CRLDP_TYPE and its related functions |
- * with systemClasses[] |
- * |
- * THREAD SAFETY: |
- * Not Thread Safe (see Thread Safety Definitions in Programmer's Guide) |
- * |
- * Since this function is only called by PKIX_PL_Initialize, which should |
- * only be called once, it is acceptable that this function is not |
- * thread-safe. |
- */ |
-PKIX_Error * |
-pkix_pl_CrlDp_RegisterSelf(void *plContext) |
-{ |
- extern pkix_ClassTable_Entry systemClasses[PKIX_NUMTYPES]; |
- pkix_ClassTable_Entry* entry = &systemClasses[PKIX_CRLDP_TYPE]; |
- |
- PKIX_ENTER(CRLCHECKER, "pkix_CrlDp_RegisterSelf"); |
- |
- entry->description = "CrlDistPoint"; |
- entry->typeObjectSize = sizeof(pkix_pl_CrlDp); |
- entry->destructor = pkix_pl_CrlDp_Destroy; |
- entry->duplicateFunction = pkix_duplicateImmutable; |
- |
- PKIX_RETURN(CRLCHECKER); |
-} |
- |
- |
- |
-PKIX_Error * |
-pkix_pl_CrlDp_Create( |
- const CRLDistributionPoint *dp, |
- const CERTName *certIssuerName, |
- pkix_pl_CrlDp **pPkixDP, |
- void *plContext) |
-{ |
- PRArenaPool *rdnArena = NULL; |
- CERTName *issuerNameCopy = NULL; |
- pkix_pl_CrlDp *dpl = NULL; |
- |
- /* Need to save the following info to update crl cache: |
- * - reasons if partitioned(but can not return revocation check |
- * success if not all crl are downloaded) |
- * - issuer name if different from issuer of the cert |
- * - url to upload a crl if needed. |
- * */ |
- PKIX_ENTER(CRLDP, "pkix_pl_CrlDp_Create"); |
- PKIX_NULLCHECK_ONE(dp); |
- |
- PKIX_CHECK( |
- PKIX_PL_Object_Alloc(PKIX_CRLDP_TYPE, |
- sizeof (pkix_pl_CrlDp), |
- (PKIX_PL_Object **)&dpl, |
- plContext), |
- PKIX_COULDNOTCREATEOBJECT); |
- |
- dpl->nssdp = dp; |
- dpl->isPartitionedByReasonCode = PKIX_FALSE; |
- if (dp->reasons.data) { |
- dpl->isPartitionedByReasonCode = PKIX_TRUE; |
- } |
- if (dp->distPointType == generalName) { |
- dpl->distPointType = generalName; |
- dpl->name.fullName = dp->distPoint.fullName; |
- } else { |
- SECStatus rv; |
- const CERTName *issuerName = NULL; |
- const CERTRDN *relName = &dp->distPoint.relativeName; |
- |
- if (dp->crlIssuer) { |
- if (dp->crlIssuer->l.next) { |
- /* Violate RFC 5280: in this case crlIssuer |
- * should have only one name and should be |
- * a distinguish name. */ |
- PKIX_ERROR(PKIX_NOTCONFORMINGCRLDP); |
- } |
- issuerName = &dp->crlIssuer->name.directoryName; |
- } else { |
- issuerName = certIssuerName; |
- } |
- rdnArena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE); |
- if (!rdnArena) { |
- PKIX_ERROR(PKIX_PORTARENAALLOCFAILED); |
- } |
- issuerNameCopy = (CERTName *)PORT_ArenaZNew(rdnArena, CERTName*); |
- if (!issuerNameCopy) { |
- PKIX_ERROR(PKIX_ALLOCERROR); |
- } |
- rv = CERT_CopyName(rdnArena, issuerNameCopy, (CERTName*)issuerName); |
- if (rv == SECFailure) { |
- PKIX_ERROR(PKIX_ALLOCERROR); |
- } |
- rv = CERT_AddRDN(issuerNameCopy, (CERTRDN*)relName); |
- if (rv == SECFailure) { |
- PKIX_ERROR(PKIX_ALLOCERROR); |
- } |
- dpl->distPointType = relativeDistinguishedName; |
- dpl->name.issuerName = issuerNameCopy; |
- rdnArena = NULL; |
- } |
- *pPkixDP = dpl; |
- dpl = NULL; |
- |
-cleanup: |
- if (rdnArena) { |
- PORT_FreeArena(rdnArena, PR_FALSE); |
- } |
- PKIX_DECREF(dpl); |
- |
- PKIX_RETURN(CRLDP); |
-} |