More extension code. Incomplete support for subject and issuer alt
[openssl.git] / crypto / x509 / x509_ext.c
1 /* crypto/x509/x509_ext.c */
2 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3  * All rights reserved.
4  *
5  * This package is an SSL implementation written
6  * by Eric Young (eay@cryptsoft.com).
7  * The implementation was written so as to conform with Netscapes SSL.
8  * 
9  * This library is free for commercial and non-commercial use as long as
10  * the following conditions are aheared to.  The following conditions
11  * apply to all code found in this distribution, be it the RC4, RSA,
12  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
13  * included with this distribution is covered by the same copyright terms
14  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15  * 
16  * Copyright remains Eric Young's, and as such any Copyright notices in
17  * the code are not to be removed.
18  * If this package is used in a product, Eric Young should be given attribution
19  * as the author of the parts of the library used.
20  * This can be in the form of a textual message at program startup or
21  * in documentation (online or textual) provided with the package.
22  * 
23  * Redistribution and use in source and binary forms, with or without
24  * modification, are permitted provided that the following conditions
25  * are met:
26  * 1. Redistributions of source code must retain the copyright
27  *    notice, this list of conditions and the following disclaimer.
28  * 2. Redistributions in binary form must reproduce the above copyright
29  *    notice, this list of conditions and the following disclaimer in the
30  *    documentation and/or other materials provided with the distribution.
31  * 3. All advertising materials mentioning features or use of this software
32  *    must display the following acknowledgement:
33  *    "This product includes cryptographic software written by
34  *     Eric Young (eay@cryptsoft.com)"
35  *    The word 'cryptographic' can be left out if the rouines from the library
36  *    being used are not cryptographic related :-).
37  * 4. If you include any Windows specific code (or a derivative thereof) from 
38  *    the apps directory (application code) you must include an acknowledgement:
39  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40  * 
41  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51  * SUCH DAMAGE.
52  * 
53  * The licence and distribution terms for any publically available version or
54  * derivative of this code cannot be changed.  i.e. this code cannot simply be
55  * copied and put under another distribution licence
56  * [including the GNU Public Licence.]
57  */
58
59 #include <stdio.h>
60 #include "stack.h"
61 #include "cryptlib.h"
62 #include "asn1.h"
63 #include "objects.h"
64 #include "evp.h"
65 #include "x509.h"
66
67 int X509_CRL_get_ext_count(x)
68 X509_CRL *x;
69         {
70         return(X509v3_get_ext_count(x->crl->extensions));
71         }
72
73 int X509_CRL_get_ext_by_NID(x,nid,lastpos)
74 X509_CRL *x;
75 int nid;
76 int lastpos;
77         {
78         return(X509v3_get_ext_by_NID(x->crl->extensions,nid,lastpos));
79         }
80
81 int X509_CRL_get_ext_by_OBJ(x,obj,lastpos)
82 X509_CRL *x;
83 ASN1_OBJECT *obj;
84 int lastpos;
85         {
86         return(X509v3_get_ext_by_OBJ(x->crl->extensions,obj,lastpos));
87         }
88
89 int X509_CRL_get_ext_by_critical(x,crit,lastpos)
90 X509_CRL *x;
91 int crit;
92 int lastpos;
93         {
94         return(X509v3_get_ext_by_critical(x->crl->extensions,crit,lastpos));
95         }
96
97 X509_EXTENSION *X509_CRL_get_ext(x,loc)
98 X509_CRL *x;
99 int loc;
100         {
101         return(X509v3_get_ext(x->crl->extensions,loc));
102         }
103
104 X509_EXTENSION *X509_CRL_delete_ext(x,loc)
105 X509_CRL *x;
106 int loc;
107         {
108         return(X509v3_delete_ext(x->crl->extensions,loc));
109         }
110
111 int X509_CRL_add_ext(x,ex,loc)
112 X509_CRL *x;
113 X509_EXTENSION *ex;
114 int loc;
115         {
116         return(X509v3_add_ext(&(x->crl->extensions),ex,loc) != NULL);
117         }
118
119 int X509_get_ext_count(x)
120 X509 *x;
121         {
122         return(X509v3_get_ext_count(x->cert_info->extensions));
123         }
124
125 int X509_get_ext_by_NID(x,nid,lastpos)
126 X509 *x;
127 int nid;
128 int lastpos;
129         {
130         return(X509v3_get_ext_by_NID(x->cert_info->extensions,nid,lastpos));
131         }
132
133 int X509_get_ext_by_OBJ(x,obj,lastpos)
134 X509 *x;
135 ASN1_OBJECT *obj;
136 int lastpos;
137         {
138         return(X509v3_get_ext_by_OBJ(x->cert_info->extensions,obj,lastpos));
139         }
140
141 int X509_get_ext_by_critical(x,crit,lastpos)
142 X509 *x;
143 int crit;
144 int lastpos;
145         {
146         return(X509v3_get_ext_by_critical(x->cert_info->extensions,crit,lastpos));
147         }
148
149 X509_EXTENSION *X509_get_ext(x,loc)
150 X509 *x;
151 int loc;
152         {
153         return(X509v3_get_ext(x->cert_info->extensions,loc));
154         }
155
156 X509_EXTENSION *X509_delete_ext(x,loc)
157 X509 *x;
158 int loc;
159         {
160         return(X509v3_delete_ext(x->cert_info->extensions,loc));
161         }
162
163 int X509_add_ext(x,ex,loc)
164 X509 *x;
165 X509_EXTENSION *ex;
166 int loc;
167         {
168         return(X509v3_add_ext(&(x->cert_info->extensions),ex,loc) != NULL);
169         }
170
171 int X509_REVOKED_get_ext_count(x)
172 X509_REVOKED *x;
173         {
174         return(X509v3_get_ext_count(x->extensions));
175         }
176
177 int X509_REVOKED_get_ext_by_NID(x,nid,lastpos)
178 X509_REVOKED *x;
179 int nid;
180 int lastpos;
181         {
182         return(X509v3_get_ext_by_NID(x->extensions,nid,lastpos));
183         }
184
185 int X509_REVOKED_get_ext_by_OBJ(x,obj,lastpos)
186 X509_REVOKED *x;
187 ASN1_OBJECT *obj;
188 int lastpos;
189         {
190         return(X509v3_get_ext_by_OBJ(x->extensions,obj,lastpos));
191         }
192
193 int X509_REVOKED_get_ext_by_critical(x,crit,lastpos)
194 X509_REVOKED *x;
195 int crit;
196 int lastpos;
197         {
198         return(X509v3_get_ext_by_critical(x->extensions,crit,lastpos));
199         }
200
201 X509_EXTENSION *X509_REVOKED_get_ext(x,loc)
202 X509_REVOKED *x;
203 int loc;
204         {
205         return(X509v3_get_ext(x->extensions,loc));
206         }
207
208 X509_EXTENSION *X509_REVOKED_delete_ext(x,loc)
209 X509_REVOKED *x;
210 int loc;
211         {
212         return(X509v3_delete_ext(x->extensions,loc));
213         }
214
215 int X509_REVOKED_add_ext(x,ex,loc)
216 X509_REVOKED *x;
217 X509_EXTENSION *ex;
218 int loc;
219         {
220         return(X509v3_add_ext(&(x->extensions),ex,loc) != NULL);
221         }
222