Back to index

lightning-sunbird  0.9+nobinonly
certdecode.c
Go to the documentation of this file.
00001 /* ***** BEGIN LICENSE BLOCK *****
00002  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
00003  *
00004  * The contents of this file are subject to the Mozilla Public License Version
00005  * 1.1 (the "License"); you may not use this file except in compliance with
00006  * the License. You may obtain a copy of the License at
00007  * http://www.mozilla.org/MPL/
00008  *
00009  * Software distributed under the License is distributed on an "AS IS" basis,
00010  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
00011  * for the specific language governing rights and limitations under the
00012  * License.
00013  *
00014  * The Original Code is the Netscape security libraries.
00015  *
00016  * The Initial Developer of the Original Code is
00017  * Netscape Communications Corporation.
00018  * Portions created by the Initial Developer are Copyright (C) 1994-2000
00019  * the Initial Developer. All Rights Reserved.
00020  *
00021  * Contributor(s):
00022  *
00023  * Alternatively, the contents of this file may be used under the terms of
00024  * either the GNU General Public License Version 2 or later (the "GPL"), or
00025  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00026  * in which case the provisions of the GPL or the LGPL are applicable instead
00027  * of those above. If you wish to allow use of your version of this file only
00028  * under the terms of either the GPL or the LGPL, and not to allow others to
00029  * use your version of this file under the terms of the MPL, indicate your
00030  * decision by deleting the provisions above and replace them with the notice
00031  * and other provisions required by the GPL or the LGPL. If you do not delete
00032  * the provisions above, a recipient may use your version of this file under
00033  * the terms of any one of the MPL, the GPL or the LGPL.
00034  *
00035  * ***** END LICENSE BLOCK ***** */
00036 
00037 #ifdef DEBUG
00038 static const char CVS_ID[] = "@(#) $RCSfile: certdecode.c,v $ $Revision: 1.16 $ $Date: 2005/01/20 02:25:48 $";
00039 #endif /* DEBUG */
00040 
00041 #ifndef PKIT_H
00042 #include "pkit.h"
00043 #endif /* PKIT_H */
00044 
00045 #ifndef PKIM_H
00046 #include "pkim.h"
00047 #endif /* PKIM_H */
00048 
00049 #ifdef NSS_3_4_CODE
00050 /* This is defined in pki3hack.c */
00051 NSS_EXTERN nssDecodedCert *
00052 nssDecodedPKIXCertificate_Create (
00053   NSSArena *arenaOpt,
00054   NSSDER *encoding
00055 );
00056 
00057 NSS_IMPLEMENT PRStatus
00058 nssDecodedPKIXCertificate_Destroy (
00059   nssDecodedCert *dc
00060 );
00061 #else /* NSS_4_0_CODE */
00062 /* This is where 4.0 PKIX code will handle the decoding */
00063 static nssDecodedCert *
00064 nssDecodedPKIXCertificate_Create (
00065   NSSArena *arenaOpt,
00066   NSSDER *encoding
00067 )
00068 {
00069     return (nssDecodedCert *)NULL;
00070 }
00071 
00072 static PRStatus
00073 nssDecodedPKIXCertificate_Destroy (
00074   nssDecodedCert *dc
00075 )
00076 {
00077     return PR_FAILURE;
00078 }
00079 #endif /* not NSS_3_4_CODE */
00080 
00081 NSS_IMPLEMENT nssDecodedCert *
00082 nssDecodedCert_Create (
00083   NSSArena *arenaOpt,
00084   NSSDER *encoding,
00085   NSSCertificateType type
00086 )
00087 {
00088     nssDecodedCert *rvDC = NULL;
00089     switch(type) {
00090     case NSSCertificateType_PKIX:
00091        rvDC = nssDecodedPKIXCertificate_Create(arenaOpt, encoding);
00092        break;
00093     default:
00094 #if 0
00095        nss_SetError(NSS_ERROR_INVALID_ARGUMENT);
00096 #endif
00097        return (nssDecodedCert *)NULL;
00098     }
00099     return rvDC;
00100 }
00101 
00102 NSS_IMPLEMENT PRStatus
00103 nssDecodedCert_Destroy (
00104   nssDecodedCert *dc
00105 )
00106 {
00107     if (!dc) {
00108        return PR_FAILURE;
00109     }
00110     switch(dc->type) {
00111     case NSSCertificateType_PKIX:
00112        return nssDecodedPKIXCertificate_Destroy(dc);
00113     default:
00114 #if 0
00115        nss_SetError(NSS_ERROR_INVALID_ARGUMENT);
00116 #endif
00117        break;
00118     }
00119     return PR_FAILURE;
00120 }
00121