summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/x509v3/x509v3.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/x509v3/x509v3.h')
-rw-r--r--src/lib/libcrypto/x509v3/x509v3.h274
1 files changed, 138 insertions, 136 deletions
diff --git a/src/lib/libcrypto/x509v3/x509v3.h b/src/lib/libcrypto/x509v3/x509v3.h
index 0453b12d63..daecc55271 100644
--- a/src/lib/libcrypto/x509v3/x509v3.h
+++ b/src/lib/libcrypto/x509v3/x509v3.h
@@ -88,6 +88,9 @@ typedef void * (*X509V3_EXT_R2I)(struct v3_ext_method *method, struct v3_ext_ctx
88struct v3_ext_method { 88struct v3_ext_method {
89int ext_nid; 89int ext_nid;
90int ext_flags; 90int ext_flags;
91/* If this is set the following four fields are ignored */
92ASN1_ITEM_EXP *it;
93/* Old style ASN1 calls */
91X509V3_EXT_NEW ext_new; 94X509V3_EXT_NEW ext_new;
92X509V3_EXT_FREE ext_free; 95X509V3_EXT_FREE ext_free;
93X509V3_EXT_D2I d2i; 96X509V3_EXT_D2I d2i;
@@ -156,35 +159,56 @@ ASN1_OBJECT *type_id;
156ASN1_TYPE *value; 159ASN1_TYPE *value;
157} OTHERNAME; 160} OTHERNAME;
158 161
162typedef struct EDIPartyName_st {
163 ASN1_STRING *nameAssigner;
164 ASN1_STRING *partyName;
165} EDIPARTYNAME;
166
159typedef struct GENERAL_NAME_st { 167typedef struct GENERAL_NAME_st {
160 168
161#define GEN_OTHERNAME (0|V_ASN1_CONTEXT_SPECIFIC) 169#define GEN_OTHERNAME 0
162#define GEN_EMAIL (1|V_ASN1_CONTEXT_SPECIFIC) 170#define GEN_EMAIL 1
163#define GEN_DNS (2|V_ASN1_CONTEXT_SPECIFIC) 171#define GEN_DNS 2
164#define GEN_X400 (3|V_ASN1_CONTEXT_SPECIFIC) 172#define GEN_X400 3
165#define GEN_DIRNAME (4|V_ASN1_CONTEXT_SPECIFIC) 173#define GEN_DIRNAME 4
166#define GEN_EDIPARTY (5|V_ASN1_CONTEXT_SPECIFIC) 174#define GEN_EDIPARTY 5
167#define GEN_URI (6|V_ASN1_CONTEXT_SPECIFIC) 175#define GEN_URI 6
168#define GEN_IPADD (7|V_ASN1_CONTEXT_SPECIFIC) 176#define GEN_IPADD 7
169#define GEN_RID (8|V_ASN1_CONTEXT_SPECIFIC) 177#define GEN_RID 8
170 178
171int type; 179int type;
172union { 180union {
173 char *ptr; 181 char *ptr;
174 ASN1_IA5STRING *ia5;/* rfc822Name, dNSName, uniformResourceIdentifier */ 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 */
175 ASN1_OCTET_STRING *ip; /* iPAddress */ 193 ASN1_OCTET_STRING *ip; /* iPAddress */
176 X509_NAME *dirn; /* dirn */ 194 X509_NAME *dirn; /* dirn */
195 ASN1_IA5STRING *ia5;/* rfc822Name, dNSName, uniformResourceIdentifier */
177 ASN1_OBJECT *rid; /* registeredID */ 196 ASN1_OBJECT *rid; /* registeredID */
178 OTHERNAME *otherName; /* otherName */ 197 ASN1_TYPE *other; /* x400Address */
179 ASN1_TYPE *other; /* ediPartyName, x400Address */
180} d; 198} d;
181} GENERAL_NAME; 199} GENERAL_NAME;
182 200
201typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES;
202
183typedef struct ACCESS_DESCRIPTION_st { 203typedef struct ACCESS_DESCRIPTION_st {
184 ASN1_OBJECT *method; 204 ASN1_OBJECT *method;
185 GENERAL_NAME *location; 205 GENERAL_NAME *location;
186} ACCESS_DESCRIPTION; 206} ACCESS_DESCRIPTION;
187 207
208typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS;
209
210typedef STACK_OF(ASN1_OBJECT) EXTENDED_KEY_USAGE;
211
188DECLARE_STACK_OF(GENERAL_NAME) 212DECLARE_STACK_OF(GENERAL_NAME)
189DECLARE_ASN1_SET_OF(GENERAL_NAME) 213DECLARE_ASN1_SET_OF(GENERAL_NAME)
190 214
@@ -192,23 +216,27 @@ DECLARE_STACK_OF(ACCESS_DESCRIPTION)
192DECLARE_ASN1_SET_OF(ACCESS_DESCRIPTION) 216DECLARE_ASN1_SET_OF(ACCESS_DESCRIPTION)
193 217
194typedef struct DIST_POINT_NAME_st { 218typedef struct DIST_POINT_NAME_st {
195/* NB: this is a CHOICE type and only one of these should be set */ 219int type;
196STACK_OF(GENERAL_NAME) *fullname; 220union {
197STACK_OF(X509_NAME_ENTRY) *relativename; 221 GENERAL_NAMES *fullname;
222 STACK_OF(X509_NAME_ENTRY) *relativename;
223} name;
198} DIST_POINT_NAME; 224} DIST_POINT_NAME;
199 225
200typedef struct DIST_POINT_st { 226typedef struct DIST_POINT_st {
201DIST_POINT_NAME *distpoint; 227DIST_POINT_NAME *distpoint;
202ASN1_BIT_STRING *reasons; 228ASN1_BIT_STRING *reasons;
203STACK_OF(GENERAL_NAME) *CRLissuer; 229GENERAL_NAMES *CRLissuer;
204} DIST_POINT; 230} DIST_POINT;
205 231
232typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS;
233
206DECLARE_STACK_OF(DIST_POINT) 234DECLARE_STACK_OF(DIST_POINT)
207DECLARE_ASN1_SET_OF(DIST_POINT) 235DECLARE_ASN1_SET_OF(DIST_POINT)
208 236
209typedef struct AUTHORITY_KEYID_st { 237typedef struct AUTHORITY_KEYID_st {
210ASN1_OCTET_STRING *keyid; 238ASN1_OCTET_STRING *keyid;
211STACK_OF(GENERAL_NAME) *issuer; 239GENERAL_NAMES *issuer;
212ASN1_INTEGER *serial; 240ASN1_INTEGER *serial;
213} AUTHORITY_KEYID; 241} AUTHORITY_KEYID;
214 242
@@ -254,6 +282,8 @@ typedef struct POLICYINFO_st {
254 STACK_OF(POLICYQUALINFO) *qualifiers; 282 STACK_OF(POLICYQUALINFO) *qualifiers;
255} POLICYINFO; 283} POLICYINFO;
256 284
285typedef STACK_OF(POLICYINFO) CERTIFICATEPOLICIES;
286
257DECLARE_STACK_OF(POLICYINFO) 287DECLARE_STACK_OF(POLICYINFO)
258DECLARE_ASN1_SET_OF(POLICYINFO) 288DECLARE_ASN1_SET_OF(POLICYINFO)
259 289
@@ -262,32 +292,24 @@ DECLARE_ASN1_SET_OF(POLICYINFO)
262 292
263#define X509V3_set_ctx_test(ctx) \ 293#define X509V3_set_ctx_test(ctx) \
264 X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, CTX_TEST) 294 X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, CTX_TEST)
265#define X509V3_set_ctx_nodb(ctx) ctx->db = NULL; 295#define X509V3_set_ctx_nodb(ctx) (ctx)->db = NULL;
266 296
267#define EXT_BITSTRING(nid, table) { nid, 0, \ 297#define EXT_BITSTRING(nid, table) { nid, 0, ASN1_ITEM_ref(ASN1_BIT_STRING), \
268 (X509V3_EXT_NEW)ASN1_BIT_STRING_new, \ 298 0,0,0,0, \
269 (X509V3_EXT_FREE)ASN1_BIT_STRING_free, \ 299 0,0, \
270 (X509V3_EXT_D2I)d2i_ASN1_BIT_STRING, \
271 (X509V3_EXT_I2D)i2d_ASN1_BIT_STRING, \
272 NULL, NULL, \
273 (X509V3_EXT_I2V)i2v_ASN1_BIT_STRING, \ 300 (X509V3_EXT_I2V)i2v_ASN1_BIT_STRING, \
274 (X509V3_EXT_V2I)v2i_ASN1_BIT_STRING, \ 301 (X509V3_EXT_V2I)v2i_ASN1_BIT_STRING, \
275 NULL, NULL, \ 302 NULL, NULL, \
276 (char *)table} 303 table}
277 304
278#define EXT_IA5STRING(nid) { nid, 0, \ 305#define EXT_IA5STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_IA5STRING), \
279 (X509V3_EXT_NEW)ASN1_IA5STRING_new, \ 306 0,0,0,0, \
280 (X509V3_EXT_FREE)ASN1_IA5STRING_free, \
281 (X509V3_EXT_D2I)d2i_ASN1_IA5STRING, \
282 (X509V3_EXT_I2D)i2d_ASN1_IA5STRING, \
283 (X509V3_EXT_I2S)i2s_ASN1_IA5STRING, \ 307 (X509V3_EXT_I2S)i2s_ASN1_IA5STRING, \
284 (X509V3_EXT_S2I)s2i_ASN1_IA5STRING, \ 308 (X509V3_EXT_S2I)s2i_ASN1_IA5STRING, \
285 NULL, NULL, NULL, NULL, \ 309 0,0,0,0, \
286 NULL} 310 NULL}
287 311
288#define EXT_END { -1, 0, NULL, NULL, NULL, NULL, NULL, NULL, \ 312#define EXT_END { -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
289 NULL, NULL, NULL, NULL, \
290 NULL}
291 313
292 314
293/* X509_PURPOSE stuff */ 315/* X509_PURPOSE stuff */
@@ -302,6 +324,7 @@ DECLARE_ASN1_SET_OF(POLICYINFO)
302#define EXFLAG_V1 0x40 324#define EXFLAG_V1 0x40
303#define EXFLAG_INVALID 0x80 325#define EXFLAG_INVALID 0x80
304#define EXFLAG_SET 0x100 326#define EXFLAG_SET 0x100
327#define EXFLAG_CRITICAL 0x200
305 328
306#define KU_DIGITAL_SIGNATURE 0x0080 329#define KU_DIGITAL_SIGNATURE 0x0080
307#define KU_NON_REPUDIATION 0x0040 330#define KU_NON_REPUDIATION 0x0040
@@ -320,12 +343,15 @@ DECLARE_ASN1_SET_OF(POLICYINFO)
320#define NS_SSL_CA 0x04 343#define NS_SSL_CA 0x04
321#define NS_SMIME_CA 0x02 344#define NS_SMIME_CA 0x02
322#define NS_OBJSIGN_CA 0x01 345#define NS_OBJSIGN_CA 0x01
346#define NS_ANY_CA (NS_SSL_CA|NS_SMIME_CA|NS_OBJSIGN_CA)
323 347
324#define XKU_SSL_SERVER 0x1 348#define XKU_SSL_SERVER 0x1
325#define XKU_SSL_CLIENT 0x2 349#define XKU_SSL_CLIENT 0x2
326#define XKU_SMIME 0x4 350#define XKU_SMIME 0x4
327#define XKU_CODE_SIGN 0x8 351#define XKU_CODE_SIGN 0x8
328#define XKU_SGC 0x10 352#define XKU_SGC 0x10
353#define XKU_OCSP_SIGN 0x20
354#define XKU_TIMESTAMP 0x40
329 355
330#define X509_PURPOSE_DYNAMIC 0x1 356#define X509_PURPOSE_DYNAMIC 0x1
331#define X509_PURPOSE_DYNAMIC_NAME 0x2 357#define X509_PURPOSE_DYNAMIC_NAME 0x2
@@ -348,33 +374,40 @@ typedef struct x509_purpose_st {
348#define X509_PURPOSE_SMIME_ENCRYPT 5 374#define X509_PURPOSE_SMIME_ENCRYPT 5
349#define X509_PURPOSE_CRL_SIGN 6 375#define X509_PURPOSE_CRL_SIGN 6
350#define X509_PURPOSE_ANY 7 376#define X509_PURPOSE_ANY 7
377#define X509_PURPOSE_OCSP_HELPER 8
351 378
352#define X509_PURPOSE_MIN 1 379#define X509_PURPOSE_MIN 1
353#define X509_PURPOSE_MAX 7 380#define X509_PURPOSE_MAX 8
381
382/* Flags for X509V3_EXT_print() */
383
384#define X509V3_EXT_UNKNOWN_MASK (0xfL << 16)
385/* Return error for unknown extensions */
386#define X509V3_EXT_DEFAULT 0
387/* Print error for unknown extensions */
388#define X509V3_EXT_ERROR_UNKNOWN (1L << 16)
389/* ASN1 parse unknown extensions */
390#define X509V3_EXT_PARSE_UNKNOWN (2L << 16)
391/* BIO_dump unknown extensions */
392#define X509V3_EXT_DUMP_UNKNOWN (3L << 16)
393
394/* Flags for X509V3_add1_i2d */
395
396#define X509V3_ADD_OP_MASK 0xfL
397#define X509V3_ADD_DEFAULT 0L
398#define X509V3_ADD_APPEND 1L
399#define X509V3_ADD_REPLACE 2L
400#define X509V3_ADD_REPLACE_EXISTING 3L
401#define X509V3_ADD_KEEP_EXISTING 4L
402#define X509V3_ADD_DELETE 5L
403#define X509V3_ADD_SILENT 0x10
354 404
355DECLARE_STACK_OF(X509_PURPOSE) 405DECLARE_STACK_OF(X509_PURPOSE)
356 406
357void ERR_load_X509V3_strings(void); 407DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS)
358int i2d_BASIC_CONSTRAINTS(BASIC_CONSTRAINTS *a, unsigned char **pp);
359BASIC_CONSTRAINTS *d2i_BASIC_CONSTRAINTS(BASIC_CONSTRAINTS **a, unsigned char **pp, long length);
360BASIC_CONSTRAINTS *BASIC_CONSTRAINTS_new(void);
361void BASIC_CONSTRAINTS_free(BASIC_CONSTRAINTS *a);
362
363int i2d_GENERAL_NAME(GENERAL_NAME *a, unsigned char **pp);
364GENERAL_NAME *d2i_GENERAL_NAME(GENERAL_NAME **a, unsigned char **pp, long length);
365GENERAL_NAME *GENERAL_NAME_new(void);
366void GENERAL_NAME_free(GENERAL_NAME *a);
367STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, GENERAL_NAME *gen, STACK_OF(CONF_VALUE) *ret);
368
369int i2d_SXNET(SXNET *a, unsigned char **pp);
370SXNET *d2i_SXNET(SXNET **a, unsigned char **pp, long length);
371SXNET *SXNET_new(void);
372void SXNET_free(SXNET *a);
373 408
374int i2d_SXNETID(SXNETID *a, unsigned char **pp); 409DECLARE_ASN1_FUNCTIONS(SXNET)
375SXNETID *d2i_SXNETID(SXNETID **a, unsigned char **pp, long length); 410DECLARE_ASN1_FUNCTIONS(SXNETID)
376SXNETID *SXNETID_new(void);
377void SXNETID_free(SXNETID *a);
378 411
379int SXNET_add_id_asc(SXNET **psx, char *zone, char *user, int userlen); 412int SXNET_add_id_asc(SXNET **psx, char *zone, char *user, int userlen);
380int SXNET_add_id_ulong(SXNET **psx, unsigned long lzone, char *user, int userlen); 413int SXNET_add_id_ulong(SXNET **psx, unsigned long lzone, char *user, int userlen);
@@ -384,108 +417,66 @@ ASN1_OCTET_STRING *SXNET_get_id_asc(SXNET *sx, char *zone);
384ASN1_OCTET_STRING *SXNET_get_id_ulong(SXNET *sx, unsigned long lzone); 417ASN1_OCTET_STRING *SXNET_get_id_ulong(SXNET *sx, unsigned long lzone);
385ASN1_OCTET_STRING *SXNET_get_id_INTEGER(SXNET *sx, ASN1_INTEGER *zone); 418ASN1_OCTET_STRING *SXNET_get_id_INTEGER(SXNET *sx, ASN1_INTEGER *zone);
386 419
387int i2d_AUTHORITY_KEYID(AUTHORITY_KEYID *a, unsigned char **pp); 420DECLARE_ASN1_FUNCTIONS(AUTHORITY_KEYID)
388AUTHORITY_KEYID *d2i_AUTHORITY_KEYID(AUTHORITY_KEYID **a, unsigned char **pp, long length);
389AUTHORITY_KEYID *AUTHORITY_KEYID_new(void);
390void AUTHORITY_KEYID_free(AUTHORITY_KEYID *a);
391 421
392int i2d_PKEY_USAGE_PERIOD(PKEY_USAGE_PERIOD *a, unsigned char **pp); 422DECLARE_ASN1_FUNCTIONS(PKEY_USAGE_PERIOD)
393PKEY_USAGE_PERIOD *d2i_PKEY_USAGE_PERIOD(PKEY_USAGE_PERIOD **a, unsigned char **pp, long length); 423
394PKEY_USAGE_PERIOD *PKEY_USAGE_PERIOD_new(void); 424DECLARE_ASN1_FUNCTIONS(GENERAL_NAME)
395void PKEY_USAGE_PERIOD_free(PKEY_USAGE_PERIOD *a); 425
426STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, GENERAL_NAME *gen, STACK_OF(CONF_VALUE) *ret);
427int GENERAL_NAME_print(BIO *out, GENERAL_NAME *gen);
428
429DECLARE_ASN1_FUNCTIONS(GENERAL_NAMES)
396 430
397STACK_OF(GENERAL_NAME) *GENERAL_NAMES_new(void);
398void GENERAL_NAMES_free(STACK_OF(GENERAL_NAME) *a);
399STACK_OF(GENERAL_NAME) *d2i_GENERAL_NAMES(STACK_OF(GENERAL_NAME) **a, unsigned char **pp, long length);
400int i2d_GENERAL_NAMES(STACK_OF(GENERAL_NAME) *a, unsigned char **pp);
401STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method, 431STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method,
402 STACK_OF(GENERAL_NAME) *gen, STACK_OF(CONF_VALUE) *extlist); 432 GENERAL_NAMES *gen, STACK_OF(CONF_VALUE) *extlist);
403STACK_OF(GENERAL_NAME) *v2i_GENERAL_NAMES(X509V3_EXT_METHOD *method, 433GENERAL_NAMES *v2i_GENERAL_NAMES(X509V3_EXT_METHOD *method,
404 X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); 434 X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval);
405 435
406int i2d_OTHERNAME(OTHERNAME *a, unsigned char **pp); 436DECLARE_ASN1_FUNCTIONS(OTHERNAME)
407OTHERNAME *OTHERNAME_new(void); 437DECLARE_ASN1_FUNCTIONS(EDIPARTYNAME)
408OTHERNAME *d2i_OTHERNAME(OTHERNAME **a, unsigned char **pp, long length);
409void OTHERNAME_free(OTHERNAME *a);
410 438
411char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, ASN1_OCTET_STRING *ia5); 439char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, ASN1_OCTET_STRING *ia5);
412ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, char *str); 440ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, char *str);
413 441
414int i2d_ext_ku(STACK_OF(ASN1_OBJECT) *a, unsigned char **pp); 442DECLARE_ASN1_FUNCTIONS(EXTENDED_KEY_USAGE)
415STACK_OF(ASN1_OBJECT) *d2i_ext_ku(STACK_OF(ASN1_OBJECT) **a, 443int i2a_ACCESS_DESCRIPTION(BIO *bp, ACCESS_DESCRIPTION* a);
416 unsigned char **pp, long length); 444
417void ext_ku_free(STACK_OF(ASN1_OBJECT) *a); 445DECLARE_ASN1_FUNCTIONS(CERTIFICATEPOLICIES)
418STACK_OF(ASN1_OBJECT) *ext_ku_new(void); 446DECLARE_ASN1_FUNCTIONS(POLICYINFO)
419 447DECLARE_ASN1_FUNCTIONS(POLICYQUALINFO)
420int i2d_CERTIFICATEPOLICIES(STACK_OF(POLICYINFO) *a, unsigned char **pp); 448DECLARE_ASN1_FUNCTIONS(USERNOTICE)
421STACK_OF(POLICYINFO) *CERTIFICATEPOLICIES_new(void); 449DECLARE_ASN1_FUNCTIONS(NOTICEREF)
422void CERTIFICATEPOLICIES_free(STACK_OF(POLICYINFO) *a);
423STACK_OF(POLICYINFO) *d2i_CERTIFICATEPOLICIES(STACK_OF(POLICYINFO) **a, unsigned char **pp, long length);
424
425int i2d_POLICYINFO(POLICYINFO *a, unsigned char **pp);
426POLICYINFO *POLICYINFO_new(void);
427POLICYINFO *d2i_POLICYINFO(POLICYINFO **a, unsigned char **pp, long length);
428void POLICYINFO_free(POLICYINFO *a);
429
430int i2d_POLICYQUALINFO(POLICYQUALINFO *a, unsigned char **pp);
431POLICYQUALINFO *POLICYQUALINFO_new(void);
432POLICYQUALINFO *d2i_POLICYQUALINFO(POLICYQUALINFO **a, unsigned char **pp,
433 long length);
434void POLICYQUALINFO_free(POLICYQUALINFO *a);
435
436int i2d_USERNOTICE(USERNOTICE *a, unsigned char **pp);
437USERNOTICE *USERNOTICE_new(void);
438USERNOTICE *d2i_USERNOTICE(USERNOTICE **a, unsigned char **pp, long length);
439void USERNOTICE_free(USERNOTICE *a);
440
441int i2d_NOTICEREF(NOTICEREF *a, unsigned char **pp);
442NOTICEREF *NOTICEREF_new(void);
443NOTICEREF *d2i_NOTICEREF(NOTICEREF **a, unsigned char **pp, long length);
444void NOTICEREF_free(NOTICEREF *a);
445
446int i2d_CRL_DIST_POINTS(STACK_OF(DIST_POINT) *a, unsigned char **pp);
447STACK_OF(DIST_POINT) *CRL_DIST_POINTS_new(void);
448void CRL_DIST_POINTS_free(STACK_OF(DIST_POINT) *a);
449STACK_OF(DIST_POINT) *d2i_CRL_DIST_POINTS(STACK_OF(DIST_POINT) **a,
450 unsigned char **pp,long length);
451
452int i2d_DIST_POINT(DIST_POINT *a, unsigned char **pp);
453DIST_POINT *DIST_POINT_new(void);
454DIST_POINT *d2i_DIST_POINT(DIST_POINT **a, unsigned char **pp, long length);
455void DIST_POINT_free(DIST_POINT *a);
456
457int i2d_DIST_POINT_NAME(DIST_POINT_NAME *a, unsigned char **pp);
458DIST_POINT_NAME *DIST_POINT_NAME_new(void);
459void DIST_POINT_NAME_free(DIST_POINT_NAME *a);
460DIST_POINT_NAME *d2i_DIST_POINT_NAME(DIST_POINT_NAME **a, unsigned char **pp,
461 long length);
462
463int i2d_ACCESS_DESCRIPTION(ACCESS_DESCRIPTION *a, unsigned char **pp);
464ACCESS_DESCRIPTION *ACCESS_DESCRIPTION_new(void);
465void ACCESS_DESCRIPTION_free(ACCESS_DESCRIPTION *a);
466ACCESS_DESCRIPTION *d2i_ACCESS_DESCRIPTION(ACCESS_DESCRIPTION **a, unsigned char **pp,
467 long length);
468
469STACK_OF(ACCESS_DESCRIPTION) *AUTHORITY_INFO_ACCESS_new(void);
470void AUTHORITY_INFO_ACCESS_free(STACK_OF(ACCESS_DESCRIPTION) *a);
471STACK_OF(ACCESS_DESCRIPTION) *d2i_AUTHORITY_INFO_ACCESS(STACK_OF(ACCESS_DESCRIPTION) **a,
472 unsigned char **pp, long length);
473int i2d_AUTHORITY_INFO_ACCESS(STACK_OF(ACCESS_DESCRIPTION) *a, unsigned char **pp);
474 450
451DECLARE_ASN1_FUNCTIONS(CRL_DIST_POINTS)
452DECLARE_ASN1_FUNCTIONS(DIST_POINT)
453DECLARE_ASN1_FUNCTIONS(DIST_POINT_NAME)
475 454
455DECLARE_ASN1_FUNCTIONS(ACCESS_DESCRIPTION)
456DECLARE_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS)
476 457
477#ifdef HEADER_CONF_H 458#ifdef HEADER_CONF_H
478GENERAL_NAME *v2i_GENERAL_NAME(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, CONF_VALUE *cnf); 459GENERAL_NAME *v2i_GENERAL_NAME(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, CONF_VALUE *cnf);
479void X509V3_conf_free(CONF_VALUE *val); 460void X509V3_conf_free(CONF_VALUE *val);
461
462X509_EXTENSION *X509V3_EXT_nconf_nid(CONF *conf, X509V3_CTX *ctx, int ext_nid, char *value);
463X509_EXTENSION *X509V3_EXT_nconf(CONF *conf, X509V3_CTX *ctx, char *name, char *value);
464int X509V3_EXT_add_nconf_sk(CONF *conf, X509V3_CTX *ctx, char *section, STACK_OF(X509_EXTENSION) **sk);
465int X509V3_EXT_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, X509 *cert);
466int X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, X509_REQ *req);
467int X509V3_EXT_CRL_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, X509_CRL *crl);
468
480X509_EXTENSION *X509V3_EXT_conf_nid(LHASH *conf, X509V3_CTX *ctx, int ext_nid, char *value); 469X509_EXTENSION *X509V3_EXT_conf_nid(LHASH *conf, X509V3_CTX *ctx, int ext_nid, char *value);
481X509_EXTENSION *X509V3_EXT_conf(LHASH *conf, X509V3_CTX *ctx, char *name, char *value); 470X509_EXTENSION *X509V3_EXT_conf(LHASH *conf, X509V3_CTX *ctx, char *name, char *value);
482int X509V3_EXT_add_conf(LHASH *conf, X509V3_CTX *ctx, char *section, X509 *cert); 471int X509V3_EXT_add_conf(LHASH *conf, X509V3_CTX *ctx, char *section, X509 *cert);
483int X509V3_EXT_REQ_add_conf(LHASH *conf, X509V3_CTX *ctx, char *section, X509_REQ *req); 472int X509V3_EXT_REQ_add_conf(LHASH *conf, X509V3_CTX *ctx, char *section, X509_REQ *req);
484int X509V3_EXT_CRL_add_conf(LHASH *conf, X509V3_CTX *ctx, char *section, X509_CRL *crl); 473int X509V3_EXT_CRL_add_conf(LHASH *conf, X509V3_CTX *ctx, char *section, X509_CRL *crl);
474
485int X509V3_add_value_bool_nf(char *name, int asn1_bool, 475int X509V3_add_value_bool_nf(char *name, int asn1_bool,
486 STACK_OF(CONF_VALUE) **extlist); 476 STACK_OF(CONF_VALUE) **extlist);
487int X509V3_get_value_bool(CONF_VALUE *value, int *asn1_bool); 477int X509V3_get_value_bool(CONF_VALUE *value, int *asn1_bool);
488int X509V3_get_value_int(CONF_VALUE *value, ASN1_INTEGER **aint); 478int X509V3_get_value_int(CONF_VALUE *value, ASN1_INTEGER **aint);
479void X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf);
489void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH *lhash); 480void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH *lhash);
490#endif 481#endif
491 482
@@ -516,11 +507,13 @@ void X509V3_EXT_cleanup(void);
516X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext); 507X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext);
517X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid); 508X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid);
518int X509V3_add_standard_extensions(void); 509int X509V3_add_standard_extensions(void);
519STACK_OF(CONF_VALUE) *X509V3_parse_list(char *line); 510STACK_OF(CONF_VALUE) *X509V3_parse_list(const char *line);
520void *X509V3_EXT_d2i(X509_EXTENSION *ext); 511void *X509V3_EXT_d2i(X509_EXTENSION *ext);
521void *X509V3_get_d2i(STACK_OF(X509_EXTENSION) *x, int nid, int *crit, int *idx); 512void *X509V3_get_d2i(STACK_OF(X509_EXTENSION) *x, int nid, int *crit, int *idx);
522 513
514
523X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc); 515X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc);
516int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, int crit, unsigned long flags);
524 517
525char *hex_to_string(unsigned char *buffer, long len); 518char *hex_to_string(unsigned char *buffer, long len);
526unsigned char *string_to_hex(char *str, long *len); 519unsigned char *string_to_hex(char *str, long *len);
@@ -528,10 +521,14 @@ int name_cmp(const char *name, const char *cmp);
528 521
529void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent, 522void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent,
530 int ml); 523 int ml);
531int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, int flag, int indent); 524int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag, int indent);
532int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag, int indent); 525int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag, int indent);
533 526
527int X509V3_extensions_print(BIO *out, char *title, STACK_OF(X509_EXTENSION) *exts, unsigned long flag, int indent);
528
534int X509_check_purpose(X509 *x, int id, int ca); 529int X509_check_purpose(X509 *x, int id, int ca);
530int X509_supported_extension(X509_EXTENSION *ex);
531int X509_PURPOSE_set(int *p, int purpose);
535int X509_check_issued(X509 *issuer, X509 *subject); 532int X509_check_issued(X509 *issuer, X509 *subject);
536int X509_PURPOSE_get_count(void); 533int X509_PURPOSE_get_count(void);
537X509_PURPOSE * X509_PURPOSE_get0(int idx); 534X509_PURPOSE * X509_PURPOSE_get0(int idx);
@@ -555,6 +552,7 @@ void X509_email_free(STACK *sk);
555/* The following lines are auto generated by the script mkerr.pl. Any changes 552/* The following lines are auto generated by the script mkerr.pl. Any changes
556 * made after this point may be overwritten when the script is next run. 553 * made after this point may be overwritten when the script is next run.
557 */ 554 */
555void ERR_load_X509V3_strings(void);
558 556
559/* Error codes for the X509V3 functions. */ 557/* Error codes for the X509V3 functions. */
560 558
@@ -591,6 +589,7 @@ void X509_email_free(STACK *sk);
591#define X509V3_F_V2I_GENERAL_NAME 117 589#define X509V3_F_V2I_GENERAL_NAME 117
592#define X509V3_F_V2I_GENERAL_NAMES 118 590#define X509V3_F_V2I_GENERAL_NAMES 118
593#define X509V3_F_V3_GENERIC_EXTENSION 116 591#define X509V3_F_V3_GENERIC_EXTENSION 116
592#define X509V3_F_X509V3_ADD_I2D 140
594#define X509V3_F_X509V3_ADD_VALUE 105 593#define X509V3_F_X509V3_ADD_VALUE 105
595#define X509V3_F_X509V3_EXT_ADD 104 594#define X509V3_F_X509V3_EXT_ADD 104
596#define X509V3_F_X509V3_EXT_ADD_ALIAS 106 595#define X509V3_F_X509V3_EXT_ADD_ALIAS 106
@@ -599,6 +598,7 @@ void X509_email_free(STACK *sk);
599#define X509V3_F_X509V3_GET_VALUE_BOOL 110 598#define X509V3_F_X509V3_GET_VALUE_BOOL 110
600#define X509V3_F_X509V3_PARSE_LIST 109 599#define X509V3_F_X509V3_PARSE_LIST 109
601#define X509V3_F_X509_PURPOSE_ADD 137 600#define X509V3_F_X509_PURPOSE_ADD 137
601#define X509V3_F_X509_PURPOSE_SET 141
602 602
603/* Reason codes. */ 603/* Reason codes. */
604#define X509V3_R_BAD_IP_ADDRESS 118 604#define X509V3_R_BAD_IP_ADDRESS 118
@@ -607,8 +607,10 @@ void X509_email_free(STACK *sk);
607#define X509V3_R_BN_TO_ASN1_INTEGER_ERROR 101 607#define X509V3_R_BN_TO_ASN1_INTEGER_ERROR 101
608#define X509V3_R_DUPLICATE_ZONE_ID 133 608#define X509V3_R_DUPLICATE_ZONE_ID 133
609#define X509V3_R_ERROR_CONVERTING_ZONE 131 609#define X509V3_R_ERROR_CONVERTING_ZONE 131
610#define X509V3_R_ERROR_CREATING_EXTENSION 144
610#define X509V3_R_ERROR_IN_EXTENSION 128 611#define X509V3_R_ERROR_IN_EXTENSION 128
611#define X509V3_R_EXPECTED_A_SECTION_NAME 137 612#define X509V3_R_EXPECTED_A_SECTION_NAME 137
613#define X509V3_R_EXTENSION_EXISTS 145
612#define X509V3_R_EXTENSION_NAME_ERROR 115 614#define X509V3_R_EXTENSION_NAME_ERROR 115
613#define X509V3_R_EXTENSION_NOT_FOUND 102 615#define X509V3_R_EXTENSION_NOT_FOUND 102
614#define X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED 103 616#define X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED 103
@@ -625,6 +627,7 @@ void X509_email_free(STACK *sk);
625#define X509V3_R_INVALID_OBJECT_IDENTIFIER 110 627#define X509V3_R_INVALID_OBJECT_IDENTIFIER 110
626#define X509V3_R_INVALID_OPTION 138 628#define X509V3_R_INVALID_OPTION 138
627#define X509V3_R_INVALID_POLICY_IDENTIFIER 134 629#define X509V3_R_INVALID_POLICY_IDENTIFIER 134
630#define X509V3_R_INVALID_PURPOSE 146
628#define X509V3_R_INVALID_SECTION 135 631#define X509V3_R_INVALID_SECTION 135
629#define X509V3_R_INVALID_SYNTAX 143 632#define X509V3_R_INVALID_SYNTAX 143
630#define X509V3_R_ISSUER_DECODE_ERROR 126 633#define X509V3_R_ISSUER_DECODE_ERROR 126
@@ -650,4 +653,3 @@ void X509_email_free(STACK *sk);
650} 653}
651#endif 654#endif
652#endif 655#endif
653