]> git.ipfire.org Git - thirdparty/openssl.git/blame - crypto/x509v3/x509v3.h
PR: 2909
[thirdparty/openssl.git] / crypto / x509v3 / x509v3.h
CommitLineData
9aeaf1b4 1/* x509v3.h */
2e597528 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
9aeaf1b4
DSH
3 * project 1999.
4 */
5/* ====================================================================
ecf13991 6 * Copyright (c) 1999-2004 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
ec577822
BM
61#include <openssl/bio.h>
62#include <openssl/x509.h>
ba404b5e 63#include <openssl/conf.h>
9aeaf1b4 64
82271cee
RL
65#ifdef __cplusplus
66extern "C" {
67#endif
68
9aeaf1b4
DSH
69/* Forward reference */
70struct v3_ext_method;
71struct v3_ext_ctx;
72
73/* Useful typedefs */
74
66ab08b1
DSH
75typedef void * (*X509V3_EXT_NEW)(void);
76typedef void (*X509V3_EXT_FREE)(void *);
875a644a 77typedef void * (*X509V3_EXT_D2I)(void *, const unsigned char ** , long);
66ab08b1 78typedef int (*X509V3_EXT_I2D)(void *, unsigned char **);
babb3798
BL
79typedef STACK_OF(CONF_VALUE) *
80 (*X509V3_EXT_I2V)(const struct v3_ext_method *method, void *ext,
81 STACK_OF(CONF_VALUE) *extlist);
82typedef void * (*X509V3_EXT_V2I)(const struct v3_ext_method *method,
83 struct v3_ext_ctx *ctx,
84 STACK_OF(CONF_VALUE) *values);
85typedef char * (*X509V3_EXT_I2S)(const struct v3_ext_method *method, void *ext);
86typedef void * (*X509V3_EXT_S2I)(const struct v3_ext_method *method,
87 struct v3_ext_ctx *ctx, const char *str);
88typedef int (*X509V3_EXT_I2R)(const struct v3_ext_method *method, void *ext,
89 BIO *out, int indent);
90typedef void * (*X509V3_EXT_R2I)(const struct v3_ext_method *method,
91 struct v3_ext_ctx *ctx, const char *str);
9aeaf1b4
DSH
92
93/* V3 extension structure */
94
95struct v3_ext_method {
96int ext_nid;
97int ext_flags;
2aff7727 98/* If this is set the following four fields are ignored */
bb5ea36b 99ASN1_ITEM_EXP *it;
2aff7727 100/* Old style ASN1 calls */
9aeaf1b4
DSH
101X509V3_EXT_NEW ext_new;
102X509V3_EXT_FREE ext_free;
103X509V3_EXT_D2I d2i;
104X509V3_EXT_I2D i2d;
105
106/* The following pair is used for string extensions */
107X509V3_EXT_I2S i2s;
108X509V3_EXT_S2I s2i;
109
110/* The following pair is used for multi-valued extensions */
111X509V3_EXT_I2V i2v;
112X509V3_EXT_V2I v2i;
113
79a474e8 114/* The following are used for raw extensions */
9aeaf1b4 115X509V3_EXT_I2R i2r;
1d48dd00 116X509V3_EXT_R2I r2i;
9aeaf1b4 117
c8b41850 118void *usr_data; /* Any extension specific data */
9aeaf1b4
DSH
119};
120
1d48dd00
DSH
121typedef struct X509V3_CONF_METHOD_st {
122char * (*get_string)(void *db, char *section, char *value);
ba404b5e 123STACK_OF(CONF_VALUE) * (*get_section)(void *db, char *section);
1d48dd00 124void (*free_string)(void *db, char * string);
ba404b5e 125void (*free_section)(void *db, STACK_OF(CONF_VALUE) *section);
1d48dd00 126} X509V3_CONF_METHOD;
175b0942 127
9aeaf1b4 128/* Context specific info */
f317aa4c 129struct v3_ext_ctx {
175b0942 130#define CTX_TEST 0x1
b5cfc2f5 131#define X509V3_CTX_REPLACE 0x2
175b0942 132int flags;
9aeaf1b4
DSH
133X509 *issuer_cert;
134X509 *subject_cert;
135X509_REQ *subject_req;
175b0942 136X509_CRL *crl;
1d48dd00
DSH
137X509V3_CONF_METHOD *db_meth;
138void *db;
9aeaf1b4
DSH
139/* Maybe more here */
140};
141
142typedef struct v3_ext_method X509V3_EXT_METHOD;
9aeaf1b4 143
0d3b0afe
BL
144DECLARE_STACK_OF(X509V3_EXT_METHOD)
145
9aeaf1b4 146/* ext_flags values */
785cdf20
DSH
147#define X509V3_EXT_DYNAMIC 0x1
148#define X509V3_EXT_CTX_DEP 0x2
149#define X509V3_EXT_MULTILINE 0x4
9aeaf1b4 150
c74f1eb9
DSH
151typedef BIT_STRING_BITNAME ENUMERATED_NAMES;
152
0490a86d 153typedef struct BASIC_CONSTRAINTS_st {
9aeaf1b4
DSH
154int ca;
155ASN1_INTEGER *pathlen;
156} BASIC_CONSTRAINTS;
157
175b0942 158
0490a86d 159typedef struct PKEY_USAGE_PERIOD_st {
0be9747b
DSH
160ASN1_GENERALIZEDTIME *notBefore;
161ASN1_GENERALIZEDTIME *notAfter;
162} PKEY_USAGE_PERIOD;
163
a716d727
DSH
164typedef struct otherName_st {
165ASN1_OBJECT *type_id;
166ASN1_TYPE *value;
167} OTHERNAME;
168
9d6b1ce6
DSH
169typedef struct EDIPartyName_st {
170 ASN1_STRING *nameAssigner;
171 ASN1_STRING *partyName;
172} EDIPARTYNAME;
173
0490a86d 174typedef struct GENERAL_NAME_st {
142fcca8 175
9d6b1ce6
DSH
176#define GEN_OTHERNAME 0
177#define GEN_EMAIL 1
178#define GEN_DNS 2
179#define GEN_X400 3
180#define GEN_DIRNAME 4
181#define GEN_EDIPARTY 5
182#define GEN_URI 6
183#define GEN_IPADD 7
184#define GEN_RID 8
142fcca8
DSH
185
186int type;
187union {
188 char *ptr;
9d6b1ce6
DSH
189 OTHERNAME *otherName; /* otherName */
190 ASN1_IA5STRING *rfc822Name;
191 ASN1_IA5STRING *dNSName;
192 ASN1_TYPE *x400Address;
193 X509_NAME *directoryName;
194 EDIPARTYNAME *ediPartyName;
195 ASN1_IA5STRING *uniformResourceIdentifier;
196 ASN1_OCTET_STRING *iPAddress;
197 ASN1_OBJECT *registeredID;
198
199 /* Old names */
142fcca8
DSH
200 ASN1_OCTET_STRING *ip; /* iPAddress */
201 X509_NAME *dirn; /* dirn */
9d6b1ce6 202 ASN1_IA5STRING *ia5;/* rfc822Name, dNSName, uniformResourceIdentifier */
142fcca8 203 ASN1_OBJECT *rid; /* registeredID */
9d6b1ce6 204 ASN1_TYPE *other; /* x400Address */
142fcca8
DSH
205} d;
206} GENERAL_NAME;
207
9d6b1ce6
DSH
208typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES;
209
6d3724d3 210typedef struct ACCESS_DESCRIPTION_st {
9cead2f2
RL
211 ASN1_OBJECT *method;
212 GENERAL_NAME *location;
6d3724d3
DSH
213} ACCESS_DESCRIPTION;
214
9d6b1ce6
DSH
215typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS;
216
217typedef STACK_OF(ASN1_OBJECT) EXTENDED_KEY_USAGE;
218
f5fedc04
DSH
219DECLARE_STACK_OF(GENERAL_NAME)
220DECLARE_ASN1_SET_OF(GENERAL_NAME)
221
6d3724d3
DSH
222DECLARE_STACK_OF(ACCESS_DESCRIPTION)
223DECLARE_ASN1_SET_OF(ACCESS_DESCRIPTION)
224
d943e372 225typedef struct DIST_POINT_NAME_st {
9d6b1ce6
DSH
226int type;
227union {
228 GENERAL_NAMES *fullname;
229 STACK_OF(X509_NAME_ENTRY) *relativename;
230} name;
3e727a3b
DSH
231/* If relativename then this contains the full distribution point name */
232X509_NAME *dpname;
d943e372 233} DIST_POINT_NAME;
4b96839f
DSH
234/* All existing reasons */
235#define CRLDP_ALL_REASONS 0x807f
d943e372 236
d43c4497
DSH
237#define CRL_REASON_NONE -1
238#define CRL_REASON_UNSPECIFIED 0
239#define CRL_REASON_KEY_COMPROMISE 1
240#define CRL_REASON_CA_COMPROMISE 2
241#define CRL_REASON_AFFILIATION_CHANGED 3
242#define CRL_REASON_SUPERSEDED 4
243#define CRL_REASON_CESSATION_OF_OPERATION 5
244#define CRL_REASON_CERTIFICATE_HOLD 6
245#define CRL_REASON_REMOVE_FROM_CRL 8
246#define CRL_REASON_PRIVILEGE_WITHDRAWN 9
247#define CRL_REASON_AA_COMPROMISE 10
248
edc54021 249struct DIST_POINT_st {
d943e372
DSH
250DIST_POINT_NAME *distpoint;
251ASN1_BIT_STRING *reasons;
9d6b1ce6 252GENERAL_NAMES *CRLissuer;
4b96839f 253int dp_reasons;
edc54021 254};
d943e372 255
9d6b1ce6
DSH
256typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS;
257
d943e372
DSH
258DECLARE_STACK_OF(DIST_POINT)
259DECLARE_ASN1_SET_OF(DIST_POINT)
260
edc54021 261struct AUTHORITY_KEYID_st {
f5fedc04 262ASN1_OCTET_STRING *keyid;
9d6b1ce6 263GENERAL_NAMES *issuer;
f5fedc04 264ASN1_INTEGER *serial;
edc54021 265};
f5fedc04 266
785cdf20 267/* Strong extranet structures */
142fcca8 268
0490a86d 269typedef struct SXNET_ID_st {
785cdf20
DSH
270 ASN1_INTEGER *zone;
271 ASN1_OCTET_STRING *user;
272} SXNETID;
142fcca8 273
cfdcfede
BL
274DECLARE_STACK_OF(SXNETID)
275DECLARE_ASN1_SET_OF(SXNETID)
276
277typedef struct SXNET_st {
278 ASN1_INTEGER *version;
279 STACK_OF(SXNETID) *ids;
280} SXNET;
281
c83e523d
DSH
282typedef struct NOTICEREF_st {
283 ASN1_STRING *organization;
abc9400e 284 STACK_OF(ASN1_INTEGER) *noticenos;
c83e523d
DSH
285} NOTICEREF;
286
287typedef struct USERNOTICE_st {
41b731f2 288 NOTICEREF *noticeref;
c83e523d
DSH
289 ASN1_STRING *exptext;
290} USERNOTICE;
291
292typedef struct POLICYQUALINFO_st {
293 ASN1_OBJECT *pqualid;
294 union {
295 ASN1_IA5STRING *cpsuri;
296 USERNOTICE *usernotice;
297 ASN1_TYPE *other;
298 } d;
299} POLICYQUALINFO;
300
301DECLARE_STACK_OF(POLICYQUALINFO)
41b731f2 302DECLARE_ASN1_SET_OF(POLICYQUALINFO)
c83e523d
DSH
303
304typedef struct POLICYINFO_st {
305 ASN1_OBJECT *policyid;
41b731f2 306 STACK_OF(POLICYQUALINFO) *qualifiers;
c83e523d
DSH
307} POLICYINFO;
308
9d6b1ce6
DSH
309typedef STACK_OF(POLICYINFO) CERTIFICATEPOLICIES;
310
6c5d4168
BM
311DECLARE_STACK_OF(POLICYINFO)
312DECLARE_ASN1_SET_OF(POLICYINFO)
c83e523d 313
a1d12dae
DSH
314typedef struct POLICY_MAPPING_st {
315 ASN1_OBJECT *issuerDomainPolicy;
316 ASN1_OBJECT *subjectDomainPolicy;
317} POLICY_MAPPING;
318
319DECLARE_STACK_OF(POLICY_MAPPING)
320
321typedef STACK_OF(POLICY_MAPPING) POLICY_MAPPINGS;
322
520b76ff
DSH
323typedef struct GENERAL_SUBTREE_st {
324 GENERAL_NAME *base;
325 ASN1_INTEGER *minimum;
326 ASN1_INTEGER *maximum;
327} GENERAL_SUBTREE;
328
329DECLARE_STACK_OF(GENERAL_SUBTREE)
330
e9746e03 331struct NAME_CONSTRAINTS_st {
520b76ff
DSH
332 STACK_OF(GENERAL_SUBTREE) *permittedSubtrees;
333 STACK_OF(GENERAL_SUBTREE) *excludedSubtrees;
e9746e03 334};
520b76ff 335
f80153e2
DSH
336typedef struct POLICY_CONSTRAINTS_st {
337 ASN1_INTEGER *requireExplicitPolicy;
338 ASN1_INTEGER *inhibitPolicyMapping;
339} POLICY_CONSTRAINTS;
340
6951c23a
RL
341/* Proxy certificate structures, see RFC 3820 */
342typedef struct PROXY_POLICY_st
343 {
344 ASN1_OBJECT *policyLanguage;
345 ASN1_OCTET_STRING *policy;
346 } PROXY_POLICY;
347
348typedef struct PROXY_CERT_INFO_EXTENSION_st
349 {
350 ASN1_INTEGER *pcPathLengthConstraint;
351 PROXY_POLICY *proxyPolicy;
352 } PROXY_CERT_INFO_EXTENSION;
353
354DECLARE_ASN1_FUNCTIONS(PROXY_POLICY)
355DECLARE_ASN1_FUNCTIONS(PROXY_CERT_INFO_EXTENSION)
356
edc54021 357struct ISSUING_DIST_POINT_st
231493c9
DSH
358 {
359 DIST_POINT_NAME *distpoint;
360 int onlyuser;
361 int onlyCA;
362 ASN1_BIT_STRING *onlysomereasons;
363 int indirectCRL;
364 int onlyattr;
edc54021 365 };
6951c23a 366
4d50a2b4
DSH
367/* Values in idp_flags field */
368/* IDP present */
369#define IDP_PRESENT 0x1
370/* IDP values inconsistent */
371#define IDP_INVALID 0x2
372/* onlyuser true */
373#define IDP_ONLYUSER 0x4
374/* onlyCA true */
375#define IDP_ONLYCA 0x8
376/* onlyattr true */
377#define IDP_ONLYATTR 0x10
378/* indirectCRL true */
379#define IDP_INDIRECT 0x20
380/* onlysomereasons present */
381#define IDP_REASONS 0x40
382
9aeaf1b4
DSH
383#define X509V3_conf_err(val) ERR_add_error_data(6, "section:", val->section, \
384",name:", val->name, ",value:", val->value);
385
41b731f2
DSH
386#define X509V3_set_ctx_test(ctx) \
387 X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, CTX_TEST)
96bd6f73 388#define X509V3_set_ctx_nodb(ctx) (ctx)->db = NULL;
41b731f2 389
bb5ea36b 390#define EXT_BITSTRING(nid, table) { nid, 0, ASN1_ITEM_ref(ASN1_BIT_STRING), \
2aff7727
DSH
391 0,0,0,0, \
392 0,0, \
9aeaf1b4
DSH
393 (X509V3_EXT_I2V)i2v_ASN1_BIT_STRING, \
394 (X509V3_EXT_V2I)v2i_ASN1_BIT_STRING, \
79a474e8 395 NULL, NULL, \
2aff7727 396 table}
9aeaf1b4 397
bb5ea36b 398#define EXT_IA5STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_IA5STRING), \
2aff7727 399 0,0,0,0, \
9aeaf1b4
DSH
400 (X509V3_EXT_I2S)i2s_ASN1_IA5STRING, \
401 (X509V3_EXT_S2I)s2i_ASN1_IA5STRING, \
2aff7727 402 0,0,0,0, \
9aeaf1b4
DSH
403 NULL}
404
2aff7727 405#define EXT_END { -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
9aeaf1b4 406
673b102c
DSH
407
408/* X509_PURPOSE stuff */
409
410#define EXFLAG_BCONS 0x1
411#define EXFLAG_KUSAGE 0x2
412#define EXFLAG_XKUSAGE 0x4
413#define EXFLAG_NSCERT 0x8
414
415#define EXFLAG_CA 0x10
db50661f
DSH
416/* Really self issued not necessarily self signed */
417#define EXFLAG_SI 0x20
673b102c
DSH
418#define EXFLAG_V1 0x40
419#define EXFLAG_INVALID 0x80
420#define EXFLAG_SET 0x100
f1558bb4 421#define EXFLAG_CRITICAL 0x200
6951c23a 422#define EXFLAG_PROXY 0x400
673b102c 423
d43c4497
DSH
424#define EXFLAG_INVALID_POLICY 0x800
425#define EXFLAG_FRESHEST 0x1000
b1efb716
DSH
426/* Self signed */
427#define EXFLAG_SS 0x2000
4acc3e90 428
673b102c
DSH
429#define KU_DIGITAL_SIGNATURE 0x0080
430#define KU_NON_REPUDIATION 0x0040
431#define KU_KEY_ENCIPHERMENT 0x0020
432#define KU_DATA_ENCIPHERMENT 0x0010
433#define KU_KEY_AGREEMENT 0x0008
434#define KU_KEY_CERT_SIGN 0x0004
435#define KU_CRL_SIGN 0x0002
436#define KU_ENCIPHER_ONLY 0x0001
437#define KU_DECIPHER_ONLY 0x8000
438
439#define NS_SSL_CLIENT 0x80
440#define NS_SSL_SERVER 0x40
441#define NS_SMIME 0x20
442#define NS_OBJSIGN 0x10
443#define NS_SSL_CA 0x04
444#define NS_SMIME_CA 0x02
445#define NS_OBJSIGN_CA 0x01
81f169e9 446#define NS_ANY_CA (NS_SSL_CA|NS_SMIME_CA|NS_OBJSIGN_CA)
673b102c
DSH
447
448#define XKU_SSL_SERVER 0x1
449#define XKU_SSL_CLIENT 0x2
450#define XKU_SMIME 0x4
451#define XKU_CODE_SIGN 0x8
452#define XKU_SGC 0x10
81f169e9
DSH
453#define XKU_OCSP_SIGN 0x20
454#define XKU_TIMESTAMP 0x40
b637670f 455#define XKU_DVCS 0x80
df4c395c 456#define XKU_ANYEKU 0x100
673b102c 457
79875776
BM
458#define X509_PURPOSE_DYNAMIC 0x1
459#define X509_PURPOSE_DYNAMIC_NAME 0x2
460
673b102c 461typedef struct x509_purpose_st {
13938ace
DSH
462 int purpose;
463 int trust; /* Default trust ID */
464 int flags;
ccd86b68
GT
465 int (*check_purpose)(const struct x509_purpose_st *,
466 const X509 *, int);
13938ace
DSH
467 char *name;
468 char *sname;
d4cec6a1 469 void *usr_data;
673b102c
DSH
470} X509_PURPOSE;
471
d4cec6a1
DSH
472#define X509_PURPOSE_SSL_CLIENT 1
473#define X509_PURPOSE_SSL_SERVER 2
474#define X509_PURPOSE_NS_SSL_SERVER 3
475#define X509_PURPOSE_SMIME_SIGN 4
476#define X509_PURPOSE_SMIME_ENCRYPT 5
477#define X509_PURPOSE_CRL_SIGN 6
068fdce8 478#define X509_PURPOSE_ANY 7
81f169e9 479#define X509_PURPOSE_OCSP_HELPER 8
c7235be6 480#define X509_PURPOSE_TIMESTAMP_SIGN 9
673b102c 481
dd413410 482#define X509_PURPOSE_MIN 1
c7235be6 483#define X509_PURPOSE_MAX 9
dd413410 484
8ca533e3
DSH
485/* Flags for X509V3_EXT_print() */
486
487#define X509V3_EXT_UNKNOWN_MASK (0xfL << 16)
488/* Return error for unknown extensions */
489#define X509V3_EXT_DEFAULT 0
490/* Print error for unknown extensions */
491#define X509V3_EXT_ERROR_UNKNOWN (1L << 16)
492/* ASN1 parse unknown extensions */
493#define X509V3_EXT_PARSE_UNKNOWN (2L << 16)
494/* BIO_dump unknown extensions */
495#define X509V3_EXT_DUMP_UNKNOWN (3L << 16)
496
57d2f217
DSH
497/* Flags for X509V3_add1_i2d */
498
499#define X509V3_ADD_OP_MASK 0xfL
500#define X509V3_ADD_DEFAULT 0L
501#define X509V3_ADD_APPEND 1L
502#define X509V3_ADD_REPLACE 2L
503#define X509V3_ADD_REPLACE_EXISTING 3L
504#define X509V3_ADD_KEEP_EXISTING 4L
505#define X509V3_ADD_DELETE 5L
506#define X509V3_ADD_SILENT 0x10
507
d4cec6a1 508DECLARE_STACK_OF(X509_PURPOSE)
673b102c 509
2aff7727 510DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS)
9aeaf1b4 511
9d6b1ce6
DSH
512DECLARE_ASN1_FUNCTIONS(SXNET)
513DECLARE_ASN1_FUNCTIONS(SXNETID)
785cdf20 514
61f5b6f3
BL
515int SXNET_add_id_asc(SXNET **psx, char *zone, char *user, int userlen);
516int SXNET_add_id_ulong(SXNET **psx, unsigned long lzone, char *user, int userlen);
517int SXNET_add_id_INTEGER(SXNET **psx, ASN1_INTEGER *izone, char *user, int userlen);
28a98809
DSH
518
519ASN1_OCTET_STRING *SXNET_get_id_asc(SXNET *sx, char *zone);
520ASN1_OCTET_STRING *SXNET_get_id_ulong(SXNET *sx, unsigned long lzone);
521ASN1_OCTET_STRING *SXNET_get_id_INTEGER(SXNET *sx, ASN1_INTEGER *zone);
522
9d6b1ce6
DSH
523DECLARE_ASN1_FUNCTIONS(AUTHORITY_KEYID)
524
525DECLARE_ASN1_FUNCTIONS(PKEY_USAGE_PERIOD)
526
527DECLARE_ASN1_FUNCTIONS(GENERAL_NAME)
c7235be6
UM
528GENERAL_NAME *GENERAL_NAME_dup(GENERAL_NAME *a);
529int GENERAL_NAME_cmp(GENERAL_NAME *a, GENERAL_NAME *b);
530
9d6b1ce6 531
5d6383c8
DSH
532
533ASN1_BIT_STRING *v2i_ASN1_BIT_STRING(X509V3_EXT_METHOD *method,
534 X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval);
535STACK_OF(CONF_VALUE) *i2v_ASN1_BIT_STRING(X509V3_EXT_METHOD *method,
536 ASN1_BIT_STRING *bits,
537 STACK_OF(CONF_VALUE) *extlist);
538
9d6b1ce6 539STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, GENERAL_NAME *gen, STACK_OF(CONF_VALUE) *ret);
2c15d426 540int GENERAL_NAME_print(BIO *out, GENERAL_NAME *gen);
175b0942 541
9d6b1ce6 542DECLARE_ASN1_FUNCTIONS(GENERAL_NAMES)
0be9747b 543
ba404b5e 544STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method,
9d6b1ce6 545 GENERAL_NAMES *gen, STACK_OF(CONF_VALUE) *extlist);
babb3798
BL
546GENERAL_NAMES *v2i_GENERAL_NAMES(const X509V3_EXT_METHOD *method,
547 X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval);
142fcca8 548
9d6b1ce6
DSH
549DECLARE_ASN1_FUNCTIONS(OTHERNAME)
550DECLARE_ASN1_FUNCTIONS(EDIPARTYNAME)
c7235be6 551int OTHERNAME_cmp(OTHERNAME *a, OTHERNAME *b);
a5cdb7d5
DSH
552void GENERAL_NAME_set0_value(GENERAL_NAME *a, int type, void *value);
553void *GENERAL_NAME_get0_value(GENERAL_NAME *a, int *ptype);
554int GENERAL_NAME_set0_othername(GENERAL_NAME *gen,
555 ASN1_OBJECT *oid, ASN1_TYPE *value);
556int GENERAL_NAME_get0_otherName(GENERAL_NAME *gen,
557 ASN1_OBJECT **poid, ASN1_TYPE **pvalue);
a716d727 558
175b0942
DSH
559char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, ASN1_OCTET_STRING *ia5);
560ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, char *str);
142fcca8 561
9d6b1ce6 562DECLARE_ASN1_FUNCTIONS(EXTENDED_KEY_USAGE)
eb64730b 563int i2a_ACCESS_DESCRIPTION(BIO *bp, ACCESS_DESCRIPTION* a);
6d3724d3 564
9d6b1ce6
DSH
565DECLARE_ASN1_FUNCTIONS(CERTIFICATEPOLICIES)
566DECLARE_ASN1_FUNCTIONS(POLICYINFO)
567DECLARE_ASN1_FUNCTIONS(POLICYQUALINFO)
568DECLARE_ASN1_FUNCTIONS(USERNOTICE)
569DECLARE_ASN1_FUNCTIONS(NOTICEREF)
6d3724d3 570
9d6b1ce6
DSH
571DECLARE_ASN1_FUNCTIONS(CRL_DIST_POINTS)
572DECLARE_ASN1_FUNCTIONS(DIST_POINT)
573DECLARE_ASN1_FUNCTIONS(DIST_POINT_NAME)
8eb72175 574DECLARE_ASN1_FUNCTIONS(ISSUING_DIST_POINT)
6d3724d3 575
3e727a3b
DSH
576int DIST_POINT_set_dpname(DIST_POINT_NAME *dpn, X509_NAME *iname);
577
e9746e03
DSH
578int NAME_CONSTRAINTS_check(X509 *x, NAME_CONSTRAINTS *nc);
579
9d6b1ce6
DSH
580DECLARE_ASN1_FUNCTIONS(ACCESS_DESCRIPTION)
581DECLARE_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS)
6d3724d3 582
a1d12dae 583DECLARE_ASN1_ITEM(POLICY_MAPPING)
ea3675b5 584DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_MAPPING)
a1d12dae
DSH
585DECLARE_ASN1_ITEM(POLICY_MAPPINGS)
586
520b76ff
DSH
587DECLARE_ASN1_ITEM(GENERAL_SUBTREE)
588DECLARE_ASN1_ALLOC_FUNCTIONS(GENERAL_SUBTREE)
589
590DECLARE_ASN1_ITEM(NAME_CONSTRAINTS)
591DECLARE_ASN1_ALLOC_FUNCTIONS(NAME_CONSTRAINTS)
592
f80153e2
DSH
593DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_CONSTRAINTS)
594DECLARE_ASN1_ITEM(POLICY_CONSTRAINTS)
595
be86c7fc 596GENERAL_NAME *a2i_GENERAL_NAME(GENERAL_NAME *out,
babb3798
BL
597 const X509V3_EXT_METHOD *method, X509V3_CTX *ctx,
598 int gen_type, char *value, int is_nc);
be86c7fc 599
9aeaf1b4 600#ifdef HEADER_CONF_H
babb3798
BL
601GENERAL_NAME *v2i_GENERAL_NAME(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx,
602 CONF_VALUE *cnf);
603GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out,
604 const X509V3_EXT_METHOD *method,
605 X509V3_CTX *ctx, CONF_VALUE *cnf, int is_nc);
9aeaf1b4 606void X509V3_conf_free(CONF_VALUE *val);
b7a26e6d
DSH
607
608X509_EXTENSION *X509V3_EXT_nconf_nid(CONF *conf, X509V3_CTX *ctx, int ext_nid, char *value);
609X509_EXTENSION *X509V3_EXT_nconf(CONF *conf, X509V3_CTX *ctx, char *name, char *value);
610int X509V3_EXT_add_nconf_sk(CONF *conf, X509V3_CTX *ctx, char *section, STACK_OF(X509_EXTENSION) **sk);
611int X509V3_EXT_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, X509 *cert);
612int X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, X509_REQ *req);
613int X509V3_EXT_CRL_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, X509_CRL *crl);
614
3c1d6bbc
BL
615X509_EXTENSION *X509V3_EXT_conf_nid(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
616 int ext_nid, char *value);
617X509_EXTENSION *X509V3_EXT_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
618 char *name, char *value);
619int X509V3_EXT_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
620 char *section, X509 *cert);
621int X509V3_EXT_REQ_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
622 char *section, X509_REQ *req);
623int X509V3_EXT_CRL_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
624 char *section, X509_CRL *crl);
b7a26e6d 625
ba404b5e 626int X509V3_add_value_bool_nf(char *name, int asn1_bool,
3c1d6bbc 627 STACK_OF(CONF_VALUE) **extlist);
9aeaf1b4
DSH
628int X509V3_get_value_bool(CONF_VALUE *value, int *asn1_bool);
629int X509V3_get_value_int(CONF_VALUE *value, ASN1_INTEGER **aint);
b7a26e6d 630void X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf);
3c1d6bbc 631void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH_OF(CONF_VALUE) *lhash);
9aeaf1b4
DSH
632#endif
633
1d48dd00 634char * X509V3_get_string(X509V3_CTX *ctx, char *name, char *section);
ba404b5e 635STACK_OF(CONF_VALUE) * X509V3_get_section(X509V3_CTX *ctx, char *section);
41b731f2 636void X509V3_string_free(X509V3_CTX *ctx, char *str);
ba404b5e 637void X509V3_section_free( X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *section);
1d48dd00
DSH
638void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subject,
639 X509_REQ *req, X509_CRL *crl, int flags);
640
ba404b5e
DSH
641int X509V3_add_value(const char *name, const char *value,
642 STACK_OF(CONF_VALUE) **extlist);
61f5b6f3 643int X509V3_add_value_uchar(const char *name, const unsigned char *value,
ba404b5e
DSH
644 STACK_OF(CONF_VALUE) **extlist);
645int X509V3_add_value_bool(const char *name, int asn1_bool,
646 STACK_OF(CONF_VALUE) **extlist);
647int X509V3_add_value_int(const char *name, ASN1_INTEGER *aint,
648 STACK_OF(CONF_VALUE) **extlist);
0ca5f8b1 649char * i2s_ASN1_INTEGER(X509V3_EXT_METHOD *meth, ASN1_INTEGER *aint);
28a98809 650ASN1_INTEGER * s2i_ASN1_INTEGER(X509V3_EXT_METHOD *meth, char *value);
c74f1eb9
DSH
651char * i2s_ASN1_ENUMERATED(X509V3_EXT_METHOD *meth, ASN1_ENUMERATED *aint);
652char * i2s_ASN1_ENUMERATED_TABLE(X509V3_EXT_METHOD *meth, ASN1_ENUMERATED *aint);
9aeaf1b4 653int X509V3_EXT_add(X509V3_EXT_METHOD *ext);
397f7038 654int X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist);
9aeaf1b4
DSH
655int X509V3_EXT_add_alias(int nid_to, int nid_from);
656void X509V3_EXT_cleanup(void);
657
babb3798
BL
658const X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext);
659const X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid);
9aeaf1b4 660int X509V3_add_standard_extensions(void);
535d79da 661STACK_OF(CONF_VALUE) *X509V3_parse_list(const char *line);
f5fedc04 662void *X509V3_EXT_d2i(X509_EXTENSION *ext);
4654ef98 663void *X509V3_get_d2i(STACK_OF(X509_EXTENSION) *x, int nid, int *crit, int *idx);
4654ef98 664
57d2f217 665
c8b41850 666X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc);
28ddfc61 667int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, int crit, unsigned long flags);
9aeaf1b4 668
376bf1d4
DSH
669char *hex_to_string(const unsigned char *buffer, long len);
670unsigned char *string_to_hex(const char *str, long *len);
e778802f 671int name_cmp(const char *name, const char *cmp);
175b0942 672
ba404b5e
DSH
673void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent,
674 int ml);
8ca533e3 675int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag, int indent);
785cdf20 676int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag, int indent);
9aeaf1b4 677
2c15d426
DSH
678int X509V3_extensions_print(BIO *out, char *title, STACK_OF(X509_EXTENSION) *exts, unsigned long flag, int indent);
679
30b415b0 680int X509_check_ca(X509 *x);
673b102c 681int X509_check_purpose(X509 *x, int id, int ca);
f1558bb4 682int X509_supported_extension(X509_EXTENSION *ex);
926a56bf 683int X509_PURPOSE_set(int *p, int purpose);
2f043896 684int X509_check_issued(X509 *issuer, X509 *subject);
bc7535bc 685int X509_check_akid(X509 *issuer, AUTHORITY_KEYID *akid);
d4cec6a1 686int X509_PURPOSE_get_count(void);
6d0d5431 687X509_PURPOSE * X509_PURPOSE_get0(int idx);
d4cec6a1
DSH
688int X509_PURPOSE_get_by_sname(char *sname);
689int X509_PURPOSE_get_by_id(int id);
dd413410 690int X509_PURPOSE_add(int id, int trust, int flags,
ccd86b68 691 int (*ck)(const X509_PURPOSE *, const X509 *, int),
dd413410 692 char *name, char *sname, void *arg);
c7cb16a8
DSH
693char *X509_PURPOSE_get0_name(X509_PURPOSE *xp);
694char *X509_PURPOSE_get0_sname(X509_PURPOSE *xp);
d4cec6a1 695int X509_PURPOSE_get_trust(X509_PURPOSE *xp);
79875776 696void X509_PURPOSE_cleanup(void);
673b102c 697int X509_PURPOSE_get_id(X509_PURPOSE *);
673b102c 698
c869da88
DSH
699STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x);
700STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x);
701void X509_email_free(STACK_OF(OPENSSL_STRING) *sk);
702STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x);
a70da5b3
DSH
703/* Flags for X509_check_* functions */
704
705/* Always check subject name for host match even if subject alt names present */
706#define X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT 0x1
d88926f1
DSH
707/* Disable wild-card matching for dnsName fields and common name. */
708#define X509_CHECK_FLAG_NO_WILDCARDS 0x2
a70da5b3
DSH
709
710int X509_check_host(X509 *x, const unsigned char *chk, size_t chklen,
711 unsigned int flags);
712int X509_check_email(X509 *x, const unsigned char *chk, size_t chklen,
713 unsigned int flags);
714int X509_check_ip(X509 *x, const unsigned char *chk, size_t chklen,
715 unsigned int flags);
716int X509_check_ip_asc(X509 *x, const char *ipasc, unsigned int flags);
a91dedca 717
4e5d3a7f 718ASN1_OCTET_STRING *a2i_IPADDRESS(const char *ipasc);
520b76ff 719ASN1_OCTET_STRING *a2i_IPADDRESS_NC(const char *ipasc);
96ea4ae9 720int a2i_ipadd(unsigned char *ipout, const char *ipasc);
f0dc08e6
DSH
721int X509V3_NAME_from_section(X509_NAME *nm, STACK_OF(CONF_VALUE)*dn_sk,
722 unsigned long chtype);
a91dedca 723
ecf13991 724void X509_POLICY_NODE_print(BIO *out, X509_POLICY_NODE *node, int indent);
3c07d3a3 725DECLARE_STACK_OF(X509_POLICY_NODE)
ecf13991 726
d137b56a 727#ifndef OPENSSL_NO_RFC3779
96ea4ae9
BL
728
729typedef struct ASRange_st {
730 ASN1_INTEGER *min, *max;
731} ASRange;
732
733#define ASIdOrRange_id 0
734#define ASIdOrRange_range 1
735
736typedef struct ASIdOrRange_st {
737 int type;
738 union {
739 ASN1_INTEGER *id;
740 ASRange *range;
741 } u;
742} ASIdOrRange;
743
744typedef STACK_OF(ASIdOrRange) ASIdOrRanges;
745DECLARE_STACK_OF(ASIdOrRange)
746
747#define ASIdentifierChoice_inherit 0
748#define ASIdentifierChoice_asIdsOrRanges 1
749
750typedef struct ASIdentifierChoice_st {
751 int type;
752 union {
753 ASN1_NULL *inherit;
754 ASIdOrRanges *asIdsOrRanges;
755 } u;
756} ASIdentifierChoice;
757
758typedef struct ASIdentifiers_st {
759 ASIdentifierChoice *asnum, *rdi;
760} ASIdentifiers;
761
762DECLARE_ASN1_FUNCTIONS(ASRange)
763DECLARE_ASN1_FUNCTIONS(ASIdOrRange)
764DECLARE_ASN1_FUNCTIONS(ASIdentifierChoice)
765DECLARE_ASN1_FUNCTIONS(ASIdentifiers)
766
767
768typedef struct IPAddressRange_st {
769 ASN1_BIT_STRING *min, *max;
770} IPAddressRange;
771
772#define IPAddressOrRange_addressPrefix 0
773#define IPAddressOrRange_addressRange 1
774
775typedef struct IPAddressOrRange_st {
776 int type;
777 union {
778 ASN1_BIT_STRING *addressPrefix;
779 IPAddressRange *addressRange;
780 } u;
781} IPAddressOrRange;
782
783typedef STACK_OF(IPAddressOrRange) IPAddressOrRanges;
784DECLARE_STACK_OF(IPAddressOrRange)
785
786#define IPAddressChoice_inherit 0
787#define IPAddressChoice_addressesOrRanges 1
788
789typedef struct IPAddressChoice_st {
790 int type;
791 union {
792 ASN1_NULL *inherit;
793 IPAddressOrRanges *addressesOrRanges;
794 } u;
795} IPAddressChoice;
796
797typedef struct IPAddressFamily_st {
798 ASN1_OCTET_STRING *addressFamily;
799 IPAddressChoice *ipAddressChoice;
800} IPAddressFamily;
801
802typedef STACK_OF(IPAddressFamily) IPAddrBlocks;
803DECLARE_STACK_OF(IPAddressFamily)
804
805DECLARE_ASN1_FUNCTIONS(IPAddressRange)
806DECLARE_ASN1_FUNCTIONS(IPAddressOrRange)
807DECLARE_ASN1_FUNCTIONS(IPAddressChoice)
808DECLARE_ASN1_FUNCTIONS(IPAddressFamily)
809
810/*
811 * API tag for elements of the ASIdentifer SEQUENCE.
812 */
813#define V3_ASID_ASNUM 0
814#define V3_ASID_RDI 1
815
816/*
817 * AFI values, assigned by IANA. It'd be nice to make the AFI
818 * handling code totally generic, but there are too many little things
819 * that would need to be defined for other address families for it to
820 * be worth the trouble.
821 */
822#define IANA_AFI_IPV4 1
823#define IANA_AFI_IPV6 2
824
825/*
826 * Utilities to construct and extract values from RFC3779 extensions,
827 * since some of the encodings (particularly for IP address prefixes
828 * and ranges) are a bit tedious to work with directly.
829 */
830int v3_asid_add_inherit(ASIdentifiers *asid, int which);
831int v3_asid_add_id_or_range(ASIdentifiers *asid, int which,
832 ASN1_INTEGER *min, ASN1_INTEGER *max);
833int v3_addr_add_inherit(IPAddrBlocks *addr,
834 const unsigned afi, const unsigned *safi);
835int v3_addr_add_prefix(IPAddrBlocks *addr,
836 const unsigned afi, const unsigned *safi,
837 unsigned char *a, const int prefixlen);
838int v3_addr_add_range(IPAddrBlocks *addr,
839 const unsigned afi, const unsigned *safi,
840 unsigned char *min, unsigned char *max);
841unsigned v3_addr_get_afi(const IPAddressFamily *f);
842int v3_addr_get_range(IPAddressOrRange *aor, const unsigned afi,
843 unsigned char *min, unsigned char *max,
844 const int length);
845
846/*
847 * Canonical forms.
848 */
849int v3_asid_is_canonical(ASIdentifiers *asid);
850int v3_addr_is_canonical(IPAddrBlocks *addr);
851int v3_asid_canonize(ASIdentifiers *asid);
852int v3_addr_canonize(IPAddrBlocks *addr);
853
854/*
855 * Tests for inheritance and containment.
856 */
857int v3_asid_inherits(ASIdentifiers *asid);
858int v3_addr_inherits(IPAddrBlocks *addr);
859int v3_asid_subset(ASIdentifiers *a, ASIdentifiers *b);
860int v3_addr_subset(IPAddrBlocks *a, IPAddrBlocks *b);
861
862/*
863 * Check whether RFC 3779 extensions nest properly in chains.
864 */
865int v3_asid_validate_path(X509_STORE_CTX *);
866int v3_addr_validate_path(X509_STORE_CTX *);
867int v3_asid_validate_resource_set(STACK_OF(X509) *chain,
868 ASIdentifiers *ext,
869 int allow_inheritance);
870int v3_addr_validate_resource_set(STACK_OF(X509) *chain,
871 IPAddrBlocks *ext,
872 int allow_inheritance);
873
10ca15f3 874#endif /* OPENSSL_NO_RFC3779 */
96ea4ae9 875
9aeaf1b4 876/* BEGIN ERROR CODES */
6d311938
DSH
877/* The following lines are auto generated by the script mkerr.pl. Any changes
878 * made after this point may be overwritten when the script is next run.
879 */
926a56bf 880void ERR_load_X509V3_strings(void);
6d311938 881
9aeaf1b4
DSH
882/* Error codes for the X509V3 functions. */
883
884/* Function codes. */
be86c7fc 885#define X509V3_F_A2I_GENERAL_NAME 164
96ea4ae9
BL
886#define X509V3_F_ASIDENTIFIERCHOICE_CANONIZE 161
887#define X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL 162
aa066b9e
DSH
888#define X509V3_F_COPY_EMAIL 122
889#define X509V3_F_COPY_ISSUER 123
f0dc08e6 890#define X509V3_F_DO_DIRNAME 144
aa066b9e 891#define X509V3_F_DO_EXT_CONF 124
c8b41850 892#define X509V3_F_DO_EXT_I2D 135
8afca8d9 893#define X509V3_F_DO_EXT_NCONF 151
520b76ff 894#define X509V3_F_DO_I2V_NAME_CONSTRAINTS 148
0745d089 895#define X509V3_F_GNAMES_FROM_SECTNAME 156
175b0942 896#define X509V3_F_HEX_TO_STRING 111
c74f1eb9 897#define X509V3_F_I2S_ASN1_ENUMERATED 121
a0e7c8ee 898#define X509V3_F_I2S_ASN1_IA5STRING 149
0ca5f8b1 899#define X509V3_F_I2S_ASN1_INTEGER 120
6d3724d3 900#define X509V3_F_I2V_AUTHORITY_INFO_ACCESS 138
3edd7ed1
DSH
901#define X509V3_F_NOTICE_SECTION 132
902#define X509V3_F_NREF_NOS 133
903#define X509V3_F_POLICY_SECTION 131
8afca8d9 904#define X509V3_F_PROCESS_PCI_VALUE 150
41b731f2 905#define X509V3_F_R2I_CERTPOL 130
51eb1b81 906#define X509V3_F_R2I_PCI 155
9aeaf1b4 907#define X509V3_F_S2I_ASN1_IA5STRING 100
28a98809 908#define X509V3_F_S2I_ASN1_INTEGER 108
175b0942
DSH
909#define X509V3_F_S2I_ASN1_OCTET_STRING 112
910#define X509V3_F_S2I_ASN1_SKEY_ID 114
8afca8d9 911#define X509V3_F_S2I_SKEY_ID 115
51eb1b81 912#define X509V3_F_SET_DIST_POINT_NAME 158
175b0942 913#define X509V3_F_STRING_TO_HEX 113
8afca8d9 914#define X509V3_F_SXNET_ADD_ID_ASC 125
28a98809
DSH
915#define X509V3_F_SXNET_ADD_ID_INTEGER 126
916#define X509V3_F_SXNET_ADD_ID_ULONG 127
917#define X509V3_F_SXNET_GET_ID_ASC 128
918#define X509V3_F_SXNET_GET_ID_ULONG 129
96ea4ae9 919#define X509V3_F_V2I_ASIDENTIFIERS 163
9aeaf1b4 920#define X509V3_F_V2I_ASN1_BIT_STRING 101
8afca8d9 921#define X509V3_F_V2I_AUTHORITY_INFO_ACCESS 139
0be9747b 922#define X509V3_F_V2I_AUTHORITY_KEYID 119
9aeaf1b4 923#define X509V3_F_V2I_BASIC_CONSTRAINTS 102
d943e372 924#define X509V3_F_V2I_CRLD 134
8afca8d9 925#define X509V3_F_V2I_EXTENDED_KEY_USAGE 103
d08d8da4 926#define X509V3_F_V2I_GENERAL_NAMES 118
8afca8d9 927#define X509V3_F_V2I_GENERAL_NAME_EX 117
0537f968 928#define X509V3_F_V2I_IDP 157
96ea4ae9 929#define X509V3_F_V2I_IPADDRBLOCKS 159
8afca8d9 930#define X509V3_F_V2I_ISSUER_ALT 153
520b76ff 931#define X509V3_F_V2I_NAME_CONSTRAINTS 147
f80153e2 932#define X509V3_F_V2I_POLICY_CONSTRAINTS 146
a1d12dae 933#define X509V3_F_V2I_POLICY_MAPPINGS 145
8afca8d9 934#define X509V3_F_V2I_SUBJECT_ALT 154
96ea4ae9 935#define X509V3_F_V3_ADDR_VALIDATE_PATH_INTERNAL 160
5236efdb 936#define X509V3_F_V3_GENERIC_EXTENSION 116
8afca8d9 937#define X509V3_F_X509V3_ADD1_I2D 140
9aeaf1b4 938#define X509V3_F_X509V3_ADD_VALUE 105
41b731f2 939#define X509V3_F_X509V3_EXT_ADD 104
9aeaf1b4
DSH
940#define X509V3_F_X509V3_EXT_ADD_ALIAS 106
941#define X509V3_F_X509V3_EXT_CONF 107
c8b41850 942#define X509V3_F_X509V3_EXT_I2D 136
8afca8d9 943#define X509V3_F_X509V3_EXT_NCONF 152
f0dc08e6
DSH
944#define X509V3_F_X509V3_GET_SECTION 142
945#define X509V3_F_X509V3_GET_STRING 143
28a98809 946#define X509V3_F_X509V3_GET_VALUE_BOOL 110
41b731f2 947#define X509V3_F_X509V3_PARSE_LIST 109
79875776 948#define X509V3_F_X509_PURPOSE_ADD 137
926a56bf 949#define X509V3_F_X509_PURPOSE_SET 141
9aeaf1b4
DSH
950
951/* Reason codes. */
d08d8da4
DSH
952#define X509V3_R_BAD_IP_ADDRESS 118
953#define X509V3_R_BAD_OBJECT 119
9aeaf1b4
DSH
954#define X509V3_R_BN_DEC2BN_ERROR 100
955#define X509V3_R_BN_TO_ASN1_INTEGER_ERROR 101
f0dc08e6 956#define X509V3_R_DIRNAME_ERROR 149
0745d089 957#define X509V3_R_DISTPOINT_ALREADY_SET 160
28a98809
DSH
958#define X509V3_R_DUPLICATE_ZONE_ID 133
959#define X509V3_R_ERROR_CONVERTING_ZONE 131
57d2f217 960#define X509V3_R_ERROR_CREATING_EXTENSION 144
aa066b9e 961#define X509V3_R_ERROR_IN_EXTENSION 128
3edd7ed1 962#define X509V3_R_EXPECTED_A_SECTION_NAME 137
57d2f217 963#define X509V3_R_EXTENSION_EXISTS 145
5236efdb 964#define X509V3_R_EXTENSION_NAME_ERROR 115
9aeaf1b4
DSH
965#define X509V3_R_EXTENSION_NOT_FOUND 102
966#define X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED 103
5236efdb 967#define X509V3_R_EXTENSION_VALUE_ERROR 116
f80153e2 968#define X509V3_R_ILLEGAL_EMPTY_EXTENSION 151
175b0942 969#define X509V3_R_ILLEGAL_HEX_DIGIT 113
6951c23a 970#define X509V3_R_INCORRECT_POLICY_SYNTAX_TAG 152
8711efb4 971#define X509V3_R_INVALID_MULTIPLE_RDNS 161
96ea4ae9
BL
972#define X509V3_R_INVALID_ASNUMBER 162
973#define X509V3_R_INVALID_ASRANGE 163
9aeaf1b4
DSH
974#define X509V3_R_INVALID_BOOLEAN_STRING 104
975#define X509V3_R_INVALID_EXTENSION_STRING 105
96ea4ae9
BL
976#define X509V3_R_INVALID_INHERITANCE 165
977#define X509V3_R_INVALID_IPADDRESS 166
9aeaf1b4
DSH
978#define X509V3_R_INVALID_NAME 106
979#define X509V3_R_INVALID_NULL_ARGUMENT 107
980#define X509V3_R_INVALID_NULL_NAME 108
981#define X509V3_R_INVALID_NULL_VALUE 109
3edd7ed1
DSH
982#define X509V3_R_INVALID_NUMBER 140
983#define X509V3_R_INVALID_NUMBERS 141
9aeaf1b4 984#define X509V3_R_INVALID_OBJECT_IDENTIFIER 110
3edd7ed1 985#define X509V3_R_INVALID_OPTION 138
41b731f2 986#define X509V3_R_INVALID_POLICY_IDENTIFIER 134
6951c23a 987#define X509V3_R_INVALID_PROXY_POLICY_SETTING 153
926a56bf 988#define X509V3_R_INVALID_PURPOSE 146
96ea4ae9 989#define X509V3_R_INVALID_SAFI 164
41b731f2 990#define X509V3_R_INVALID_SECTION 135
6d3724d3 991#define X509V3_R_INVALID_SYNTAX 143
aa066b9e
DSH
992#define X509V3_R_ISSUER_DECODE_ERROR 126
993#define X509V3_R_MISSING_VALUE 124
3edd7ed1 994#define X509V3_R_NEED_ORGANIZATION_AND_NUMBERS 142
41b731f2 995#define X509V3_R_NO_CONFIG_DATABASE 136
0be9747b 996#define X509V3_R_NO_ISSUER_CERTIFICATE 121
aa066b9e 997#define X509V3_R_NO_ISSUER_DETAILS 127
3edd7ed1 998#define X509V3_R_NO_POLICY_IDENTIFIER 139
6951c23a 999#define X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED 154
175b0942 1000#define X509V3_R_NO_PUBLIC_KEY 114
aa066b9e 1001#define X509V3_R_NO_SUBJECT_DETAILS 125
175b0942 1002#define X509V3_R_ODD_NUMBER_OF_DIGITS 112
f0dc08e6 1003#define X509V3_R_OPERATION_NOT_DEFINED 148
9ea1b878 1004#define X509V3_R_OTHERNAME_ERROR 147
8711efb4 1005#define X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED 155
6951c23a 1006#define X509V3_R_POLICY_PATH_LENGTH 156
8711efb4 1007#define X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED 157
6951c23a 1008#define X509V3_R_POLICY_SYNTAX_NOT_CURRENTLY_SUPPORTED 158
a7201e9a 1009#define X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY 159
f0dc08e6 1010#define X509V3_R_SECTION_NOT_FOUND 150
0be9747b
DSH
1011#define X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS 122
1012#define X509V3_R_UNABLE_TO_GET_ISSUER_KEYID 123
9aeaf1b4 1013#define X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT 111
aa066b9e
DSH
1014#define X509V3_R_UNKNOWN_EXTENSION 129
1015#define X509V3_R_UNKNOWN_EXTENSION_NAME 130
0be9747b 1016#define X509V3_R_UNKNOWN_OPTION 120
d08d8da4 1017#define X509V3_R_UNSUPPORTED_OPTION 117
be86c7fc 1018#define X509V3_R_UNSUPPORTED_TYPE 167
28a98809 1019#define X509V3_R_USER_TOO_LONG 132
6d311938 1020
9aeaf1b4
DSH
1021#ifdef __cplusplus
1022}
1023#endif
1024#endif