More code for X509_print_ex() support.
[openssl.git] / crypto / x509v3 / x509v3.h
index 5a97e096126471645d4aa970ab6ab9cf2663c0ba..4c3edc3dafcde4f8f92b754ba0865972333574e7 100644 (file)
 #ifndef HEADER_X509V3_H
 #define HEADER_X509V3_H
 
-#ifdef __cplusplus
-extern "C" {
-#endif
-
 #include <openssl/bio.h>
 #include <openssl/x509.h>
 #include <openssl/conf.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Forward reference */
 struct v3_ext_method;
 struct v3_ext_ctx;
@@ -131,6 +131,8 @@ void *db;
 typedef struct v3_ext_method X509V3_EXT_METHOD;
 typedef struct v3_ext_ctx X509V3_CTX;
 
+DECLARE_STACK_OF(X509V3_EXT_METHOD)
+
 /* ext_flags values */
 #define X509V3_EXT_DYNAMIC     0x1
 #define X509V3_EXT_CTX_DEP     0x2
@@ -179,8 +181,8 @@ union {
 } GENERAL_NAME;
 
 typedef struct ACCESS_DESCRIPTION_st {
-ASN1_OBJECT *method;
-GENERAL_NAME *location;
+       ASN1_OBJECT *method;
+       GENERAL_NAME *location;
 } ACCESS_DESCRIPTION;
 
 DECLARE_STACK_OF(GENERAL_NAME)
@@ -192,7 +194,7 @@ DECLARE_ASN1_SET_OF(ACCESS_DESCRIPTION)
 typedef struct DIST_POINT_NAME_st {
 /* NB: this is a CHOICE type and only one of these should be set */
 STACK_OF(GENERAL_NAME) *fullname;
-X509_NAME *relativename;
+STACK_OF(X509_NAME_ENTRY) *relativename;
 } DIST_POINT_NAME;
 
 typedef struct DIST_POINT_st {
@@ -227,7 +229,7 @@ typedef struct SXNET_st {
 
 typedef struct NOTICEREF_st {
        ASN1_STRING *organization;
-       STACK *noticenos;
+       STACK_OF(ASN1_INTEGER) *noticenos;
 } NOTICEREF;
 
 typedef struct USERNOTICE_st {
@@ -329,12 +331,13 @@ DECLARE_ASN1_SET_OF(POLICYINFO)
 #define X509_PURPOSE_DYNAMIC_NAME      0x2
 
 typedef struct x509_purpose_st {
-       int purpose_id;
-       int trust_id;           /* Default trust ID */
-       int purpose_flags;
-       int (*check_purpose)(struct x509_purpose_st *, X509 *, int);
-       char *purpose_name;
-       char *purpose_sname;
+       int purpose;
+       int trust;              /* Default trust ID */
+       int flags;
+       int (*check_purpose)(const struct x509_purpose_st *,
+                               const X509 *, int);
+       char *name;
+       char *sname;
        void *usr_data;
 } X509_PURPOSE;
 
@@ -344,6 +347,22 @@ typedef struct x509_purpose_st {
 #define X509_PURPOSE_SMIME_SIGN                4
 #define X509_PURPOSE_SMIME_ENCRYPT     5
 #define X509_PURPOSE_CRL_SIGN          6
+#define X509_PURPOSE_ANY               7
+
+#define X509_PURPOSE_MIN               1
+#define X509_PURPOSE_MAX               7
+
+/* Flags for X509V3_EXT_print() */
+
+#define X509V3_EXT_UNKNOWN_MASK                (0xfL << 16)
+/* Return error for unknown extensions */
+#define X509V3_EXT_DEFAULT             0
+/* Print error for unknown extensions */
+#define X509V3_EXT_ERROR_UNKNOWN       (1L << 16)
+/* ASN1 parse unknown extensions */
+#define X509V3_EXT_PARSE_UNKNOWN       (2L << 16)
+/* BIO_dump unknown extensions */
+#define X509V3_EXT_DUMP_UNKNOWN                (3L << 16)
 
 DECLARE_STACK_OF(X509_PURPOSE)
 
@@ -459,7 +478,7 @@ void ACCESS_DESCRIPTION_free(ACCESS_DESCRIPTION *a);
 ACCESS_DESCRIPTION *d2i_ACCESS_DESCRIPTION(ACCESS_DESCRIPTION **a, unsigned char **pp,
              long length);
 
-STACK_OF(ACCESS_DESCRIPTION) *AUTHORITY_INFO_ACCESS_new();
+STACK_OF(ACCESS_DESCRIPTION) *AUTHORITY_INFO_ACCESS_new(void);
 void AUTHORITY_INFO_ACCESS_free(STACK_OF(ACCESS_DESCRIPTION) *a);
 STACK_OF(ACCESS_DESCRIPTION) *d2i_AUTHORITY_INFO_ACCESS(STACK_OF(ACCESS_DESCRIPTION) **a,
                                         unsigned char **pp, long length);
@@ -512,9 +531,6 @@ int X509V3_add_standard_extensions(void);
 STACK_OF(CONF_VALUE) *X509V3_parse_list(char *line);
 void *X509V3_EXT_d2i(X509_EXTENSION *ext);
 void *X509V3_get_d2i(STACK_OF(X509_EXTENSION) *x, int nid, int *crit, int *idx);
-void *X509V3_X509_get_d2i(X509 *x, int nid, int *crit, int *idx);
-void *X509V3_CRL_get_d2i(X509_CRL *x, int nid, int *crit, int *idx);
-void *X509V3_REVOKED_get_d2i(X509_REVOKED *x, int nid, int *crit, int *idx);
 
 X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc);
 
@@ -524,22 +540,29 @@ int name_cmp(const char *name, const char *cmp);
 
 void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent,
                                                                 int ml);
-int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, int flag, int indent);
+int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag, int indent);
 int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag, int indent);
 
 int X509_check_purpose(X509 *x, int id, int ca);
+int X509_check_issued(X509 *issuer, X509 *subject);
 int X509_PURPOSE_get_count(void);
-X509_PURPOSE * X509_PURPOSE_iget(int idx);
+X509_PURPOSE * X509_PURPOSE_get0(int idx);
 int X509_PURPOSE_get_by_sname(char *sname);
 int X509_PURPOSE_get_by_id(int id);
-int X509_PURPOSE_add(X509_PURPOSE *xp);
-char *X509_PURPOSE_iget_name(X509_PURPOSE *xp);
-char *X509_PURPOSE_iget_sname(X509_PURPOSE *xp);
+int X509_PURPOSE_add(int id, int trust, int flags,
+                       int (*ck)(const X509_PURPOSE *, const X509 *, int),
+                               char *name, char *sname, void *arg);
+char *X509_PURPOSE_get0_name(X509_PURPOSE *xp);
+char *X509_PURPOSE_get0_sname(X509_PURPOSE *xp);
 int X509_PURPOSE_get_trust(X509_PURPOSE *xp);
 void X509_PURPOSE_cleanup(void);
-void X509_PURPOSE_add_standard(void);
 int X509_PURPOSE_get_id(X509_PURPOSE *);
 
+STACK *X509_get1_email(X509 *x);
+STACK *X509_REQ_get1_email(X509_REQ *x);
+void X509_email_free(STACK *sk);
+
+
 /* BEGIN ERROR CODES */
 /* The following lines are auto generated by the script mkerr.pl. Any changes
  * made after this point may be overwritten when the script is next run.