]> git.ipfire.org Git - thirdparty/openssl.git/blame - crypto/x509v3/x509v3.h
New header file opensslconf.h contains the macros set by Configure.
[thirdparty/openssl.git] / crypto / x509v3 / x509v3.h
CommitLineData
9aeaf1b4
DSH
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.
58964a49 7 *
58964a49
RE
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
9aeaf1b4
DSH
11 *
12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
14 *
58964a49 15 * 2. Redistributions in binary form must reproduce the above copyright
9aeaf1b4
DSH
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 *
58964a49 57 */
9aeaf1b4
DSH
58#ifndef HEADER_X509V3_H
59#define HEADER_X509V3_H
60
61#ifdef __cplusplus
62extern "C" {
63#endif
64
65#include "bio.h"
66#include "x509.h"
67
68/* Forward reference */
69struct v3_ext_method;
70struct v3_ext_ctx;
71
72/* Useful typedefs */
73
74typedef char * (*X509V3_EXT_NEW)();
75typedef void (*X509V3_EXT_FREE)();
76typedef char * (*X509V3_EXT_D2I)();
77typedef int (*X509V3_EXT_I2D)();
175b0942 78typedef STACK * (*X509V3_EXT_I2V)(struct v3_ext_method *method, char *ext, STACK *extlist);
9aeaf1b4
DSH
79typedef char * (*X509V3_EXT_V2I)(struct v3_ext_method *method, struct v3_ext_ctx *ctx, STACK *values);
80typedef char * (*X509V3_EXT_I2S)(struct v3_ext_method *method, char *ext);
81typedef char * (*X509V3_EXT_S2I)(struct v3_ext_method *method, struct v3_ext_ctx *ctx, char *str);
785cdf20 82typedef int (*X509V3_EXT_I2R)(struct v3_ext_method *method, char *ext, BIO *out, int indent);
1d48dd00 83typedef char * (*X509V3_EXT_R2I)(struct v3_ext_method *method, struct v3_ext_ctx *ctx, char *str);
9aeaf1b4
DSH
84
85/* V3 extension structure */
86
87struct v3_ext_method {
88int ext_nid;
89int ext_flags;
90X509V3_EXT_NEW ext_new;
91X509V3_EXT_FREE ext_free;
92X509V3_EXT_D2I d2i;
93X509V3_EXT_I2D i2d;
94
95/* The following pair is used for string extensions */
96X509V3_EXT_I2S i2s;
97X509V3_EXT_S2I s2i;
98
99/* The following pair is used for multi-valued extensions */
100X509V3_EXT_I2V i2v;
101X509V3_EXT_V2I v2i;
102
79a474e8 103/* The following are used for raw extensions */
9aeaf1b4 104X509V3_EXT_I2R i2r;
1d48dd00 105X509V3_EXT_R2I r2i;
9aeaf1b4
DSH
106
107char *usr_data; /* Any extension specific data */
108};
109
1d48dd00
DSH
110typedef struct X509V3_CONF_METHOD_st {
111char * (*get_string)(void *db, char *section, char *value);
112STACK * (*get_section)(void *db, char *section);
113void (*free_string)(void *db, char * string);
114void (*free_section)(void *db, STACK *section);
115} X509V3_CONF_METHOD;
175b0942 116
9aeaf1b4 117/* Context specific info */
f317aa4c 118struct v3_ext_ctx {
175b0942
DSH
119#define CTX_TEST 0x1
120int flags;
9aeaf1b4
DSH
121X509 *issuer_cert;
122X509 *subject_cert;
123X509_REQ *subject_req;
175b0942 124X509_CRL *crl;
1d48dd00
DSH
125X509V3_CONF_METHOD *db_meth;
126void *db;
9aeaf1b4
DSH
127/* Maybe more here */
128};
129
130typedef struct v3_ext_method X509V3_EXT_METHOD;
131typedef struct v3_ext_ctx X509V3_CTX;
132
133/* ext_flags values */
785cdf20
DSH
134#define X509V3_EXT_DYNAMIC 0x1
135#define X509V3_EXT_CTX_DEP 0x2
136#define X509V3_EXT_MULTILINE 0x4
9aeaf1b4 137
0490a86d 138typedef struct BIT_STRING_BITNAME_st {
9aeaf1b4 139int bitnum;
e778802f
BL
140const char *lname;
141const char *sname;
9aeaf1b4
DSH
142} BIT_STRING_BITNAME;
143
c74f1eb9
DSH
144typedef BIT_STRING_BITNAME ENUMERATED_NAMES;
145
0490a86d 146typedef struct BASIC_CONSTRAINTS_st {
9aeaf1b4
DSH
147int ca;
148ASN1_INTEGER *pathlen;
149} BASIC_CONSTRAINTS;
150
175b0942 151
0490a86d 152typedef struct PKEY_USAGE_PERIOD_st {
0be9747b
DSH
153ASN1_GENERALIZEDTIME *notBefore;
154ASN1_GENERALIZEDTIME *notAfter;
155} PKEY_USAGE_PERIOD;
156
0490a86d 157typedef struct GENERAL_NAME_st {
142fcca8
DSH
158
159#define GEN_OTHERNAME (0|V_ASN1_CONTEXT_SPECIFIC)
160#define GEN_EMAIL (1|V_ASN1_CONTEXT_SPECIFIC)
161#define GEN_DNS (2|V_ASN1_CONTEXT_SPECIFIC)
162#define GEN_X400 (3|V_ASN1_CONTEXT_SPECIFIC)
163#define GEN_DIRNAME (4|V_ASN1_CONTEXT_SPECIFIC)
164#define GEN_EDIPARTY (5|V_ASN1_CONTEXT_SPECIFIC)
165#define GEN_URI (6|V_ASN1_CONTEXT_SPECIFIC)
166#define GEN_IPADD (7|V_ASN1_CONTEXT_SPECIFIC)
167#define GEN_RID (8|V_ASN1_CONTEXT_SPECIFIC)
168
169int type;
170union {
171 char *ptr;
172 ASN1_IA5STRING *ia5;/* rfc822Name, dNSName, uniformResourceIdentifier */
173 ASN1_OCTET_STRING *ip; /* iPAddress */
174 X509_NAME *dirn; /* dirn */
175 ASN1_OBJECT *rid; /* registeredID */
176 ASN1_TYPE *other; /* otherName, ediPartyName, x400Address */
177} d;
178} GENERAL_NAME;
179
f5fedc04
DSH
180DECLARE_STACK_OF(GENERAL_NAME)
181DECLARE_ASN1_SET_OF(GENERAL_NAME)
182
183typedef struct AUTHORITY_KEYID_st {
184ASN1_OCTET_STRING *keyid;
185STACK_OF(GENERAL_NAME) *issuer;
186ASN1_INTEGER *serial;
187} AUTHORITY_KEYID;
188
785cdf20 189/* Strong extranet structures */
142fcca8 190
0490a86d 191typedef struct SXNET_ID_st {
785cdf20
DSH
192 ASN1_INTEGER *zone;
193 ASN1_OCTET_STRING *user;
194} SXNETID;
142fcca8 195
cfdcfede
BL
196DECLARE_STACK_OF(SXNETID)
197DECLARE_ASN1_SET_OF(SXNETID)
198
199typedef struct SXNET_st {
200 ASN1_INTEGER *version;
201 STACK_OF(SXNETID) *ids;
202} SXNET;
203
c83e523d
DSH
204typedef struct NOTICEREF_st {
205 ASN1_STRING *organization;
206 STACK *noticenos;
207} NOTICEREF;
208
209typedef struct USERNOTICE_st {
41b731f2 210 NOTICEREF *noticeref;
c83e523d
DSH
211 ASN1_STRING *exptext;
212} USERNOTICE;
213
214typedef struct POLICYQUALINFO_st {
215 ASN1_OBJECT *pqualid;
216 union {
217 ASN1_IA5STRING *cpsuri;
218 USERNOTICE *usernotice;
219 ASN1_TYPE *other;
220 } d;
221} POLICYQUALINFO;
222
223DECLARE_STACK_OF(POLICYQUALINFO)
41b731f2 224DECLARE_ASN1_SET_OF(POLICYQUALINFO)
c83e523d
DSH
225
226typedef struct POLICYINFO_st {
227 ASN1_OBJECT *policyid;
41b731f2 228 STACK_OF(POLICYQUALINFO) *qualifiers;
c83e523d
DSH
229} POLICYINFO;
230
6c5d4168
BM
231DECLARE_STACK_OF(POLICYINFO)
232DECLARE_ASN1_SET_OF(POLICYINFO)
c83e523d 233
9aeaf1b4
DSH
234#define X509V3_conf_err(val) ERR_add_error_data(6, "section:", val->section, \
235",name:", val->name, ",value:", val->value);
236
41b731f2
DSH
237#define X509V3_set_ctx_test(ctx) \
238 X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, CTX_TEST)
239#define X509V3_set_ctx_nodb(ctx) ctx->db = NULL;
240
9aeaf1b4
DSH
241#define EXT_BITSTRING(nid, table) { nid, 0, \
242 (X509V3_EXT_NEW)asn1_bit_string_new, ASN1_STRING_free, \
243 (X509V3_EXT_D2I)d2i_ASN1_BIT_STRING, \
244 i2d_ASN1_BIT_STRING, \
245 NULL, NULL, \
246 (X509V3_EXT_I2V)i2v_ASN1_BIT_STRING, \
247 (X509V3_EXT_V2I)v2i_ASN1_BIT_STRING, \
79a474e8 248 NULL, NULL, \
9aeaf1b4
DSH
249 (char *)table}
250
251#define EXT_IA5STRING(nid) { nid, 0, \
252 (X509V3_EXT_NEW)ia5string_new, ASN1_STRING_free, \
253 (X509V3_EXT_D2I)d2i_ASN1_IA5STRING, \
254 i2d_ASN1_IA5STRING, \
255 (X509V3_EXT_I2S)i2s_ASN1_IA5STRING, \
256 (X509V3_EXT_S2I)s2i_ASN1_IA5STRING, \
79a474e8 257 NULL, NULL, NULL, NULL, \
9aeaf1b4
DSH
258 NULL}
259
260#define EXT_END { -1, 0, NULL, NULL, NULL, NULL, NULL, NULL, \
79a474e8 261 NULL, NULL, NULL, NULL, \
9aeaf1b4
DSH
262 NULL}
263
264#ifndef NOPROTO
265void ERR_load_X509V3_strings(void);
9aeaf1b4
DSH
266int i2d_BASIC_CONSTRAINTS(BASIC_CONSTRAINTS *a, unsigned char **pp);
267BASIC_CONSTRAINTS *d2i_BASIC_CONSTRAINTS(BASIC_CONSTRAINTS **a, unsigned char **pp, long length);
268BASIC_CONSTRAINTS *BASIC_CONSTRAINTS_new(void);
269void BASIC_CONSTRAINTS_free(BASIC_CONSTRAINTS *a);
270
142fcca8
DSH
271int i2d_GENERAL_NAME(GENERAL_NAME *a, unsigned char **pp);
272GENERAL_NAME *d2i_GENERAL_NAME(GENERAL_NAME **a, unsigned char **pp, long length);
273GENERAL_NAME *GENERAL_NAME_new(void);
274void GENERAL_NAME_free(GENERAL_NAME *a);
d08d8da4 275STACK *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, GENERAL_NAME *gen, STACK *ret);
142fcca8 276
785cdf20
DSH
277int i2d_SXNET(SXNET *a, unsigned char **pp);
278SXNET *d2i_SXNET(SXNET **a, unsigned char **pp, long length);
279SXNET *SXNET_new(void);
280void SXNET_free(SXNET *a);
281
282int i2d_SXNETID(SXNETID *a, unsigned char **pp);
283SXNETID *d2i_SXNETID(SXNETID **a, unsigned char **pp, long length);
284SXNETID *SXNETID_new(void);
285void SXNETID_free(SXNETID *a);
286
28a98809
DSH
287int SXNET_add_id_asc(SXNET **psx, char *zone, unsigned char *user, int userlen);
288int SXNET_add_id_ulong(SXNET **psx, unsigned long lzone, unsigned char *user, int userlen);
289int SXNET_add_id_INTEGER(SXNET **psx, ASN1_INTEGER *izone, unsigned char *user, int userlen);
290
291ASN1_OCTET_STRING *SXNET_get_id_asc(SXNET *sx, char *zone);
292ASN1_OCTET_STRING *SXNET_get_id_ulong(SXNET *sx, unsigned long lzone);
293ASN1_OCTET_STRING *SXNET_get_id_INTEGER(SXNET *sx, ASN1_INTEGER *zone);
294
175b0942
DSH
295int i2d_AUTHORITY_KEYID(AUTHORITY_KEYID *a, unsigned char **pp);
296AUTHORITY_KEYID *d2i_AUTHORITY_KEYID(AUTHORITY_KEYID **a, unsigned char **pp, long length);
297AUTHORITY_KEYID *AUTHORITY_KEYID_new(void);
298void AUTHORITY_KEYID_free(AUTHORITY_KEYID *a);
299
0be9747b
DSH
300int i2d_PKEY_USAGE_PERIOD(PKEY_USAGE_PERIOD *a, unsigned char **pp);
301PKEY_USAGE_PERIOD *d2i_PKEY_USAGE_PERIOD(PKEY_USAGE_PERIOD **a, unsigned char **pp, long length);
302PKEY_USAGE_PERIOD *PKEY_USAGE_PERIOD_new(void);
303void PKEY_USAGE_PERIOD_free(PKEY_USAGE_PERIOD *a);
304
f5fedc04
DSH
305STACK_OF(GENERAL_NAME) *GENERAL_NAMES_new(void);
306void GENERAL_NAMES_free(STACK_OF(GENERAL_NAME) *a);
307STACK_OF(GENERAL_NAME) *d2i_GENERAL_NAMES(STACK_OF(GENERAL_NAME) **a, unsigned char **pp, long length);
308int i2d_GENERAL_NAMES(STACK_OF(GENERAL_NAME) *a, unsigned char **pp);
309STACK *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method, STACK_OF(GENERAL_NAME) *gen, STACK *extlist);
310STACK_OF(GENERAL_NAME) *v2i_GENERAL_NAMES(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, STACK *nval);
142fcca8 311
175b0942
DSH
312char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, ASN1_OCTET_STRING *ia5);
313ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, char *str);
142fcca8 314
9aeaf1b4
DSH
315int i2d_ext_ku(STACK *a, unsigned char **pp);
316STACK *d2i_ext_ku(STACK **a, unsigned char **pp, long length);
317void ext_ku_free(STACK *a);
318STACK *ext_ku_new(void);
57c86f79 319
41b731f2
DSH
320int i2d_CERTIFICATEPOLICIES(STACK_OF(POLICYINFO) *a, unsigned char **pp);
321STACK_OF(POLICYINFO) *CERTIFICATEPOLICIES_new(void);
322void CERTIFICATEPOLICIES_free(STACK_OF(POLICYINFO) *a);
323STACK_OF(POLICYINFO) *d2i_CERTIFICATEPOLICIES(STACK_OF(POLICYINFO) **a, unsigned char **pp, long length);
324
325int i2d_POLICYINFO(POLICYINFO *a, unsigned char **pp);
326POLICYINFO *POLICYINFO_new(void);
327POLICYINFO *d2i_POLICYINFO(POLICYINFO **a, unsigned char **pp, long length);
328void POLICYINFO_free(POLICYINFO *a);
329
330int i2d_POLICYQUALINFO(POLICYQUALINFO *a, unsigned char **pp);
331POLICYQUALINFO *POLICYQUALINFO_new(void);
332POLICYQUALINFO *d2i_POLICYQUALINFO(POLICYQUALINFO **a, unsigned char **pp,
333 long length);
334void POLICYQUALINFO_free(POLICYQUALINFO *a);
335
336int i2d_USERNOTICE(USERNOTICE *a, unsigned char **pp);
337USERNOTICE *USERNOTICE_new(void);
338USERNOTICE *d2i_USERNOTICE(USERNOTICE **a, unsigned char **pp, long length);
339void USERNOTICE_free(USERNOTICE *a);
340
341int i2d_NOTICEREF(NOTICEREF *a, unsigned char **pp);
342NOTICEREF *NOTICEREF_new(void);
343NOTICEREF *d2i_NOTICEREF(NOTICEREF **a, unsigned char **pp, long length);
344void NOTICEREF_free(NOTICEREF *a);
345
9aeaf1b4 346#ifdef HEADER_CONF_H
d08d8da4 347GENERAL_NAME *v2i_GENERAL_NAME(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, CONF_VALUE *cnf);
9aeaf1b4
DSH
348void X509V3_conf_free(CONF_VALUE *val);
349X509_EXTENSION *X509V3_EXT_conf_nid(LHASH *conf, X509V3_CTX *ctx, int ext_nid, char *value);
350X509_EXTENSION *X509V3_EXT_conf(LHASH *conf, X509V3_CTX *ctx, char *name, char *value);
351int X509V3_EXT_add_conf(LHASH *conf, X509V3_CTX *ctx, char *section, X509 *cert);
1756d405 352int X509V3_EXT_CRL_add_conf(LHASH *conf, X509V3_CTX *ctx, char *section, X509_CRL *crl);
9aeaf1b4
DSH
353int X509V3_get_value_bool(CONF_VALUE *value, int *asn1_bool);
354int X509V3_get_value_int(CONF_VALUE *value, ASN1_INTEGER **aint);
1d48dd00 355void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH *lhash);
9aeaf1b4
DSH
356#endif
357
1d48dd00
DSH
358char * X509V3_get_string(X509V3_CTX *ctx, char *name, char *section);
359STACK * X509V3_get_section(X509V3_CTX *ctx, char *section);
41b731f2
DSH
360void X509V3_string_free(X509V3_CTX *ctx, char *str);
361void X509V3_section_free( X509V3_CTX *ctx, STACK *section);
1d48dd00
DSH
362void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subject,
363 X509_REQ *req, X509_CRL *crl, int flags);
364
e778802f
BL
365int X509V3_add_value(const char *name, const char *value, STACK **extlist);
366int X509V3_add_value_bool(const char *name, int asn1_bool, STACK **extlist);
367int X509V3_add_value_int(const char *name, ASN1_INTEGER *aint, STACK **extlist);
0ca5f8b1 368char * i2s_ASN1_INTEGER(X509V3_EXT_METHOD *meth, ASN1_INTEGER *aint);
28a98809 369ASN1_INTEGER * s2i_ASN1_INTEGER(X509V3_EXT_METHOD *meth, char *value);
c74f1eb9
DSH
370char * i2s_ASN1_ENUMERATED(X509V3_EXT_METHOD *meth, ASN1_ENUMERATED *aint);
371char * i2s_ASN1_ENUMERATED_TABLE(X509V3_EXT_METHOD *meth, ASN1_ENUMERATED *aint);
9aeaf1b4
DSH
372int X509V3_EXT_add(X509V3_EXT_METHOD *ext);
373int X509V3_EXT_add_alias(int nid_to, int nid_from);
374void X509V3_EXT_cleanup(void);
375
376X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext);
377X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid);
378int X509V3_add_standard_extensions(void);
379STACK *X509V3_parse_list(char *line);
f5fedc04 380void *X509V3_EXT_d2i(X509_EXTENSION *ext);
9aeaf1b4 381
175b0942
DSH
382char *hex_to_string(unsigned char *buffer, long len);
383unsigned char *string_to_hex(char *str, long *len);
e778802f 384int name_cmp(const char *name, const char *cmp);
175b0942 385
785cdf20
DSH
386int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, int flag, int indent);
387int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag, int indent);
9aeaf1b4
DSH
388
389#else
390
391void ERR_load_X509V3_strings();
9aeaf1b4
DSH
392int i2d_BASIC_CONSTRAINTS();
393BASIC_CONSTRAINTS *d2i_BASIC_CONSTRAINTS();
394BASIC_CONSTRAINTS *BASIC_CONSTRAINTS_new();
395void BASIC_CONSTRAINTS_free();
396
142fcca8
DSH
397int i2d_GENERAL_NAME();
398GENERAL_NAME *d2i_GENERAL_NAME();
399GENERAL_NAME *GENERAL_NAME_new();
400void GENERAL_NAME_free();
d08d8da4
DSH
401STACK *i2v_GENERAL_NAME();
402GENERAL_NAME *v2i_GENERAL_NAME();
142fcca8 403
785cdf20
DSH
404int i2d_SXNET();
405SXNET *d2i_SXNET();
406SXNET *SXNET_new();
407void SXNET_free();
408
409int i2d_SXNETID();
410SXNETID *d2i_SXNETID();
411SXNETID *SXNETID_new();
412void SXNETID_free();
28a98809
DSH
413int SXNET_add_id_asc();
414int SXNET_add_id_ulong();
415int SXNET_add_id_INTEGER();
416ASN1_OCTET_STRING *SXNET_get_id_asc();
417ASN1_OCTET_STRING *SXNET_get_id_ulong();
418ASN1_OCTET_STRING *SXNET_get_id_INTEGER();
785cdf20 419
0cc39579
DSH
420int i2d_AUTHORITY_KEYID();
421AUTHORITY_KEYID *d2i_AUTHORITY_KEYID();
422AUTHORITY_KEYID *AUTHORITY_KEYID_new();
423void AUTHORITY_KEYID_free();
424
0be9747b
DSH
425int i2d_PKEY_USAGE_PERIOD();
426PKEY_USAGE_PERIOD *d2i_PKEY_USAGE_PERIOD();
427PKEY_USAGE_PERIOD *PKEY_USAGE_PERIOD_new();
428void PKEY_USAGE_PERIOD_free();
429
0ae645db
UM
430STACK *GENERAL_NAMES_new();
431void GENERAL_NAMES_free();
142fcca8
DSH
432STACK *d2i_GENERAL_NAMES();
433int i2d_GENERAL_NAMES();
175b0942 434STACK *i2v_GENERAL_NAMES();
d08d8da4 435STACK *v2i_GENERAL_NAMES();
175b0942
DSH
436
437char *i2s_ASN1_OCTET_STRING();
438ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING();
142fcca8 439
9aeaf1b4
DSH
440int i2d_ext_ku();
441STACK *d2i_ext_ku();
442void ext_ku_free();
443STACK *ext_ku_new();
444
445#ifdef HEADER_CONF_H
446void X509V3_conf_free();
447X509_EXTENSION *X509V3_EXT_conf_nid();
448X509_EXTENSION *X509V3_EXT_conf();
449int X509V3_EXT_add_conf();
450int X509V3_get_value_bool();
451int X509V3_get_value_int();
1d48dd00 452void X509V3_set_conf_lhash();
9aeaf1b4
DSH
453#endif
454
41b731f2
DSH
455int i2d_CERTIFICATEPOLICIES();
456STACK *CERTIFICATEPOLICIES_new();
457void CERTIFICATEPOLICIES_free();
458STACK *d2i_CERTIFICATEPOLICIES();
459
460int i2d_POLICYINFO();
461POLICYINFO *POLICYINFO_new();
462POLICYINFO *d2i_POLICYINFO();
463void POLICYINFO_free();
464
465int i2d_POLICYQUALINFO();
466POLICYQUALINFO *POLICYQUALINFO_new();
467POLICYQUALINFO *d2i_POLICYQUALINFO();
468void POLICYQUALINFO_free();
469
470int i2d_USERNOTICE();
471USERNOTICE *USERNOTICE_new();
472USERNOTICE *d2i_USERNOTICE();
473void USERNOTICE_free();
474
475int i2d_NOTICEREF();
476NOTICEREF *NOTICEREF_new();
477NOTICEREF *d2i_NOTICEREF();
478void NOTICEREF_free();
479
1d48dd00
DSH
480char * X509V3_get_string();
481STACK * X509V3_get_section();
41b731f2
DSH
482void X509V3_string_free();
483void X509V3_section_free();
1d48dd00
DSH
484void X509V3_set_ctx();
485
9aeaf1b4
DSH
486int X509V3_add_value();
487int X509V3_add_value_bool();
488int X509V3_add_value_int();
0ca5f8b1 489char *i2s_ASN1_INTEGER();
28a98809 490ASN1_INTEGER * s2i_ASN1_INTEGER();
c74f1eb9
DSH
491char * i2s_ASN1_ENUMERATED();
492char * i2s_ASN1_ENUMERATED_TABLE();
9aeaf1b4 493int X509V3_EXT_add();
1756d405 494int X509V3_EXT_CRL_add_conf();
9aeaf1b4
DSH
495int X509V3_EXT_add_alias();
496void X509V3_EXT_cleanup();
497
498X509V3_EXT_METHOD *X509V3_EXT_get();
499X509V3_EXT_METHOD *X509V3_EXT_get_nid();
500int X509V3_add_standard_extensions();
501STACK *X509V3_parse_list();
f5fedc04 502void *X509V3_EXT_d2i();
9aeaf1b4 503
175b0942
DSH
504char *hex_to_string();
505unsigned char *string_to_hex();
d08d8da4 506int name_cmp();
175b0942 507
9aeaf1b4
DSH
508int X509V3_EXT_print();
509int X509V3_EXT_print_fp();
510#endif
511
512/* BEGIN ERROR CODES */
513/* Error codes for the X509V3 functions. */
514
515/* Function codes. */
aa066b9e
DSH
516#define X509V3_F_COPY_EMAIL 122
517#define X509V3_F_COPY_ISSUER 123
518#define X509V3_F_DO_EXT_CONF 124
175b0942 519#define X509V3_F_HEX_TO_STRING 111
c74f1eb9 520#define X509V3_F_I2S_ASN1_ENUMERATED 121
0ca5f8b1 521#define X509V3_F_I2S_ASN1_INTEGER 120
3edd7ed1
DSH
522#define X509V3_F_NOTICE_SECTION 132
523#define X509V3_F_NREF_NOS 133
524#define X509V3_F_POLICY_SECTION 131
41b731f2 525#define X509V3_F_R2I_CERTPOL 130
9aeaf1b4 526#define X509V3_F_S2I_ASN1_IA5STRING 100
28a98809 527#define X509V3_F_S2I_ASN1_INTEGER 108
175b0942
DSH
528#define X509V3_F_S2I_ASN1_OCTET_STRING 112
529#define X509V3_F_S2I_ASN1_SKEY_ID 114
530#define X509V3_F_S2I_S2I_SKEY_ID 115
531#define X509V3_F_STRING_TO_HEX 113
28a98809
DSH
532#define X509V3_F_SXNET_ADD_ASC 125
533#define X509V3_F_SXNET_ADD_ID_INTEGER 126
534#define X509V3_F_SXNET_ADD_ID_ULONG 127
535#define X509V3_F_SXNET_GET_ID_ASC 128
536#define X509V3_F_SXNET_GET_ID_ULONG 129
9aeaf1b4 537#define X509V3_F_V2I_ASN1_BIT_STRING 101
0be9747b 538#define X509V3_F_V2I_AUTHORITY_KEYID 119
9aeaf1b4
DSH
539#define X509V3_F_V2I_BASIC_CONSTRAINTS 102
540#define X509V3_F_V2I_EXT_KU 103
d08d8da4
DSH
541#define X509V3_F_V2I_GENERAL_NAME 117
542#define X509V3_F_V2I_GENERAL_NAMES 118
5236efdb 543#define X509V3_F_V3_GENERIC_EXTENSION 116
9aeaf1b4 544#define X509V3_F_X509V3_ADD_VALUE 105
41b731f2 545#define X509V3_F_X509V3_EXT_ADD 104
9aeaf1b4
DSH
546#define X509V3_F_X509V3_EXT_ADD_ALIAS 106
547#define X509V3_F_X509V3_EXT_CONF 107
28a98809 548#define X509V3_F_X509V3_GET_VALUE_BOOL 110
41b731f2 549#define X509V3_F_X509V3_PARSE_LIST 109
9aeaf1b4
DSH
550
551/* Reason codes. */
d08d8da4
DSH
552#define X509V3_R_BAD_IP_ADDRESS 118
553#define X509V3_R_BAD_OBJECT 119
9aeaf1b4
DSH
554#define X509V3_R_BN_DEC2BN_ERROR 100
555#define X509V3_R_BN_TO_ASN1_INTEGER_ERROR 101
28a98809
DSH
556#define X509V3_R_DUPLICATE_ZONE_ID 133
557#define X509V3_R_ERROR_CONVERTING_ZONE 131
aa066b9e 558#define X509V3_R_ERROR_IN_EXTENSION 128
3edd7ed1 559#define X509V3_R_EXPECTED_A_SECTION_NAME 137
5236efdb 560#define X509V3_R_EXTENSION_NAME_ERROR 115
9aeaf1b4
DSH
561#define X509V3_R_EXTENSION_NOT_FOUND 102
562#define X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED 103
5236efdb 563#define X509V3_R_EXTENSION_VALUE_ERROR 116
175b0942 564#define X509V3_R_ILLEGAL_HEX_DIGIT 113
9aeaf1b4
DSH
565#define X509V3_R_INVALID_BOOLEAN_STRING 104
566#define X509V3_R_INVALID_EXTENSION_STRING 105
567#define X509V3_R_INVALID_NAME 106
568#define X509V3_R_INVALID_NULL_ARGUMENT 107
569#define X509V3_R_INVALID_NULL_NAME 108
570#define X509V3_R_INVALID_NULL_VALUE 109
3edd7ed1
DSH
571#define X509V3_R_INVALID_NUMBER 140
572#define X509V3_R_INVALID_NUMBERS 141
9aeaf1b4 573#define X509V3_R_INVALID_OBJECT_IDENTIFIER 110
3edd7ed1 574#define X509V3_R_INVALID_OPTION 138
41b731f2
DSH
575#define X509V3_R_INVALID_POLICY_IDENTIFIER 134
576#define X509V3_R_INVALID_SECTION 135
aa066b9e
DSH
577#define X509V3_R_ISSUER_DECODE_ERROR 126
578#define X509V3_R_MISSING_VALUE 124
3edd7ed1 579#define X509V3_R_NEED_ORGANIZATION_AND_NUMBERS 142
41b731f2 580#define X509V3_R_NO_CONFIG_DATABASE 136
0be9747b 581#define X509V3_R_NO_ISSUER_CERTIFICATE 121
aa066b9e 582#define X509V3_R_NO_ISSUER_DETAILS 127
3edd7ed1 583#define X509V3_R_NO_POLICY_IDENTIFIER 139
175b0942 584#define X509V3_R_NO_PUBLIC_KEY 114
aa066b9e 585#define X509V3_R_NO_SUBJECT_DETAILS 125
175b0942 586#define X509V3_R_ODD_NUMBER_OF_DIGITS 112
0be9747b
DSH
587#define X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS 122
588#define X509V3_R_UNABLE_TO_GET_ISSUER_KEYID 123
9aeaf1b4 589#define X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT 111
aa066b9e
DSH
590#define X509V3_R_UNKNOWN_EXTENSION 129
591#define X509V3_R_UNKNOWN_EXTENSION_NAME 130
0be9747b 592#define X509V3_R_UNKNOWN_OPTION 120
d08d8da4 593#define X509V3_R_UNSUPPORTED_OPTION 117
28a98809 594#define X509V3_R_USER_TOO_LONG 132
9aeaf1b4
DSH
595
596#ifdef __cplusplus
597}
598#endif
599#endif
600