|
1 /* x509v3.h */ |
|
2 /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL |
|
3 * project 1999. |
|
4 */ |
|
5 /* ==================================================================== |
|
6 * Copyright (c) 1999 The OpenSSL Project. All rights reserved. |
|
7 * |
|
8 * Redistribution and use in source and binary forms, with or without |
|
9 * modification, are permitted provided that the following conditions |
|
10 * are met: |
|
11 * |
|
12 * 1. Redistributions of source code must retain the above copyright |
|
13 * notice, this list of conditions and the following disclaimer. |
|
14 * |
|
15 * 2. Redistributions in binary form must reproduce the above copyright |
|
16 * notice, this list of conditions and the following disclaimer in |
|
17 * the documentation and/or other materials provided with the |
|
18 * distribution. |
|
19 * |
|
20 * 3. All advertising materials mentioning features or use of this |
|
21 * software must display the following acknowledgment: |
|
22 * "This product includes software developed by the OpenSSL Project |
|
23 * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" |
|
24 * |
|
25 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to |
|
26 * endorse or promote products derived from this software without |
|
27 * prior written permission. For written permission, please contact |
|
28 * licensing@OpenSSL.org. |
|
29 * |
|
30 * 5. Products derived from this software may not be called "OpenSSL" |
|
31 * nor may "OpenSSL" appear in their names without prior written |
|
32 * permission of the OpenSSL Project. |
|
33 * |
|
34 * 6. Redistributions of any form whatsoever must retain the following |
|
35 * acknowledgment: |
|
36 * "This product includes software developed by the OpenSSL Project |
|
37 * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" |
|
38 * |
|
39 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY |
|
40 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
|
41 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
|
42 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR |
|
43 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
|
44 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
|
45 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
|
46 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
|
47 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
|
48 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
|
49 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED |
|
50 * OF THE POSSIBILITY OF SUCH DAMAGE. |
|
51 * ==================================================================== |
|
52 * |
|
53 * This product includes cryptographic software written by Eric Young |
|
54 * (eay@cryptsoft.com). This product includes software written by Tim |
|
55 * Hudson (tjh@cryptsoft.com). |
|
56 * |
|
57 */ |
|
58 #ifndef HEADER_X509V3_H |
|
59 #define HEADER_X509V3_H |
|
60 |
|
61 #include <openssl/bio.h> |
|
62 #include <openssl/x509.h> |
|
63 #include <openssl/conf.h> |
|
64 |
|
65 #ifdef __cplusplus |
|
66 extern "C" { |
|
67 #endif |
|
68 |
|
69 /* Forward reference */ |
|
70 struct v3_ext_method; |
|
71 struct v3_ext_ctx; |
|
72 |
|
73 /* Useful typedefs */ |
|
74 |
|
75 typedef void * (*X509V3_EXT_NEW)(void); |
|
76 typedef void (*X509V3_EXT_FREE)(void *); |
|
77 typedef void * (*X509V3_EXT_D2I)(void *, unsigned char ** , long); |
|
78 typedef int (*X509V3_EXT_I2D)(void *, unsigned char **); |
|
79 typedef STACK_OF(CONF_VALUE) * (*X509V3_EXT_I2V)(struct v3_ext_method *method, void *ext, STACK_OF(CONF_VALUE) *extlist); |
|
80 typedef void * (*X509V3_EXT_V2I)(struct v3_ext_method *method, struct v3_ext_ctx *ctx, STACK_OF(CONF_VALUE) *values); |
|
81 typedef char * (*X509V3_EXT_I2S)(struct v3_ext_method *method, void *ext); |
|
82 typedef void * (*X509V3_EXT_S2I)(struct v3_ext_method *method, struct v3_ext_ctx *ctx, char *str); |
|
83 typedef int (*X509V3_EXT_I2R)(struct v3_ext_method *method, void *ext, BIO *out, int indent); |
|
84 typedef void * (*X509V3_EXT_R2I)(struct v3_ext_method *method, struct v3_ext_ctx *ctx, char *str); |
|
85 |
|
86 /* V3 extension structure */ |
|
87 |
|
88 struct v3_ext_method { |
|
89 int ext_nid; |
|
90 int ext_flags; |
|
91 /* If this is set the following four fields are ignored */ |
|
92 ASN1_ITEM_EXP *it; |
|
93 /* Old style ASN1 calls */ |
|
94 X509V3_EXT_NEW ext_new; |
|
95 X509V3_EXT_FREE ext_free; |
|
96 X509V3_EXT_D2I d2i; |
|
97 X509V3_EXT_I2D i2d; |
|
98 |
|
99 /* The following pair is used for string extensions */ |
|
100 X509V3_EXT_I2S i2s; |
|
101 X509V3_EXT_S2I s2i; |
|
102 |
|
103 /* The following pair is used for multi-valued extensions */ |
|
104 X509V3_EXT_I2V i2v; |
|
105 X509V3_EXT_V2I v2i; |
|
106 |
|
107 /* The following are used for raw extensions */ |
|
108 X509V3_EXT_I2R i2r; |
|
109 X509V3_EXT_R2I r2i; |
|
110 |
|
111 void *usr_data; /* Any extension specific data */ |
|
112 }; |
|
113 |
|
114 typedef struct X509V3_CONF_METHOD_st { |
|
115 char * (*get_string)(void *db, char *section, char *value); |
|
116 STACK_OF(CONF_VALUE) * (*get_section)(void *db, char *section); |
|
117 void (*free_string)(void *db, char * string); |
|
118 void (*free_section)(void *db, STACK_OF(CONF_VALUE) *section); |
|
119 } X509V3_CONF_METHOD; |
|
120 |
|
121 /* Context specific info */ |
|
122 struct v3_ext_ctx { |
|
123 #define CTX_TEST 0x1 |
|
124 int flags; |
|
125 X509 *issuer_cert; |
|
126 X509 *subject_cert; |
|
127 X509_REQ *subject_req; |
|
128 X509_CRL *crl; |
|
129 X509V3_CONF_METHOD *db_meth; |
|
130 void *db; |
|
131 /* Maybe more here */ |
|
132 }; |
|
133 |
|
134 typedef struct v3_ext_method X509V3_EXT_METHOD; |
|
135 typedef struct v3_ext_ctx X509V3_CTX; |
|
136 |
|
137 DECLARE_STACK_OF(X509V3_EXT_METHOD) |
|
138 |
|
139 /* ext_flags values */ |
|
140 #define X509V3_EXT_DYNAMIC 0x1 |
|
141 #define X509V3_EXT_CTX_DEP 0x2 |
|
142 #define X509V3_EXT_MULTILINE 0x4 |
|
143 |
|
144 typedef BIT_STRING_BITNAME ENUMERATED_NAMES; |
|
145 |
|
146 typedef struct BASIC_CONSTRAINTS_st { |
|
147 int ca; |
|
148 ASN1_INTEGER *pathlen; |
|
149 } BASIC_CONSTRAINTS; |
|
150 |
|
151 |
|
152 typedef struct PKEY_USAGE_PERIOD_st { |
|
153 ASN1_GENERALIZEDTIME *notBefore; |
|
154 ASN1_GENERALIZEDTIME *notAfter; |
|
155 } PKEY_USAGE_PERIOD; |
|
156 |
|
157 typedef struct otherName_st { |
|
158 ASN1_OBJECT *type_id; |
|
159 ASN1_TYPE *value; |
|
160 } OTHERNAME; |
|
161 |
|
162 typedef struct EDIPartyName_st { |
|
163 ASN1_STRING *nameAssigner; |
|
164 ASN1_STRING *partyName; |
|
165 } EDIPARTYNAME; |
|
166 |
|
167 typedef struct GENERAL_NAME_st { |
|
168 |
|
169 #define GEN_OTHERNAME 0 |
|
170 #define GEN_EMAIL 1 |
|
171 #define GEN_DNS 2 |
|
172 #define GEN_X400 3 |
|
173 #define GEN_DIRNAME 4 |
|
174 #define GEN_EDIPARTY 5 |
|
175 #define GEN_URI 6 |
|
176 #define GEN_IPADD 7 |
|
177 #define GEN_RID 8 |
|
178 |
|
179 int type; |
|
180 union { |
|
181 char *ptr; |
|
182 OTHERNAME *otherName; /* otherName */ |
|
183 ASN1_IA5STRING *rfc822Name; |
|
184 ASN1_IA5STRING *dNSName; |
|
185 ASN1_TYPE *x400Address; |
|
186 X509_NAME *directoryName; |
|
187 EDIPARTYNAME *ediPartyName; |
|
188 ASN1_IA5STRING *uniformResourceIdentifier; |
|
189 ASN1_OCTET_STRING *iPAddress; |
|
190 ASN1_OBJECT *registeredID; |
|
191 |
|
192 /* Old names */ |
|
193 ASN1_OCTET_STRING *ip; /* iPAddress */ |
|
194 X509_NAME *dirn; /* dirn */ |
|
195 ASN1_IA5STRING *ia5;/* rfc822Name, dNSName, uniformResourceIdentifier */ |
|
196 ASN1_OBJECT *rid; /* registeredID */ |
|
197 ASN1_TYPE *other; /* x400Address */ |
|
198 } d; |
|
199 } GENERAL_NAME; |
|
200 |
|
201 typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES; |
|
202 |
|
203 typedef struct ACCESS_DESCRIPTION_st { |
|
204 ASN1_OBJECT *method; |
|
205 GENERAL_NAME *location; |
|
206 } ACCESS_DESCRIPTION; |
|
207 |
|
208 typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS; |
|
209 |
|
210 typedef STACK_OF(ASN1_OBJECT) EXTENDED_KEY_USAGE; |
|
211 |
|
212 DECLARE_STACK_OF(GENERAL_NAME) |
|
213 DECLARE_ASN1_SET_OF(GENERAL_NAME) |
|
214 |
|
215 DECLARE_STACK_OF(ACCESS_DESCRIPTION) |
|
216 DECLARE_ASN1_SET_OF(ACCESS_DESCRIPTION) |
|
217 |
|
218 typedef struct DIST_POINT_NAME_st { |
|
219 int type; |
|
220 union { |
|
221 GENERAL_NAMES *fullname; |
|
222 STACK_OF(X509_NAME_ENTRY) *relativename; |
|
223 } name; |
|
224 } DIST_POINT_NAME; |
|
225 |
|
226 typedef struct DIST_POINT_st { |
|
227 DIST_POINT_NAME *distpoint; |
|
228 ASN1_BIT_STRING *reasons; |
|
229 GENERAL_NAMES *CRLissuer; |
|
230 } DIST_POINT; |
|
231 |
|
232 typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS; |
|
233 |
|
234 DECLARE_STACK_OF(DIST_POINT) |
|
235 DECLARE_ASN1_SET_OF(DIST_POINT) |
|
236 |
|
237 typedef struct AUTHORITY_KEYID_st { |
|
238 ASN1_OCTET_STRING *keyid; |
|
239 GENERAL_NAMES *issuer; |
|
240 ASN1_INTEGER *serial; |
|
241 } AUTHORITY_KEYID; |
|
242 |
|
243 /* Strong extranet structures */ |
|
244 |
|
245 typedef struct SXNET_ID_st { |
|
246 ASN1_INTEGER *zone; |
|
247 ASN1_OCTET_STRING *user; |
|
248 } SXNETID; |
|
249 |
|
250 DECLARE_STACK_OF(SXNETID) |
|
251 DECLARE_ASN1_SET_OF(SXNETID) |
|
252 |
|
253 typedef struct SXNET_st { |
|
254 ASN1_INTEGER *version; |
|
255 STACK_OF(SXNETID) *ids; |
|
256 } SXNET; |
|
257 |
|
258 typedef struct NOTICEREF_st { |
|
259 ASN1_STRING *organization; |
|
260 STACK_OF(ASN1_INTEGER) *noticenos; |
|
261 } NOTICEREF; |
|
262 |
|
263 typedef struct USERNOTICE_st { |
|
264 NOTICEREF *noticeref; |
|
265 ASN1_STRING *exptext; |
|
266 } USERNOTICE; |
|
267 |
|
268 typedef struct POLICYQUALINFO_st { |
|
269 ASN1_OBJECT *pqualid; |
|
270 union { |
|
271 ASN1_IA5STRING *cpsuri; |
|
272 USERNOTICE *usernotice; |
|
273 ASN1_TYPE *other; |
|
274 } d; |
|
275 } POLICYQUALINFO; |
|
276 |
|
277 DECLARE_STACK_OF(POLICYQUALINFO) |
|
278 DECLARE_ASN1_SET_OF(POLICYQUALINFO) |
|
279 |
|
280 typedef struct POLICYINFO_st { |
|
281 ASN1_OBJECT *policyid; |
|
282 STACK_OF(POLICYQUALINFO) *qualifiers; |
|
283 } POLICYINFO; |
|
284 |
|
285 typedef STACK_OF(POLICYINFO) CERTIFICATEPOLICIES; |
|
286 |
|
287 DECLARE_STACK_OF(POLICYINFO) |
|
288 DECLARE_ASN1_SET_OF(POLICYINFO) |
|
289 |
|
290 #define X509V3_conf_err(val) ERR_add_error_data(6, "section:", val->section, \ |
|
291 ",name:", val->name, ",value:", val->value); |
|
292 |
|
293 #define X509V3_set_ctx_test(ctx) \ |
|
294 X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, CTX_TEST) |
|
295 #define X509V3_set_ctx_nodb(ctx) (ctx)->db = NULL; |
|
296 |
|
297 #define EXT_BITSTRING(nid, table) { nid, 0, ASN1_ITEM_ref(ASN1_BIT_STRING), \ |
|
298 0,0,0,0, \ |
|
299 0,0, \ |
|
300 (X509V3_EXT_I2V)i2v_ASN1_BIT_STRING, \ |
|
301 (X509V3_EXT_V2I)v2i_ASN1_BIT_STRING, \ |
|
302 NULL, NULL, \ |
|
303 table} |
|
304 |
|
305 #define EXT_IA5STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_IA5STRING), \ |
|
306 0,0,0,0, \ |
|
307 (X509V3_EXT_I2S)i2s_ASN1_IA5STRING, \ |
|
308 (X509V3_EXT_S2I)s2i_ASN1_IA5STRING, \ |
|
309 0,0,0,0, \ |
|
310 NULL} |
|
311 |
|
312 #define EXT_END { -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} |
|
313 |
|
314 |
|
315 /* X509_PURPOSE stuff */ |
|
316 |
|
317 #define EXFLAG_BCONS 0x1 |
|
318 #define EXFLAG_KUSAGE 0x2 |
|
319 #define EXFLAG_XKUSAGE 0x4 |
|
320 #define EXFLAG_NSCERT 0x8 |
|
321 |
|
322 #define EXFLAG_CA 0x10 |
|
323 #define EXFLAG_SS 0x20 |
|
324 #define EXFLAG_V1 0x40 |
|
325 #define EXFLAG_INVALID 0x80 |
|
326 #define EXFLAG_SET 0x100 |
|
327 #define EXFLAG_CRITICAL 0x200 |
|
328 |
|
329 #define KU_DIGITAL_SIGNATURE 0x0080 |
|
330 #define KU_NON_REPUDIATION 0x0040 |
|
331 #define KU_KEY_ENCIPHERMENT 0x0020 |
|
332 #define KU_DATA_ENCIPHERMENT 0x0010 |
|
333 #define KU_KEY_AGREEMENT 0x0008 |
|
334 #define KU_KEY_CERT_SIGN 0x0004 |
|
335 #define KU_CRL_SIGN 0x0002 |
|
336 #define KU_ENCIPHER_ONLY 0x0001 |
|
337 #define KU_DECIPHER_ONLY 0x8000 |
|
338 |
|
339 #define NS_SSL_CLIENT 0x80 |
|
340 #define NS_SSL_SERVER 0x40 |
|
341 #define NS_SMIME 0x20 |
|
342 #define NS_OBJSIGN 0x10 |
|
343 #define NS_SSL_CA 0x04 |
|
344 #define NS_SMIME_CA 0x02 |
|
345 #define NS_OBJSIGN_CA 0x01 |
|
346 #define NS_ANY_CA (NS_SSL_CA|NS_SMIME_CA|NS_OBJSIGN_CA) |
|
347 |
|
348 #define XKU_SSL_SERVER 0x1 |
|
349 #define XKU_SSL_CLIENT 0x2 |
|
350 #define XKU_SMIME 0x4 |
|
351 #define XKU_CODE_SIGN 0x8 |
|
352 #define XKU_SGC 0x10 |
|
353 #define XKU_OCSP_SIGN 0x20 |
|
354 #define XKU_TIMESTAMP 0x40 |
|
355 #define XKU_DVCS 0x80 |
|
356 |
|
357 #define X509_PURPOSE_DYNAMIC 0x1 |
|
358 #define X509_PURPOSE_DYNAMIC_NAME 0x2 |
|
359 |
|
360 typedef struct x509_purpose_st { |
|
361 int purpose; |
|
362 int trust; /* Default trust ID */ |
|
363 int flags; |
|
364 int (*check_purpose)(const struct x509_purpose_st *, |
|
365 const X509 *, int); |
|
366 char *name; |
|
367 char *sname; |
|
368 void *usr_data; |
|
369 } X509_PURPOSE; |
|
370 |
|
371 #define X509_PURPOSE_SSL_CLIENT 1 |
|
372 #define X509_PURPOSE_SSL_SERVER 2 |
|
373 #define X509_PURPOSE_NS_SSL_SERVER 3 |
|
374 #define X509_PURPOSE_SMIME_SIGN 4 |
|
375 #define X509_PURPOSE_SMIME_ENCRYPT 5 |
|
376 #define X509_PURPOSE_CRL_SIGN 6 |
|
377 #define X509_PURPOSE_ANY 7 |
|
378 #define X509_PURPOSE_OCSP_HELPER 8 |
|
379 |
|
380 #define X509_PURPOSE_MIN 1 |
|
381 #define X509_PURPOSE_MAX 8 |
|
382 |
|
383 /* Flags for X509V3_EXT_print() */ |
|
384 |
|
385 #define X509V3_EXT_UNKNOWN_MASK (0xfL << 16) |
|
386 /* Return error for unknown extensions */ |
|
387 #define X509V3_EXT_DEFAULT 0 |
|
388 /* Print error for unknown extensions */ |
|
389 #define X509V3_EXT_ERROR_UNKNOWN (1L << 16) |
|
390 /* ASN1 parse unknown extensions */ |
|
391 #define X509V3_EXT_PARSE_UNKNOWN (2L << 16) |
|
392 /* BIO_dump unknown extensions */ |
|
393 #define X509V3_EXT_DUMP_UNKNOWN (3L << 16) |
|
394 |
|
395 /* Flags for X509V3_add1_i2d */ |
|
396 |
|
397 #define X509V3_ADD_OP_MASK 0xfL |
|
398 #define X509V3_ADD_DEFAULT 0L |
|
399 #define X509V3_ADD_APPEND 1L |
|
400 #define X509V3_ADD_REPLACE 2L |
|
401 #define X509V3_ADD_REPLACE_EXISTING 3L |
|
402 #define X509V3_ADD_KEEP_EXISTING 4L |
|
403 #define X509V3_ADD_DELETE 5L |
|
404 #define X509V3_ADD_SILENT 0x10 |
|
405 |
|
406 DECLARE_STACK_OF(X509_PURPOSE) |
|
407 |
|
408 DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) |
|
409 |
|
410 DECLARE_ASN1_FUNCTIONS(SXNET) |
|
411 DECLARE_ASN1_FUNCTIONS(SXNETID) |
|
412 |
|
413 int SXNET_add_id_asc(SXNET **psx, char *zone, char *user, int userlen); |
|
414 int SXNET_add_id_ulong(SXNET **psx, unsigned long lzone, char *user, int userlen); |
|
415 int SXNET_add_id_INTEGER(SXNET **psx, ASN1_INTEGER *izone, char *user, int userlen); |
|
416 |
|
417 ASN1_OCTET_STRING *SXNET_get_id_asc(SXNET *sx, char *zone); |
|
418 ASN1_OCTET_STRING *SXNET_get_id_ulong(SXNET *sx, unsigned long lzone); |
|
419 ASN1_OCTET_STRING *SXNET_get_id_INTEGER(SXNET *sx, ASN1_INTEGER *zone); |
|
420 |
|
421 DECLARE_ASN1_FUNCTIONS(AUTHORITY_KEYID) |
|
422 |
|
423 DECLARE_ASN1_FUNCTIONS(PKEY_USAGE_PERIOD) |
|
424 |
|
425 DECLARE_ASN1_FUNCTIONS(GENERAL_NAME) |
|
426 |
|
427 STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, GENERAL_NAME *gen, STACK_OF(CONF_VALUE) *ret); |
|
428 int GENERAL_NAME_print(BIO *out, GENERAL_NAME *gen); |
|
429 |
|
430 DECLARE_ASN1_FUNCTIONS(GENERAL_NAMES) |
|
431 |
|
432 STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method, |
|
433 GENERAL_NAMES *gen, STACK_OF(CONF_VALUE) *extlist); |
|
434 GENERAL_NAMES *v2i_GENERAL_NAMES(X509V3_EXT_METHOD *method, |
|
435 X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); |
|
436 |
|
437 DECLARE_ASN1_FUNCTIONS(OTHERNAME) |
|
438 DECLARE_ASN1_FUNCTIONS(EDIPARTYNAME) |
|
439 |
|
440 char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, ASN1_OCTET_STRING *ia5); |
|
441 ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, char *str); |
|
442 |
|
443 DECLARE_ASN1_FUNCTIONS(EXTENDED_KEY_USAGE) |
|
444 int i2a_ACCESS_DESCRIPTION(BIO *bp, ACCESS_DESCRIPTION* a); |
|
445 |
|
446 DECLARE_ASN1_FUNCTIONS(CERTIFICATEPOLICIES) |
|
447 DECLARE_ASN1_FUNCTIONS(POLICYINFO) |
|
448 DECLARE_ASN1_FUNCTIONS(POLICYQUALINFO) |
|
449 DECLARE_ASN1_FUNCTIONS(USERNOTICE) |
|
450 DECLARE_ASN1_FUNCTIONS(NOTICEREF) |
|
451 |
|
452 DECLARE_ASN1_FUNCTIONS(CRL_DIST_POINTS) |
|
453 DECLARE_ASN1_FUNCTIONS(DIST_POINT) |
|
454 DECLARE_ASN1_FUNCTIONS(DIST_POINT_NAME) |
|
455 |
|
456 DECLARE_ASN1_FUNCTIONS(ACCESS_DESCRIPTION) |
|
457 DECLARE_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS) |
|
458 |
|
459 #ifdef HEADER_CONF_H |
|
460 GENERAL_NAME *v2i_GENERAL_NAME(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, CONF_VALUE *cnf); |
|
461 void X509V3_conf_free(CONF_VALUE *val); |
|
462 |
|
463 X509_EXTENSION *X509V3_EXT_nconf_nid(CONF *conf, X509V3_CTX *ctx, int ext_nid, char *value); |
|
464 X509_EXTENSION *X509V3_EXT_nconf(CONF *conf, X509V3_CTX *ctx, char *name, char *value); |
|
465 int X509V3_EXT_add_nconf_sk(CONF *conf, X509V3_CTX *ctx, char *section, STACK_OF(X509_EXTENSION) **sk); |
|
466 int X509V3_EXT_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, X509 *cert); |
|
467 int X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, X509_REQ *req); |
|
468 int X509V3_EXT_CRL_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, X509_CRL *crl); |
|
469 |
|
470 X509_EXTENSION *X509V3_EXT_conf_nid(LHASH *conf, X509V3_CTX *ctx, int ext_nid, char *value); |
|
471 X509_EXTENSION *X509V3_EXT_conf(LHASH *conf, X509V3_CTX *ctx, char *name, char *value); |
|
472 int X509V3_EXT_add_conf(LHASH *conf, X509V3_CTX *ctx, char *section, X509 *cert); |
|
473 int X509V3_EXT_REQ_add_conf(LHASH *conf, X509V3_CTX *ctx, char *section, X509_REQ *req); |
|
474 int X509V3_EXT_CRL_add_conf(LHASH *conf, X509V3_CTX *ctx, char *section, X509_CRL *crl); |
|
475 |
|
476 int X509V3_add_value_bool_nf(char *name, int asn1_bool, |
|
477 STACK_OF(CONF_VALUE) **extlist); |
|
478 int X509V3_get_value_bool(CONF_VALUE *value, int *asn1_bool); |
|
479 int X509V3_get_value_int(CONF_VALUE *value, ASN1_INTEGER **aint); |
|
480 void X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf); |
|
481 void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH *lhash); |
|
482 #endif |
|
483 |
|
484 char * X509V3_get_string(X509V3_CTX *ctx, char *name, char *section); |
|
485 STACK_OF(CONF_VALUE) * X509V3_get_section(X509V3_CTX *ctx, char *section); |
|
486 void X509V3_string_free(X509V3_CTX *ctx, char *str); |
|
487 void X509V3_section_free( X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *section); |
|
488 void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subject, |
|
489 X509_REQ *req, X509_CRL *crl, int flags); |
|
490 |
|
491 int X509V3_add_value(const char *name, const char *value, |
|
492 STACK_OF(CONF_VALUE) **extlist); |
|
493 int X509V3_add_value_uchar(const char *name, const unsigned char *value, |
|
494 STACK_OF(CONF_VALUE) **extlist); |
|
495 int X509V3_add_value_bool(const char *name, int asn1_bool, |
|
496 STACK_OF(CONF_VALUE) **extlist); |
|
497 int X509V3_add_value_int(const char *name, ASN1_INTEGER *aint, |
|
498 STACK_OF(CONF_VALUE) **extlist); |
|
499 char * i2s_ASN1_INTEGER(X509V3_EXT_METHOD *meth, ASN1_INTEGER *aint); |
|
500 ASN1_INTEGER * s2i_ASN1_INTEGER(X509V3_EXT_METHOD *meth, char *value); |
|
501 char * i2s_ASN1_ENUMERATED(X509V3_EXT_METHOD *meth, ASN1_ENUMERATED *aint); |
|
502 char * i2s_ASN1_ENUMERATED_TABLE(X509V3_EXT_METHOD *meth, ASN1_ENUMERATED *aint); |
|
503 int X509V3_EXT_add(X509V3_EXT_METHOD *ext); |
|
504 int X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist); |
|
505 int X509V3_EXT_add_alias(int nid_to, int nid_from); |
|
506 void X509V3_EXT_cleanup(void); |
|
507 |
|
508 X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext); |
|
509 X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid); |
|
510 int X509V3_add_standard_extensions(void); |
|
511 STACK_OF(CONF_VALUE) *X509V3_parse_list(const char *line); |
|
512 void *X509V3_EXT_d2i(X509_EXTENSION *ext); |
|
513 void *X509V3_get_d2i(STACK_OF(X509_EXTENSION) *x, int nid, int *crit, int *idx); |
|
514 |
|
515 |
|
516 X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc); |
|
517 int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, int crit, unsigned long flags); |
|
518 |
|
519 char *hex_to_string(unsigned char *buffer, long len); |
|
520 unsigned char *string_to_hex(char *str, long *len); |
|
521 int name_cmp(const char *name, const char *cmp); |
|
522 |
|
523 void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent, |
|
524 int ml); |
|
525 int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag, int indent); |
|
526 int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag, int indent); |
|
527 |
|
528 int X509V3_extensions_print(BIO *out, char *title, STACK_OF(X509_EXTENSION) *exts, unsigned long flag, int indent); |
|
529 |
|
530 int X509_check_purpose(X509 *x, int id, int ca); |
|
531 int X509_supported_extension(X509_EXTENSION *ex); |
|
532 int X509_PURPOSE_set(int *p, int purpose); |
|
533 int X509_check_issued(X509 *issuer, X509 *subject); |
|
534 int X509_PURPOSE_get_count(void); |
|
535 X509_PURPOSE * X509_PURPOSE_get0(int idx); |
|
536 int X509_PURPOSE_get_by_sname(char *sname); |
|
537 int X509_PURPOSE_get_by_id(int id); |
|
538 int X509_PURPOSE_add(int id, int trust, int flags, |
|
539 int (*ck)(const X509_PURPOSE *, const X509 *, int), |
|
540 char *name, char *sname, void *arg); |
|
541 char *X509_PURPOSE_get0_name(X509_PURPOSE *xp); |
|
542 char *X509_PURPOSE_get0_sname(X509_PURPOSE *xp); |
|
543 int X509_PURPOSE_get_trust(X509_PURPOSE *xp); |
|
544 void X509_PURPOSE_cleanup(void); |
|
545 int X509_PURPOSE_get_id(X509_PURPOSE *); |
|
546 |
|
547 STACK *X509_get1_email(X509 *x); |
|
548 STACK *X509_REQ_get1_email(X509_REQ *x); |
|
549 void X509_email_free(STACK *sk); |
|
550 |
|
551 |
|
552 /* BEGIN ERROR CODES */ |
|
553 /* The following lines are auto generated by the script mkerr.pl. Any changes |
|
554 * made after this point may be overwritten when the script is next run. |
|
555 */ |
|
556 void ERR_load_X509V3_strings(void); |
|
557 |
|
558 /* Error codes for the X509V3 functions. */ |
|
559 |
|
560 /* Function codes. */ |
|
561 #define X509V3_F_COPY_EMAIL 122 |
|
562 #define X509V3_F_COPY_ISSUER 123 |
|
563 #define X509V3_F_DO_EXT_CONF 124 |
|
564 #define X509V3_F_DO_EXT_I2D 135 |
|
565 #define X509V3_F_HEX_TO_STRING 111 |
|
566 #define X509V3_F_I2S_ASN1_ENUMERATED 121 |
|
567 #define X509V3_F_I2S_ASN1_INTEGER 120 |
|
568 #define X509V3_F_I2V_AUTHORITY_INFO_ACCESS 138 |
|
569 #define X509V3_F_NOTICE_SECTION 132 |
|
570 #define X509V3_F_NREF_NOS 133 |
|
571 #define X509V3_F_POLICY_SECTION 131 |
|
572 #define X509V3_F_R2I_CERTPOL 130 |
|
573 #define X509V3_F_S2I_ASN1_IA5STRING 100 |
|
574 #define X509V3_F_S2I_ASN1_INTEGER 108 |
|
575 #define X509V3_F_S2I_ASN1_OCTET_STRING 112 |
|
576 #define X509V3_F_S2I_ASN1_SKEY_ID 114 |
|
577 #define X509V3_F_S2I_S2I_SKEY_ID 115 |
|
578 #define X509V3_F_STRING_TO_HEX 113 |
|
579 #define X509V3_F_SXNET_ADD_ASC 125 |
|
580 #define X509V3_F_SXNET_ADD_ID_INTEGER 126 |
|
581 #define X509V3_F_SXNET_ADD_ID_ULONG 127 |
|
582 #define X509V3_F_SXNET_GET_ID_ASC 128 |
|
583 #define X509V3_F_SXNET_GET_ID_ULONG 129 |
|
584 #define X509V3_F_V2I_ACCESS_DESCRIPTION 139 |
|
585 #define X509V3_F_V2I_ASN1_BIT_STRING 101 |
|
586 #define X509V3_F_V2I_AUTHORITY_KEYID 119 |
|
587 #define X509V3_F_V2I_BASIC_CONSTRAINTS 102 |
|
588 #define X509V3_F_V2I_CRLD 134 |
|
589 #define X509V3_F_V2I_EXT_KU 103 |
|
590 #define X509V3_F_V2I_GENERAL_NAME 117 |
|
591 #define X509V3_F_V2I_GENERAL_NAMES 118 |
|
592 #define X509V3_F_V3_GENERIC_EXTENSION 116 |
|
593 #define X509V3_F_X509V3_ADD_I2D 140 |
|
594 #define X509V3_F_X509V3_ADD_VALUE 105 |
|
595 #define X509V3_F_X509V3_EXT_ADD 104 |
|
596 #define X509V3_F_X509V3_EXT_ADD_ALIAS 106 |
|
597 #define X509V3_F_X509V3_EXT_CONF 107 |
|
598 #define X509V3_F_X509V3_EXT_I2D 136 |
|
599 #define X509V3_F_X509V3_GET_VALUE_BOOL 110 |
|
600 #define X509V3_F_X509V3_PARSE_LIST 109 |
|
601 #define X509V3_F_X509_PURPOSE_ADD 137 |
|
602 #define X509V3_F_X509_PURPOSE_SET 141 |
|
603 |
|
604 /* Reason codes. */ |
|
605 #define X509V3_R_BAD_IP_ADDRESS 118 |
|
606 #define X509V3_R_BAD_OBJECT 119 |
|
607 #define X509V3_R_BN_DEC2BN_ERROR 100 |
|
608 #define X509V3_R_BN_TO_ASN1_INTEGER_ERROR 101 |
|
609 #define X509V3_R_DUPLICATE_ZONE_ID 133 |
|
610 #define X509V3_R_ERROR_CONVERTING_ZONE 131 |
|
611 #define X509V3_R_ERROR_CREATING_EXTENSION 144 |
|
612 #define X509V3_R_ERROR_IN_EXTENSION 128 |
|
613 #define X509V3_R_EXPECTED_A_SECTION_NAME 137 |
|
614 #define X509V3_R_EXTENSION_EXISTS 145 |
|
615 #define X509V3_R_EXTENSION_NAME_ERROR 115 |
|
616 #define X509V3_R_EXTENSION_NOT_FOUND 102 |
|
617 #define X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED 103 |
|
618 #define X509V3_R_EXTENSION_VALUE_ERROR 116 |
|
619 #define X509V3_R_ILLEGAL_HEX_DIGIT 113 |
|
620 #define X509V3_R_INVALID_BOOLEAN_STRING 104 |
|
621 #define X509V3_R_INVALID_EXTENSION_STRING 105 |
|
622 #define X509V3_R_INVALID_NAME 106 |
|
623 #define X509V3_R_INVALID_NULL_ARGUMENT 107 |
|
624 #define X509V3_R_INVALID_NULL_NAME 108 |
|
625 #define X509V3_R_INVALID_NULL_VALUE 109 |
|
626 #define X509V3_R_INVALID_NUMBER 140 |
|
627 #define X509V3_R_INVALID_NUMBERS 141 |
|
628 #define X509V3_R_INVALID_OBJECT_IDENTIFIER 110 |
|
629 #define X509V3_R_INVALID_OPTION 138 |
|
630 #define X509V3_R_INVALID_POLICY_IDENTIFIER 134 |
|
631 #define X509V3_R_INVALID_PURPOSE 146 |
|
632 #define X509V3_R_INVALID_SECTION 135 |
|
633 #define X509V3_R_INVALID_SYNTAX 143 |
|
634 #define X509V3_R_ISSUER_DECODE_ERROR 126 |
|
635 #define X509V3_R_MISSING_VALUE 124 |
|
636 #define X509V3_R_NEED_ORGANIZATION_AND_NUMBERS 142 |
|
637 #define X509V3_R_NO_CONFIG_DATABASE 136 |
|
638 #define X509V3_R_NO_ISSUER_CERTIFICATE 121 |
|
639 #define X509V3_R_NO_ISSUER_DETAILS 127 |
|
640 #define X509V3_R_NO_POLICY_IDENTIFIER 139 |
|
641 #define X509V3_R_NO_PUBLIC_KEY 114 |
|
642 #define X509V3_R_NO_SUBJECT_DETAILS 125 |
|
643 #define X509V3_R_ODD_NUMBER_OF_DIGITS 112 |
|
644 #define X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS 122 |
|
645 #define X509V3_R_UNABLE_TO_GET_ISSUER_KEYID 123 |
|
646 #define X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT 111 |
|
647 #define X509V3_R_UNKNOWN_EXTENSION 129 |
|
648 #define X509V3_R_UNKNOWN_EXTENSION_NAME 130 |
|
649 #define X509V3_R_UNKNOWN_OPTION 120 |
|
650 #define X509V3_R_UNSUPPORTED_OPTION 117 |
|
651 #define X509V3_R_USER_TOO_LONG 132 |
|
652 |
|
653 #ifdef __cplusplus |
|
654 } |
|
655 #endif |
|
656 #endif |
|
657 |