diff options
author | jpierre%netscape.com <devnull@localhost> | 2002-06-13 10:14:50 +0000 |
---|---|---|
committer | jpierre%netscape.com <devnull@localhost> | 2002-06-13 10:14:50 +0000 |
commit | 99dfdd2cdc72c4f4b95de1778168d64a6424eff9 (patch) | |
tree | 714660bc9097ab47a41c55ad0d62a191bf26d810 /security/nss/lib/pkix/src/Name/verifyPointer.c | |
parent | ab3bebecde4f3ba653b7016173f8cfc7d39eed78 (diff) | |
parent | 46ac7a6ceb9218759caef8c6a7f163039a166be2 (diff) | |
download | nss-hg-99dfdd2cdc72c4f4b95de1778168d64a6424eff9.tar.gz |
Add missing AOL root CA certs
Diffstat (limited to 'security/nss/lib/pkix/src/Name/verifyPointer.c')
-rw-r--r-- | security/nss/lib/pkix/src/Name/verifyPointer.c | 210 |
1 files changed, 210 insertions, 0 deletions
diff --git a/security/nss/lib/pkix/src/Name/verifyPointer.c b/security/nss/lib/pkix/src/Name/verifyPointer.c new file mode 100644 index 000000000..6c27e5910 --- /dev/null +++ b/security/nss/lib/pkix/src/Name/verifyPointer.c @@ -0,0 +1,210 @@ +/* + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is the Netscape security libraries. + * + * The Initial Developer of the Original Code is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1994-2000 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the + * terms of the GNU General Public License Version 2 or later (the + * "GPL"), in which case the provisions of the GPL are applicable + * instead of those above. If you wish to allow use of your + * version of this file only under the terms of the GPL and not to + * allow others to use your version of this file under the MPL, + * indicate your decision by deleting the provisions above and + * replace them with the notice and other provisions required by + * the GPL. If you do not delete the provisions above, a recipient + * may use your version of this file under either the MPL or the + * GPL. + */ + +#ifdef DEBUG +static const char CVS_ID[] = "@(#) $Source$ $Revision$ $Date$ $Name$"; +#endif /* DEBUG */ + +#ifndef PKIXM_H +#include "pkixm.h" +#endif /* PKIXM_H */ + +#ifdef DEBUG + +extern const NSSError NSS_ERROR_INTERNAL_ERROR; + +static nssPointerTracker pkix_name_pointer_tracker; + +/* + * nss_pkix_Name_add_pointer + * + * This method is only present in debug builds. + * + * This module-private routine adds an NSSPKIXName pointer to + * the internal pointer-tracker. This routine should only be used + * by the NSSPKIX module. This routine returns a PRStatus value; + * upon error it will place an error on the error stack and return + * PR_FAILURE. + * + * The error may be one of the following values: + * NSS_ERROR_NO_MEMORY + * NSS_ERROR_INTERNAL_ERROR + * + * Return value: + * PR_SUCCESS upon success + * PR_FAILURE upon failure + */ + +NSS_IMPLEMENT PRStatus +nss_pkix_Name_add_pointer +( + const NSSPKIXName *p +) +{ + PRStatus rv; + + rv = nssPointerTracker_initialize(&pkix_name_pointer_tracker); + if( PR_SUCCESS != rv ) { + return rv; + } + + rv = nssPointerTracker_add(&pkix_name_pointer_tracker, p); + if( PR_SUCCESS != rv ) { + NSSError e = NSS_GetError(); + if( NSS_ERROR_NO_MEMORY != e ) { + nss_SetError(NSS_ERROR_INTERNAL_ERROR); + } + + return rv; + } + + rv = nssArena_registerDestructor(p->arena, + nss_pkix_Name_remove_pointer, p); + if( PR_SUCCESS != rv ) { + (void)nss_pkix_Name_remove_pointer(p); + return rv; + } + +#ifdef NSSDEBUG + switch( p->choice ) { + case NSSPKIXNameChoice_rdnSequence: + rv = nss_pkix_RDNSequence_register(p->u.rdnSequence); + break; + case NSSPKIXNameChoice_NSSinvalid: + default: + nss_SetError(NSS_ERROR_INTERNAL_ERROR); + rv = PR_FAILURE; + break; + } + + if( PR_SUCCESS != rv ) { + (void)nss_pkix_Name_remove_pointer(p); + } +#endif /* NSSDEBUG */ + + return rv; +} + +/* + * nss_pkix_Name_remove_pointer + * + * This method is only present in debug builds. + * + * This module-private routine removes a valid NSSPKIXName + * pointer from the internal pointer-tracker. This routine should + * only be used by the NSSPKIX module. This routine returns a + * PRStatus value; upon error it will place an error on the error + * stack and return PR_FAILURE. + * + * The error may be one of the following values: + * NSS_ERROR_INTERNAL_ERROR + * + * Return value: + * PR_SUCCESS upon success + * PR_FAILURE upon failure + */ + +NSS_IMPLEMENT PRStatus +nss_pkix_Name_remove_pointer +( + const NSSPKIXName *p +) +{ + PRStatus rv; + + rv = nssPointerTracker_remove(&pkix_name_pointer_tracker, p); + if( PR_SUCCESS != rv ) { + nss_SetError(NSS_ERROR_INTERNAL_ERROR); + } + +#ifdef NSSDEBUG + switch( p->choice ) { + case NSSPKIXNameChoice_rdnSequence: + (void)nss_pkix_RDNSequence_register(p->u.rdnSequence); + break; + case NSSPKIXNameChoice_NSSinvalid: + default: + break; + } +#endif /* NSSDEBUG */ + + /* + * nssArena_deregisterDestructor(p->arena, + * nss_pkix_Name_remove_pointer, p); + */ + + return rv; +} + +/* + * nssPKIXName_verifyPointer + * + * This method is only present in debug builds. + * + * If the specified pointer is a valid pointer to an NSSPKIXName + * object, this routine will return PR_SUCCESS. Otherwise, it will + * put an error on the error stack and return PR_FAILURE. + * + * The error may be one of the following values: + * NSS_ERROR_INVALID_PKIX_ATTRIBUTE + * + * Return value: + * PR_SUCCESS if the pointer is valid + * PR_FAILURE if it isn't + */ + +NSS_IMPLEMENT PRStatus +nssPKIXName_verifyPointer +( + NSSPKIXName *p +) +{ + PRStatus rv; + + rv = nssPointerTracker_initialize(&pkix_name_pointer_tracker); + if( PR_SUCCESS != rv ) { + nss_SetError(NSS_ERROR_INVALID_PKIX_ATTRIBUTE); + return PR_FAILURE; + } + + rv = nssPointerTracker_verify(&pkix_name_pointer_tracker, p); + if( PR_SUCCESS != rv ) { + nss_SetError(NSS_ERROR_INVALID_PKIX_ATTRIBUTE); + return PR_FAILURE; + } + + return PR_SUCCESS; +} + +#endif /* DEBUG */ + |