1.1 --- a/epoc32/include/stdapis/openssl/x509v3.h Tue Nov 24 13:55:44 2009 +0000
1.2 +++ b/epoc32/include/stdapis/openssl/x509v3.h Tue Mar 16 16:12:26 2010 +0000
1.3 @@ -1,1 +1,782 @@
1.4 -x509v3.h
1.5 +/* x509v3.h */
1.6 +/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
1.7 + * project 1999.
1.8 + */
1.9 +/* ====================================================================
1.10 + * Copyright (c) 1999-2004 The OpenSSL Project. All rights reserved.
1.11 + *
1.12 + * Redistribution and use in source and binary forms, with or without
1.13 + * modification, are permitted provided that the following conditions
1.14 + * are met:
1.15 + *
1.16 + * 1. Redistributions of source code must retain the above copyright
1.17 + * notice, this list of conditions and the following disclaimer.
1.18 + *
1.19 + * 2. Redistributions in binary form must reproduce the above copyright
1.20 + * notice, this list of conditions and the following disclaimer in
1.21 + * the documentation and/or other materials provided with the
1.22 + * distribution.
1.23 + *
1.24 + * 3. All advertising materials mentioning features or use of this
1.25 + * software must display the following acknowledgment:
1.26 + * "This product includes software developed by the OpenSSL Project
1.27 + * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
1.28 + *
1.29 + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
1.30 + * endorse or promote products derived from this software without
1.31 + * prior written permission. For written permission, please contact
1.32 + * licensing@OpenSSL.org.
1.33 + *
1.34 + * 5. Products derived from this software may not be called "OpenSSL"
1.35 + * nor may "OpenSSL" appear in their names without prior written
1.36 + * permission of the OpenSSL Project.
1.37 + *
1.38 + * 6. Redistributions of any form whatsoever must retain the following
1.39 + * acknowledgment:
1.40 + * "This product includes software developed by the OpenSSL Project
1.41 + * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
1.42 + *
1.43 + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
1.44 + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1.45 + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
1.46 + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
1.47 + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
1.48 + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
1.49 + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
1.50 + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1.51 + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
1.52 + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
1.53 + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
1.54 + * OF THE POSSIBILITY OF SUCH DAMAGE.
1.55 + * ====================================================================
1.56 + *
1.57 + * This product includes cryptographic software written by Eric Young
1.58 + * (eay@cryptsoft.com). This product includes software written by Tim
1.59 + * Hudson (tjh@cryptsoft.com).
1.60 + *
1.61 + */
1.62 + /*
1.63 + © Portions copyright (c) 2006 Nokia Corporation. All rights reserved.
1.64 + */
1.65 +
1.66 +#ifndef HEADER_X509V3_H
1.67 +#define HEADER_X509V3_H
1.68 +
1.69 +#if (defined(__SYMBIAN32__) && !defined(SYMBIAN))
1.70 +#define SYMBIAN
1.71 +#endif
1.72 +
1.73 +#ifdef SYMBIAN
1.74 +#include <e32def.h>
1.75 +#endif
1.76 +#include <openssl/bio.h>
1.77 +#include <openssl/x509.h>
1.78 +#include <openssl/conf.h>
1.79 +
1.80 +#ifdef __cplusplus
1.81 +extern "C" {
1.82 +#endif
1.83 +
1.84 +/* Forward reference */
1.85 +struct v3_ext_method;
1.86 +struct v3_ext_ctx;
1.87 +
1.88 +/* Useful typedefs */
1.89 +
1.90 +typedef void * (*X509V3_EXT_NEW)(void);
1.91 +typedef void (*X509V3_EXT_FREE)(void *);
1.92 +typedef void * (*X509V3_EXT_D2I)(void *, const unsigned char ** , long);
1.93 +typedef int (*X509V3_EXT_I2D)(void *, unsigned char **);
1.94 +typedef STACK_OF(CONF_VALUE) * (*X509V3_EXT_I2V)(struct v3_ext_method *method, void *ext, STACK_OF(CONF_VALUE) *extlist);
1.95 +typedef void * (*X509V3_EXT_V2I)(struct v3_ext_method *method, struct v3_ext_ctx *ctx, STACK_OF(CONF_VALUE) *values);
1.96 +typedef char * (*X509V3_EXT_I2S)(struct v3_ext_method *method, void *ext);
1.97 +typedef void * (*X509V3_EXT_S2I)(struct v3_ext_method *method, struct v3_ext_ctx *ctx, const char *str);
1.98 +typedef int (*X509V3_EXT_I2R)(struct v3_ext_method *method, void *ext, BIO *out, int indent);
1.99 +typedef void * (*X509V3_EXT_R2I)(struct v3_ext_method *method, struct v3_ext_ctx *ctx, const char *str);
1.100 +
1.101 +/* V3 extension structure */
1.102 +
1.103 +struct v3_ext_method {
1.104 +int ext_nid;
1.105 +int ext_flags;
1.106 +/* If this is set the following four fields are ignored */
1.107 +ASN1_ITEM_EXP *it;
1.108 +/* Old style ASN1 calls */
1.109 +X509V3_EXT_NEW ext_new;
1.110 +X509V3_EXT_FREE ext_free;
1.111 +X509V3_EXT_D2I d2i;
1.112 +X509V3_EXT_I2D i2d;
1.113 +
1.114 +/* The following pair is used for string extensions */
1.115 +X509V3_EXT_I2S i2s;
1.116 +X509V3_EXT_S2I s2i;
1.117 +
1.118 +/* The following pair is used for multi-valued extensions */
1.119 +X509V3_EXT_I2V i2v;
1.120 +X509V3_EXT_V2I v2i;
1.121 +
1.122 +/* The following are used for raw extensions */
1.123 +X509V3_EXT_I2R i2r;
1.124 +X509V3_EXT_R2I r2i;
1.125 +
1.126 +void *usr_data; /* Any extension specific data */
1.127 +};
1.128 +
1.129 +typedef struct X509V3_CONF_METHOD_st {
1.130 +char * (*get_string)(void *db, char *section, char *value);
1.131 +STACK_OF(CONF_VALUE) * (*get_section)(void *db, char *section);
1.132 +void (*free_string)(void *db, char * string);
1.133 +void (*free_section)(void *db, STACK_OF(CONF_VALUE) *section);
1.134 +} X509V3_CONF_METHOD;
1.135 +
1.136 +/* Context specific info */
1.137 +struct v3_ext_ctx {
1.138 +#define CTX_TEST 0x1
1.139 +int flags;
1.140 +X509 *issuer_cert;
1.141 +X509 *subject_cert;
1.142 +X509_REQ *subject_req;
1.143 +X509_CRL *crl;
1.144 +X509V3_CONF_METHOD *db_meth;
1.145 +void *db;
1.146 +/* Maybe more here */
1.147 +};
1.148 +
1.149 +typedef struct v3_ext_method X509V3_EXT_METHOD;
1.150 +
1.151 +DECLARE_STACK_OF(X509V3_EXT_METHOD)
1.152 +
1.153 +/* ext_flags values */
1.154 +#define X509V3_EXT_DYNAMIC 0x1
1.155 +#define X509V3_EXT_CTX_DEP 0x2
1.156 +#define X509V3_EXT_MULTILINE 0x4
1.157 +
1.158 +typedef BIT_STRING_BITNAME ENUMERATED_NAMES;
1.159 +
1.160 +typedef struct BASIC_CONSTRAINTS_st {
1.161 +int ca;
1.162 +ASN1_INTEGER *pathlen;
1.163 +} BASIC_CONSTRAINTS;
1.164 +
1.165 +
1.166 +typedef struct PKEY_USAGE_PERIOD_st {
1.167 +ASN1_GENERALIZEDTIME *notBefore;
1.168 +ASN1_GENERALIZEDTIME *notAfter;
1.169 +} PKEY_USAGE_PERIOD;
1.170 +
1.171 +typedef struct otherName_st {
1.172 +ASN1_OBJECT *type_id;
1.173 +ASN1_TYPE *value;
1.174 +} OTHERNAME;
1.175 +
1.176 +typedef struct EDIPartyName_st {
1.177 + ASN1_STRING *nameAssigner;
1.178 + ASN1_STRING *partyName;
1.179 +} EDIPARTYNAME;
1.180 +
1.181 +typedef struct GENERAL_NAME_st {
1.182 +
1.183 +#define GEN_OTHERNAME 0
1.184 +#define GEN_EMAIL 1
1.185 +#define GEN_DNS 2
1.186 +#define GEN_X400 3
1.187 +#define GEN_DIRNAME 4
1.188 +#define GEN_EDIPARTY 5
1.189 +#define GEN_URI 6
1.190 +#define GEN_IPADD 7
1.191 +#define GEN_RID 8
1.192 +
1.193 +int type;
1.194 +union {
1.195 + char *ptr;
1.196 + OTHERNAME *otherName; /* otherName */
1.197 + ASN1_IA5STRING *rfc822Name;
1.198 + ASN1_IA5STRING *dNSName;
1.199 + ASN1_TYPE *x400Address;
1.200 + X509_NAME *directoryName;
1.201 + EDIPARTYNAME *ediPartyName;
1.202 + ASN1_IA5STRING *uniformResourceIdentifier;
1.203 + ASN1_OCTET_STRING *iPAddress;
1.204 + ASN1_OBJECT *registeredID;
1.205 +
1.206 + /* Old names */
1.207 + ASN1_OCTET_STRING *ip; /* iPAddress */
1.208 + X509_NAME *dirn; /* dirn */
1.209 + ASN1_IA5STRING *ia5;/* rfc822Name, dNSName, uniformResourceIdentifier */
1.210 + ASN1_OBJECT *rid; /* registeredID */
1.211 + ASN1_TYPE *other; /* x400Address */
1.212 +} d;
1.213 +} GENERAL_NAME;
1.214 +
1.215 +typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES;
1.216 +
1.217 +typedef struct ACCESS_DESCRIPTION_st {
1.218 + ASN1_OBJECT *method;
1.219 + GENERAL_NAME *location;
1.220 +} ACCESS_DESCRIPTION;
1.221 +
1.222 +typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS;
1.223 +
1.224 +typedef STACK_OF(ASN1_OBJECT) EXTENDED_KEY_USAGE;
1.225 +
1.226 +DECLARE_STACK_OF(GENERAL_NAME)
1.227 +DECLARE_ASN1_SET_OF(GENERAL_NAME)
1.228 +
1.229 +DECLARE_STACK_OF(ACCESS_DESCRIPTION)
1.230 +DECLARE_ASN1_SET_OF(ACCESS_DESCRIPTION)
1.231 +
1.232 +typedef struct DIST_POINT_NAME_st {
1.233 +int type;
1.234 +union {
1.235 + GENERAL_NAMES *fullname;
1.236 + STACK_OF(X509_NAME_ENTRY) *relativename;
1.237 +} name;
1.238 +} DIST_POINT_NAME;
1.239 +
1.240 +typedef struct DIST_POINT_st {
1.241 +DIST_POINT_NAME *distpoint;
1.242 +ASN1_BIT_STRING *reasons;
1.243 +GENERAL_NAMES *CRLissuer;
1.244 +} DIST_POINT;
1.245 +
1.246 +typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS;
1.247 +
1.248 +DECLARE_STACK_OF(DIST_POINT)
1.249 +DECLARE_ASN1_SET_OF(DIST_POINT)
1.250 +
1.251 +typedef struct AUTHORITY_KEYID_st {
1.252 +ASN1_OCTET_STRING *keyid;
1.253 +GENERAL_NAMES *issuer;
1.254 +ASN1_INTEGER *serial;
1.255 +} AUTHORITY_KEYID;
1.256 +
1.257 +/* Strong extranet structures */
1.258 +
1.259 +typedef struct SXNET_ID_st {
1.260 + ASN1_INTEGER *zone;
1.261 + ASN1_OCTET_STRING *user;
1.262 +} SXNETID;
1.263 +
1.264 +DECLARE_STACK_OF(SXNETID)
1.265 +DECLARE_ASN1_SET_OF(SXNETID)
1.266 +
1.267 +typedef struct SXNET_st {
1.268 + ASN1_INTEGER *version;
1.269 + STACK_OF(SXNETID) *ids;
1.270 +} SXNET;
1.271 +
1.272 +typedef struct NOTICEREF_st {
1.273 + ASN1_STRING *organization;
1.274 + STACK_OF(ASN1_INTEGER) *noticenos;
1.275 +} NOTICEREF;
1.276 +
1.277 +typedef struct USERNOTICE_st {
1.278 + NOTICEREF *noticeref;
1.279 + ASN1_STRING *exptext;
1.280 +} USERNOTICE;
1.281 +
1.282 +typedef struct POLICYQUALINFO_st {
1.283 + ASN1_OBJECT *pqualid;
1.284 + union {
1.285 + ASN1_IA5STRING *cpsuri;
1.286 + USERNOTICE *usernotice;
1.287 + ASN1_TYPE *other;
1.288 + } d;
1.289 +} POLICYQUALINFO;
1.290 +
1.291 +DECLARE_STACK_OF(POLICYQUALINFO)
1.292 +DECLARE_ASN1_SET_OF(POLICYQUALINFO)
1.293 +
1.294 +typedef struct POLICYINFO_st {
1.295 + ASN1_OBJECT *policyid;
1.296 + STACK_OF(POLICYQUALINFO) *qualifiers;
1.297 +} POLICYINFO;
1.298 +
1.299 +typedef STACK_OF(POLICYINFO) CERTIFICATEPOLICIES;
1.300 +
1.301 +DECLARE_STACK_OF(POLICYINFO)
1.302 +DECLARE_ASN1_SET_OF(POLICYINFO)
1.303 +
1.304 +typedef struct POLICY_MAPPING_st {
1.305 + ASN1_OBJECT *issuerDomainPolicy;
1.306 + ASN1_OBJECT *subjectDomainPolicy;
1.307 +} POLICY_MAPPING;
1.308 +
1.309 +DECLARE_STACK_OF(POLICY_MAPPING)
1.310 +
1.311 +typedef STACK_OF(POLICY_MAPPING) POLICY_MAPPINGS;
1.312 +
1.313 +typedef struct GENERAL_SUBTREE_st {
1.314 + GENERAL_NAME *base;
1.315 + ASN1_INTEGER *minimum;
1.316 + ASN1_INTEGER *maximum;
1.317 +} GENERAL_SUBTREE;
1.318 +
1.319 +DECLARE_STACK_OF(GENERAL_SUBTREE)
1.320 +
1.321 +typedef struct NAME_CONSTRAINTS_st {
1.322 + STACK_OF(GENERAL_SUBTREE) *permittedSubtrees;
1.323 + STACK_OF(GENERAL_SUBTREE) *excludedSubtrees;
1.324 +} NAME_CONSTRAINTS;
1.325 +
1.326 +typedef struct POLICY_CONSTRAINTS_st {
1.327 + ASN1_INTEGER *requireExplicitPolicy;
1.328 + ASN1_INTEGER *inhibitPolicyMapping;
1.329 +} POLICY_CONSTRAINTS;
1.330 +
1.331 +/* Proxy certificate structures, see RFC 3820 */
1.332 +typedef struct PROXY_POLICY_st
1.333 + {
1.334 + ASN1_OBJECT *policyLanguage;
1.335 + ASN1_OCTET_STRING *policy;
1.336 + } PROXY_POLICY;
1.337 +
1.338 +typedef struct PROXY_CERT_INFO_EXTENSION_st
1.339 + {
1.340 + ASN1_INTEGER *pcPathLengthConstraint;
1.341 + PROXY_POLICY *proxyPolicy;
1.342 + } PROXY_CERT_INFO_EXTENSION;
1.343 +
1.344 +DECLARE_ASN1_FUNCTIONS(PROXY_POLICY)
1.345 +DECLARE_ASN1_FUNCTIONS(PROXY_CERT_INFO_EXTENSION)
1.346 +
1.347 +
1.348 +#define X509V3_conf_err(val) ERR_add_error_data(6, "section:", val->section, \
1.349 +",name:", val->name, ",value:", val->value);
1.350 +
1.351 +#define X509V3_set_ctx_test(ctx) \
1.352 + X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, CTX_TEST)
1.353 +#define X509V3_set_ctx_nodb(ctx) (ctx)->db = NULL;
1.354 +
1.355 +#define EXT_BITSTRING(nid, table) { nid, 0, ASN1_ITEM_ref(ASN1_BIT_STRING), \
1.356 + 0,0,0,0, \
1.357 + 0,0, \
1.358 + (X509V3_EXT_I2V)i2v_ASN1_BIT_STRING, \
1.359 + (X509V3_EXT_V2I)v2i_ASN1_BIT_STRING, \
1.360 + NULL, NULL, \
1.361 + table}
1.362 +
1.363 +#define EXT_IA5STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_IA5STRING), \
1.364 + 0,0,0,0, \
1.365 + (X509V3_EXT_I2S)i2s_ASN1_IA5STRING, \
1.366 + (X509V3_EXT_S2I)s2i_ASN1_IA5STRING, \
1.367 + 0,0,0,0, \
1.368 + NULL}
1.369 +
1.370 +#define EXT_END { -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
1.371 +
1.372 +
1.373 +/* X509_PURPOSE stuff */
1.374 +
1.375 +#define EXFLAG_BCONS 0x1
1.376 +#define EXFLAG_KUSAGE 0x2
1.377 +#define EXFLAG_XKUSAGE 0x4
1.378 +#define EXFLAG_NSCERT 0x8
1.379 +
1.380 +#define EXFLAG_CA 0x10
1.381 +#define EXFLAG_SS 0x20
1.382 +#define EXFLAG_V1 0x40
1.383 +#define EXFLAG_INVALID 0x80
1.384 +#define EXFLAG_SET 0x100
1.385 +#define EXFLAG_CRITICAL 0x200
1.386 +#define EXFLAG_PROXY 0x400
1.387 +
1.388 +#define EXFLAG_INVALID_POLICY 0x400
1.389 +
1.390 +#define KU_DIGITAL_SIGNATURE 0x0080
1.391 +#define KU_NON_REPUDIATION 0x0040
1.392 +#define KU_KEY_ENCIPHERMENT 0x0020
1.393 +#define KU_DATA_ENCIPHERMENT 0x0010
1.394 +#define KU_KEY_AGREEMENT 0x0008
1.395 +#define KU_KEY_CERT_SIGN 0x0004
1.396 +#define KU_CRL_SIGN 0x0002
1.397 +#define KU_ENCIPHER_ONLY 0x0001
1.398 +#define KU_DECIPHER_ONLY 0x8000
1.399 +
1.400 +#define NS_SSL_CLIENT 0x80
1.401 +#define NS_SSL_SERVER 0x40
1.402 +#define NS_SMIME 0x20
1.403 +#define NS_OBJSIGN 0x10
1.404 +#define NS_SSL_CA 0x04
1.405 +#define NS_SMIME_CA 0x02
1.406 +#define NS_OBJSIGN_CA 0x01
1.407 +#define NS_ANY_CA (NS_SSL_CA|NS_SMIME_CA|NS_OBJSIGN_CA)
1.408 +
1.409 +#define XKU_SSL_SERVER 0x1
1.410 +#define XKU_SSL_CLIENT 0x2
1.411 +#define XKU_SMIME 0x4
1.412 +#define XKU_CODE_SIGN 0x8
1.413 +#define XKU_SGC 0x10
1.414 +#define XKU_OCSP_SIGN 0x20
1.415 +#define XKU_TIMESTAMP 0x40
1.416 +#define XKU_DVCS 0x80
1.417 +
1.418 +#define X509_PURPOSE_DYNAMIC 0x1
1.419 +#define X509_PURPOSE_DYNAMIC_NAME 0x2
1.420 +
1.421 +typedef struct x509_purpose_st {
1.422 + int purpose;
1.423 + int trust; /* Default trust ID */
1.424 + int flags;
1.425 + int (*check_purpose)(const struct x509_purpose_st *,
1.426 + const X509 *, int);
1.427 + char *name;
1.428 + char *sname;
1.429 + void *usr_data;
1.430 +} X509_PURPOSE;
1.431 +
1.432 +#define X509_PURPOSE_SSL_CLIENT 1
1.433 +#define X509_PURPOSE_SSL_SERVER 2
1.434 +#define X509_PURPOSE_NS_SSL_SERVER 3
1.435 +#define X509_PURPOSE_SMIME_SIGN 4
1.436 +#define X509_PURPOSE_SMIME_ENCRYPT 5
1.437 +#define X509_PURPOSE_CRL_SIGN 6
1.438 +#define X509_PURPOSE_ANY 7
1.439 +#define X509_PURPOSE_OCSP_HELPER 8
1.440 +
1.441 +#define X509_PURPOSE_MIN 1
1.442 +#define X509_PURPOSE_MAX 8
1.443 +
1.444 +/* Flags for X509V3_EXT_print() */
1.445 +
1.446 +#define X509V3_EXT_UNKNOWN_MASK (0xfL << 16)
1.447 +/* Return error for unknown extensions */
1.448 +#define X509V3_EXT_DEFAULT 0
1.449 +/* Print error for unknown extensions */
1.450 +#define X509V3_EXT_ERROR_UNKNOWN (1L << 16)
1.451 +/* ASN1 parse unknown extensions */
1.452 +#define X509V3_EXT_PARSE_UNKNOWN (2L << 16)
1.453 +/* BIO_dump unknown extensions */
1.454 +#define X509V3_EXT_DUMP_UNKNOWN (3L << 16)
1.455 +
1.456 +/* Flags for X509V3_add1_i2d */
1.457 +
1.458 +#define X509V3_ADD_OP_MASK 0xfL
1.459 +#define X509V3_ADD_DEFAULT 0L
1.460 +#define X509V3_ADD_APPEND 1L
1.461 +#define X509V3_ADD_REPLACE 2L
1.462 +#define X509V3_ADD_REPLACE_EXISTING 3L
1.463 +#define X509V3_ADD_KEEP_EXISTING 4L
1.464 +#define X509V3_ADD_DELETE 5L
1.465 +#define X509V3_ADD_SILENT 0x10
1.466 +
1.467 +DECLARE_STACK_OF(X509_PURPOSE)
1.468 +
1.469 +DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS)
1.470 +
1.471 +DECLARE_ASN1_FUNCTIONS(SXNET)
1.472 +DECLARE_ASN1_FUNCTIONS(SXNETID)
1.473 +
1.474 +IMPORT_C int SXNET_add_id_asc(SXNET **psx, char *zone, char *user, int userlen);
1.475 +IMPORT_C int SXNET_add_id_ulong(SXNET **psx, unsigned long lzone, char *user, int userlen);
1.476 +IMPORT_C int SXNET_add_id_INTEGER(SXNET **psx, ASN1_INTEGER *izone, char *user, int userlen);
1.477 +
1.478 +IMPORT_C ASN1_OCTET_STRING *SXNET_get_id_asc(SXNET *sx, char *zone);
1.479 +IMPORT_C ASN1_OCTET_STRING *SXNET_get_id_ulong(SXNET *sx, unsigned long lzone);
1.480 +IMPORT_C ASN1_OCTET_STRING *SXNET_get_id_INTEGER(SXNET *sx, ASN1_INTEGER *zone);
1.481 +
1.482 +DECLARE_ASN1_FUNCTIONS(AUTHORITY_KEYID)
1.483 +
1.484 +DECLARE_ASN1_FUNCTIONS(PKEY_USAGE_PERIOD)
1.485 +
1.486 +DECLARE_ASN1_FUNCTIONS(GENERAL_NAME)
1.487 +
1.488 +
1.489 +IMPORT_C ASN1_BIT_STRING *v2i_ASN1_BIT_STRING(X509V3_EXT_METHOD *method,
1.490 + X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval);
1.491 +IMPORT_C STACK_OF(CONF_VALUE) *i2v_ASN1_BIT_STRING(X509V3_EXT_METHOD *method,
1.492 + ASN1_BIT_STRING *bits,
1.493 + STACK_OF(CONF_VALUE) *extlist);
1.494 +
1.495 +IMPORT_C STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, GENERAL_NAME *gen, STACK_OF(CONF_VALUE) *ret);
1.496 +IMPORT_C int GENERAL_NAME_print(BIO *out, GENERAL_NAME *gen);
1.497 +
1.498 +DECLARE_ASN1_FUNCTIONS(GENERAL_NAMES)
1.499 +
1.500 +IMPORT_C STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method,
1.501 + GENERAL_NAMES *gen, STACK_OF(CONF_VALUE) *extlist);
1.502 +GENERAL_NAMES *v2i_GENERAL_NAMES(X509V3_EXT_METHOD *method,
1.503 + X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval);
1.504 +
1.505 +DECLARE_ASN1_FUNCTIONS(OTHERNAME)
1.506 +DECLARE_ASN1_FUNCTIONS(EDIPARTYNAME)
1.507 +
1.508 +IMPORT_C char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, ASN1_OCTET_STRING *ia5);
1.509 +ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, char *str);
1.510 +
1.511 +DECLARE_ASN1_FUNCTIONS(EXTENDED_KEY_USAGE)
1.512 +IMPORT_C int i2a_ACCESS_DESCRIPTION(BIO *bp, ACCESS_DESCRIPTION* a);
1.513 +
1.514 +DECLARE_ASN1_FUNCTIONS(CERTIFICATEPOLICIES)
1.515 +DECLARE_ASN1_FUNCTIONS(POLICYINFO)
1.516 +DECLARE_ASN1_FUNCTIONS(POLICYQUALINFO)
1.517 +DECLARE_ASN1_FUNCTIONS(USERNOTICE)
1.518 +DECLARE_ASN1_FUNCTIONS(NOTICEREF)
1.519 +
1.520 +DECLARE_ASN1_FUNCTIONS(CRL_DIST_POINTS)
1.521 +DECLARE_ASN1_FUNCTIONS(DIST_POINT)
1.522 +DECLARE_ASN1_FUNCTIONS(DIST_POINT_NAME)
1.523 +
1.524 +DECLARE_ASN1_FUNCTIONS(ACCESS_DESCRIPTION)
1.525 +DECLARE_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS)
1.526 +
1.527 +DECLARE_ASN1_ITEM(POLICY_MAPPING)
1.528 +DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_MAPPING)
1.529 +DECLARE_ASN1_ITEM(POLICY_MAPPINGS)
1.530 +
1.531 +DECLARE_ASN1_ITEM(GENERAL_SUBTREE)
1.532 +DECLARE_ASN1_ALLOC_FUNCTIONS(GENERAL_SUBTREE)
1.533 +
1.534 +DECLARE_ASN1_ITEM(NAME_CONSTRAINTS)
1.535 +DECLARE_ASN1_ALLOC_FUNCTIONS(NAME_CONSTRAINTS)
1.536 +
1.537 +DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_CONSTRAINTS)
1.538 +DECLARE_ASN1_ITEM(POLICY_CONSTRAINTS)
1.539 +
1.540 +#ifdef HEADER_CONF_H
1.541 +IMPORT_C GENERAL_NAME *v2i_GENERAL_NAME(X509V3_EXT_METHOD *method, X509V3_CTX *ctx,
1.542 + CONF_VALUE *cnf);
1.543 +IMPORT_C GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out, X509V3_EXT_METHOD *method,
1.544 + X509V3_CTX *ctx, CONF_VALUE *cnf, int is_nc);
1.545 +IMPORT_C void X509V3_conf_free(CONF_VALUE *val);
1.546 +
1.547 +IMPORT_C X509_EXTENSION *X509V3_EXT_nconf_nid(CONF *conf, X509V3_CTX *ctx, int ext_nid, char *value);
1.548 +IMPORT_C X509_EXTENSION *X509V3_EXT_nconf(CONF *conf, X509V3_CTX *ctx, char *name, char *value);
1.549 +IMPORT_C int X509V3_EXT_add_nconf_sk(CONF *conf, X509V3_CTX *ctx, char *section, STACK_OF(X509_EXTENSION) **sk);
1.550 +IMPORT_C int X509V3_EXT_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, X509 *cert);
1.551 +IMPORT_C int X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, X509_REQ *req);
1.552 +IMPORT_C int X509V3_EXT_CRL_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, X509_CRL *crl);
1.553 +
1.554 +IMPORT_C X509_EXTENSION *X509V3_EXT_conf_nid(LHASH *conf, X509V3_CTX *ctx, int ext_nid, char *value);
1.555 +IMPORT_C X509_EXTENSION *X509V3_EXT_conf(LHASH *conf, X509V3_CTX *ctx, char *name, char *value);
1.556 +IMPORT_C int X509V3_EXT_add_conf(LHASH *conf, X509V3_CTX *ctx, char *section, X509 *cert);
1.557 +IMPORT_C int X509V3_EXT_REQ_add_conf(LHASH *conf, X509V3_CTX *ctx, char *section, X509_REQ *req);
1.558 +IMPORT_C int X509V3_EXT_CRL_add_conf(LHASH *conf, X509V3_CTX *ctx, char *section, X509_CRL *crl);
1.559 +
1.560 +IMPORT_C int X509V3_add_value_bool_nf(char *name, int asn1_bool,
1.561 + STACK_OF(CONF_VALUE) **extlist);
1.562 +IMPORT_C int X509V3_get_value_bool(CONF_VALUE *value, int *asn1_bool);
1.563 +IMPORT_C int X509V3_get_value_int(CONF_VALUE *value, ASN1_INTEGER **aint);
1.564 +IMPORT_C void X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf);
1.565 +IMPORT_C void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH *lhash);
1.566 +#endif
1.567 +
1.568 +IMPORT_C char * X509V3_get_string(X509V3_CTX *ctx, char *name, char *section);
1.569 +IMPORT_C STACK_OF(CONF_VALUE) * X509V3_get_section(X509V3_CTX *ctx, char *section);
1.570 +IMPORT_C void X509V3_string_free(X509V3_CTX *ctx, char *str);
1.571 +IMPORT_C void X509V3_section_free( X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *section);
1.572 +IMPORT_C void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subject,
1.573 + X509_REQ *req, X509_CRL *crl, int flags);
1.574 +
1.575 +IMPORT_C int X509V3_add_value(const char *name, const char *value,
1.576 + STACK_OF(CONF_VALUE) **extlist);
1.577 +IMPORT_C int X509V3_add_value_uchar(const char *name, const unsigned char *value,
1.578 + STACK_OF(CONF_VALUE) **extlist);
1.579 +IMPORT_C int X509V3_add_value_bool(const char *name, int asn1_bool,
1.580 + STACK_OF(CONF_VALUE) **extlist);
1.581 +IMPORT_C int X509V3_add_value_int(const char *name, ASN1_INTEGER *aint,
1.582 + STACK_OF(CONF_VALUE) **extlist);
1.583 +IMPORT_C char * i2s_ASN1_INTEGER(X509V3_EXT_METHOD *meth, ASN1_INTEGER *aint);
1.584 +IMPORT_C ASN1_INTEGER * s2i_ASN1_INTEGER(X509V3_EXT_METHOD *meth, char *value);
1.585 +IMPORT_C char * i2s_ASN1_ENUMERATED(X509V3_EXT_METHOD *meth, ASN1_ENUMERATED *aint);
1.586 +IMPORT_C char * i2s_ASN1_ENUMERATED_TABLE(X509V3_EXT_METHOD *meth, ASN1_ENUMERATED *aint);
1.587 +IMPORT_C int X509V3_EXT_add(X509V3_EXT_METHOD *ext);
1.588 +IMPORT_C int X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist);
1.589 +IMPORT_C int X509V3_EXT_add_alias(int nid_to, int nid_from);
1.590 +IMPORT_C void X509V3_EXT_cleanup(void);
1.591 +
1.592 +IMPORT_C X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext);
1.593 +IMPORT_C X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid);
1.594 +IMPORT_C int X509V3_add_standard_extensions(void);
1.595 +IMPORT_C STACK_OF(CONF_VALUE) *X509V3_parse_list(const char *line);
1.596 +IMPORT_C void *X509V3_EXT_d2i(X509_EXTENSION *ext);
1.597 +IMPORT_C void *X509V3_get_d2i(STACK_OF(X509_EXTENSION) *x, int nid, int *crit, int *idx);
1.598 +
1.599 +
1.600 +IMPORT_C X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc);
1.601 +IMPORT_C int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, int crit, unsigned long flags);
1.602 +
1.603 +IMPORT_C char *hex_to_string(unsigned char *buffer, long len);
1.604 +IMPORT_C unsigned char *string_to_hex(char *str, long *len);
1.605 +IMPORT_C int name_cmp(const char *name, const char *cmp);
1.606 +
1.607 +IMPORT_C void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent,
1.608 + int ml);
1.609 +IMPORT_C int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag, int indent);
1.610 +IMPORT_C int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag, int indent);
1.611 +
1.612 +IMPORT_C int X509V3_extensions_print(BIO *out, char *title, STACK_OF(X509_EXTENSION) *exts, unsigned long flag, int indent);
1.613 +
1.614 +IMPORT_C int X509_check_ca(X509 *x);
1.615 +IMPORT_C int X509_check_purpose(X509 *x, int id, int ca);
1.616 +IMPORT_C int X509_supported_extension(X509_EXTENSION *ex);
1.617 +IMPORT_C int X509_PURPOSE_set(int *p, int purpose);
1.618 +IMPORT_C int X509_check_issued(X509 *issuer, X509 *subject);
1.619 +IMPORT_C int X509_PURPOSE_get_count(void);
1.620 +IMPORT_C X509_PURPOSE * X509_PURPOSE_get0(int idx);
1.621 +IMPORT_C int X509_PURPOSE_get_by_sname(char *sname);
1.622 +IMPORT_C int X509_PURPOSE_get_by_id(int id);
1.623 +IMPORT_C int X509_PURPOSE_add(int id, int trust, int flags,
1.624 + int (*ck)(const X509_PURPOSE *, const X509 *, int),
1.625 + char *name, char *sname, void *arg);
1.626 +IMPORT_C char *X509_PURPOSE_get0_name(X509_PURPOSE *xp);
1.627 +IMPORT_C char *X509_PURPOSE_get0_sname(X509_PURPOSE *xp);
1.628 +IMPORT_C int X509_PURPOSE_get_trust(X509_PURPOSE *xp);
1.629 +IMPORT_C void X509_PURPOSE_cleanup(void);
1.630 +IMPORT_C int X509_PURPOSE_get_id(X509_PURPOSE *);
1.631 +
1.632 +IMPORT_C STACK *X509_get1_email(X509 *x);
1.633 +IMPORT_C STACK *X509_REQ_get1_email(X509_REQ *x);
1.634 +IMPORT_C void X509_email_free(STACK *sk);
1.635 +
1.636 +IMPORT_C ASN1_OCTET_STRING *a2i_IPADDRESS(const char *ipasc);
1.637 +IMPORT_C ASN1_OCTET_STRING *a2i_IPADDRESS_NC(const char *ipasc);
1.638 +IMPORT_C int a2i_ipadd(unsigned char *ipout, const char *ipasc);
1.639 +IMPORT_C int X509V3_NAME_from_section(X509_NAME *nm, STACK_OF(CONF_VALUE)*dn_sk,
1.640 + unsigned long chtype);
1.641 +
1.642 +IMPORT_C void X509_POLICY_NODE_print(BIO *out, X509_POLICY_NODE *node, int indent);
1.643 +
1.644 +
1.645 +/* BEGIN ERROR CODES */
1.646 +/* The following lines are auto generated by the script mkerr.pl. Any changes
1.647 + * made after this point may be overwritten when the script is next run.
1.648 + */
1.649 +IMPORT_C void ERR_load_X509V3_strings(void);
1.650 +
1.651 +/* Error codes for the X509V3 functions. */
1.652 +
1.653 +/* Function codes. */
1.654 +#define X509V3_F_ASIDENTIFIERCHOICE_CANONIZE 156
1.655 +#define X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL 157
1.656 +#define X509V3_F_COPY_EMAIL 122
1.657 +#define X509V3_F_COPY_ISSUER 123
1.658 +#define X509V3_F_DO_DIRNAME 144
1.659 +#define X509V3_F_DO_EXT_CONF 124
1.660 +#define X509V3_F_DO_EXT_I2D 135
1.661 +#define X509V3_F_DO_EXT_NCONF 151
1.662 +#define X509V3_F_DO_I2V_NAME_CONSTRAINTS 148
1.663 +#define X509V3_F_HEX_TO_STRING 111
1.664 +#define X509V3_F_I2S_ASN1_ENUMERATED 121
1.665 +#define X509V3_F_I2S_ASN1_IA5STRING 149
1.666 +#define X509V3_F_I2S_ASN1_INTEGER 120
1.667 +#define X509V3_F_I2V_AUTHORITY_INFO_ACCESS 138
1.668 +#define X509V3_F_NOTICE_SECTION 132
1.669 +#define X509V3_F_NREF_NOS 133
1.670 +#define X509V3_F_POLICY_SECTION 131
1.671 +#define X509V3_F_PROCESS_PCI_VALUE 150
1.672 +#define X509V3_F_R2I_CERTPOL 130
1.673 +#define X509V3_F_R2I_PCI 155
1.674 +#define X509V3_F_S2I_ASN1_IA5STRING 100
1.675 +#define X509V3_F_S2I_ASN1_INTEGER 108
1.676 +#define X509V3_F_S2I_ASN1_OCTET_STRING 112
1.677 +#define X509V3_F_S2I_ASN1_SKEY_ID 114
1.678 +#define X509V3_F_S2I_SKEY_ID 115
1.679 +#define X509V3_F_STRING_TO_HEX 113
1.680 +#define X509V3_F_SXNET_ADD_ID_ASC 125
1.681 +#define X509V3_F_SXNET_ADD_ID_INTEGER 126
1.682 +#define X509V3_F_SXNET_ADD_ID_ULONG 127
1.683 +#define X509V3_F_SXNET_GET_ID_ASC 128
1.684 +#define X509V3_F_SXNET_GET_ID_ULONG 129
1.685 +#define X509V3_F_V2I_ASIDENTIFIERS 158
1.686 +#define X509V3_F_V2I_ASN1_BIT_STRING 101
1.687 +#define X509V3_F_V2I_AUTHORITY_INFO_ACCESS 139
1.688 +#define X509V3_F_V2I_AUTHORITY_KEYID 119
1.689 +#define X509V3_F_V2I_BASIC_CONSTRAINTS 102
1.690 +#define X509V3_F_V2I_CRLD 134
1.691 +#define X509V3_F_V2I_EXTENDED_KEY_USAGE 103
1.692 +#define X509V3_F_V2I_GENERAL_NAMES 118
1.693 +#define X509V3_F_V2I_GENERAL_NAME_EX 117
1.694 +#define X509V3_F_V2I_IPADDRBLOCKS 159
1.695 +#define X509V3_F_V2I_ISSUER_ALT 153
1.696 +#define X509V3_F_V2I_NAME_CONSTRAINTS 147
1.697 +#define X509V3_F_V2I_POLICY_CONSTRAINTS 146
1.698 +#define X509V3_F_V2I_POLICY_MAPPINGS 145
1.699 +#define X509V3_F_V2I_SUBJECT_ALT 154
1.700 +#define X509V3_F_V3_ADDR_VALIDATE_PATH_INTERNAL 160
1.701 +#define X509V3_F_V3_GENERIC_EXTENSION 116
1.702 +#define X509V3_F_X509V3_ADD1_I2D 140
1.703 +#define X509V3_F_X509V3_ADD_VALUE 105
1.704 +#define X509V3_F_X509V3_EXT_ADD 104
1.705 +#define X509V3_F_X509V3_EXT_ADD_ALIAS 106
1.706 +#define X509V3_F_X509V3_EXT_CONF 107
1.707 +#define X509V3_F_X509V3_EXT_I2D 136
1.708 +#define X509V3_F_X509V3_EXT_NCONF 152
1.709 +#define X509V3_F_X509V3_GET_SECTION 142
1.710 +#define X509V3_F_X509V3_GET_STRING 143
1.711 +#define X509V3_F_X509V3_GET_VALUE_BOOL 110
1.712 +#define X509V3_F_X509V3_PARSE_LIST 109
1.713 +#define X509V3_F_X509_PURPOSE_ADD 137
1.714 +#define X509V3_F_X509_PURPOSE_SET 141
1.715 +
1.716 +/* Reason codes. */
1.717 +#define X509V3_R_BAD_IP_ADDRESS 118
1.718 +#define X509V3_R_BAD_OBJECT 119
1.719 +#define X509V3_R_BN_DEC2BN_ERROR 100
1.720 +#define X509V3_R_BN_TO_ASN1_INTEGER_ERROR 101
1.721 +#define X509V3_R_DIRNAME_ERROR 149
1.722 +#define X509V3_R_DUPLICATE_ZONE_ID 133
1.723 +#define X509V3_R_ERROR_CONVERTING_ZONE 131
1.724 +#define X509V3_R_ERROR_CREATING_EXTENSION 144
1.725 +#define X509V3_R_ERROR_IN_EXTENSION 128
1.726 +#define X509V3_R_EXPECTED_A_SECTION_NAME 137
1.727 +#define X509V3_R_EXTENSION_EXISTS 145
1.728 +#define X509V3_R_EXTENSION_NAME_ERROR 115
1.729 +#define X509V3_R_EXTENSION_NOT_FOUND 102
1.730 +#define X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED 103
1.731 +#define X509V3_R_EXTENSION_VALUE_ERROR 116
1.732 +#define X509V3_R_ILLEGAL_EMPTY_EXTENSION 151
1.733 +#define X509V3_R_ILLEGAL_HEX_DIGIT 113
1.734 +#define X509V3_R_INCORRECT_POLICY_SYNTAX_TAG 152
1.735 +#define X509V3_R_INVALID_ASNUMBER 160
1.736 +#define X509V3_R_INVALID_ASRANGE 161
1.737 +#define X509V3_R_INVALID_BOOLEAN_STRING 104
1.738 +#define X509V3_R_INVALID_EXTENSION_STRING 105
1.739 +#define X509V3_R_INVALID_INHERITANCE 162
1.740 +#define X509V3_R_INVALID_IPADDRESS 163
1.741 +#define X509V3_R_INVALID_NAME 106
1.742 +#define X509V3_R_INVALID_NULL_ARGUMENT 107
1.743 +#define X509V3_R_INVALID_NULL_NAME 108
1.744 +#define X509V3_R_INVALID_NULL_VALUE 109
1.745 +#define X509V3_R_INVALID_NUMBER 140
1.746 +#define X509V3_R_INVALID_NUMBERS 141
1.747 +#define X509V3_R_INVALID_OBJECT_IDENTIFIER 110
1.748 +#define X509V3_R_INVALID_OPTION 138
1.749 +#define X509V3_R_INVALID_POLICY_IDENTIFIER 134
1.750 +#define X509V3_R_INVALID_PROXY_POLICY_SETTING 153
1.751 +#define X509V3_R_INVALID_PURPOSE 146
1.752 +#define X509V3_R_INVALID_SAFI 164
1.753 +#define X509V3_R_INVALID_SECTION 135
1.754 +#define X509V3_R_INVALID_SYNTAX 143
1.755 +#define X509V3_R_ISSUER_DECODE_ERROR 126
1.756 +#define X509V3_R_MISSING_VALUE 124
1.757 +#define X509V3_R_NEED_ORGANIZATION_AND_NUMBERS 142
1.758 +#define X509V3_R_NO_CONFIG_DATABASE 136
1.759 +#define X509V3_R_NO_ISSUER_CERTIFICATE 121
1.760 +#define X509V3_R_NO_ISSUER_DETAILS 127
1.761 +#define X509V3_R_NO_POLICY_IDENTIFIER 139
1.762 +#define X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED 154
1.763 +#define X509V3_R_NO_PUBLIC_KEY 114
1.764 +#define X509V3_R_NO_SUBJECT_DETAILS 125
1.765 +#define X509V3_R_ODD_NUMBER_OF_DIGITS 112
1.766 +#define X509V3_R_OPERATION_NOT_DEFINED 148
1.767 +#define X509V3_R_OTHERNAME_ERROR 147
1.768 +#define X509V3_R_POLICY_LANGUAGE_ALREADTY_DEFINED 155
1.769 +#define X509V3_R_POLICY_PATH_LENGTH 156
1.770 +#define X509V3_R_POLICY_PATH_LENGTH_ALREADTY_DEFINED 157
1.771 +#define X509V3_R_POLICY_SYNTAX_NOT_CURRENTLY_SUPPORTED 158
1.772 +#define X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY 159
1.773 +#define X509V3_R_SECTION_NOT_FOUND 150
1.774 +#define X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS 122
1.775 +#define X509V3_R_UNABLE_TO_GET_ISSUER_KEYID 123
1.776 +#define X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT 111
1.777 +#define X509V3_R_UNKNOWN_EXTENSION 129
1.778 +#define X509V3_R_UNKNOWN_EXTENSION_NAME 130
1.779 +#define X509V3_R_UNKNOWN_OPTION 120
1.780 +#define X509V3_R_UNSUPPORTED_OPTION 117
1.781 +#define X509V3_R_USER_TOO_LONG 132
1.782 +
1.783 +#ifdef __cplusplus
1.784 +}
1.785 +#endif
1.786 +#endif