xref: /openbsd-src/lib/libcrypto/x509/x509_ext.c (revision 5b37fcf34e412bf0b6ad32ddb294e900d64c5855)
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 
223