Support for AKID in CRLs and partial support for IDP. Overhaul of CRL
[openssl.git] / crypto / x509v3 / x509v3.h
index 4374109927400ec133d2f84e1389e87171480660..26884d41ecfe984411b3697ff02fede24d888884 100644 (file)
@@ -222,22 +222,22 @@ union {
 } name;
 } DIST_POINT_NAME;
 
-typedef struct DIST_POINT_st {
+struct DIST_POINT_st {
 DIST_POINT_NAME        *distpoint;
 ASN1_BIT_STRING *reasons;
 GENERAL_NAMES *CRLissuer;
-} DIST_POINT;
+};
 
 typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS;
 
 DECLARE_STACK_OF(DIST_POINT)
 DECLARE_ASN1_SET_OF(DIST_POINT)
 
-typedef struct AUTHORITY_KEYID_st {
+struct AUTHORITY_KEYID_st {
 ASN1_OCTET_STRING *keyid;
 GENERAL_NAMES *issuer;
 ASN1_INTEGER *serial;
-} AUTHORITY_KEYID;
+};
 
 /* Strong extranet structures */
 
@@ -329,7 +329,7 @@ typedef struct PROXY_CERT_INFO_EXTENSION_st
 DECLARE_ASN1_FUNCTIONS(PROXY_POLICY)
 DECLARE_ASN1_FUNCTIONS(PROXY_CERT_INFO_EXTENSION)
 
-typedef struct ISSUING_DIST_POINT_st
+struct ISSUING_DIST_POINT_st
        {
        DIST_POINT_NAME *distpoint;
        int onlyuser;
@@ -337,7 +337,23 @@ typedef struct ISSUING_DIST_POINT_st
        ASN1_BIT_STRING *onlysomereasons;
        int indirectCRL;
        int onlyattr;
-       } ISSUING_DIST_POINT;
+       };
+
+/* Values in idp_flags field */
+/* IDP present */
+#define        IDP_PRESENT     0x1
+/* IDP values inconsistent */
+#define IDP_INVALID    0x2
+/* onlyuser true */
+#define        IDP_ONLYUSER    0x4
+/* onlyCA true */
+#define        IDP_ONLYCA      0x8
+/* onlyattr true */
+#define IDP_ONLYATTR   0x10
+/* indirectCRL true */
+#define IDP_INDIRECT   0x20
+/* onlysomereasons present */
+#define IDP_REASONS    0x40
 
 #define X509V3_conf_err(val) ERR_add_error_data(6, "section:", val->section, \
 ",name:", val->name, ",value:", val->value);
@@ -431,9 +447,10 @@ typedef struct x509_purpose_st {
 #define X509_PURPOSE_CRL_SIGN          6
 #define X509_PURPOSE_ANY               7
 #define X509_PURPOSE_OCSP_HELPER       8
+#define X509_PURPOSE_TIMESTAMP_SIGN    9
 
 #define X509_PURPOSE_MIN               1
-#define X509_PURPOSE_MAX               8
+#define X509_PURPOSE_MAX               9
 
 /* Flags for X509V3_EXT_print() */
 
@@ -478,6 +495,9 @@ DECLARE_ASN1_FUNCTIONS(AUTHORITY_KEYID)
 DECLARE_ASN1_FUNCTIONS(PKEY_USAGE_PERIOD)
 
 DECLARE_ASN1_FUNCTIONS(GENERAL_NAME)
+GENERAL_NAME *GENERAL_NAME_dup(GENERAL_NAME *a);
+int GENERAL_NAME_cmp(GENERAL_NAME *a, GENERAL_NAME *b);
+
 
 
 ASN1_BIT_STRING *v2i_ASN1_BIT_STRING(X509V3_EXT_METHOD *method,
@@ -498,6 +518,7 @@ GENERAL_NAMES *v2i_GENERAL_NAMES(X509V3_EXT_METHOD *method,
 
 DECLARE_ASN1_FUNCTIONS(OTHERNAME)
 DECLARE_ASN1_FUNCTIONS(EDIPARTYNAME)
+int OTHERNAME_cmp(OTHERNAME *a, OTHERNAME *b);
 
 char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, ASN1_OCTET_STRING *ia5);
 ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, char *str);
@@ -611,6 +632,7 @@ int X509_check_purpose(X509 *x, int id, int ca);
 int X509_supported_extension(X509_EXTENSION *ex);
 int X509_PURPOSE_set(int *p, int purpose);
 int X509_check_issued(X509 *issuer, X509 *subject);
+int X509_check_akid(X509 *issuer, AUTHORITY_KEYID *akid);
 int X509_PURPOSE_get_count(void);
 X509_PURPOSE * X509_PURPOSE_get0(int idx);
 int X509_PURPOSE_get_by_sname(char *sname);
@@ -662,13 +684,13 @@ void ERR_load_X509V3_strings(void);
 #define X509V3_F_POLICY_SECTION                                 131
 #define X509V3_F_PROCESS_PCI_VALUE                      150
 #define X509V3_F_R2I_CERTPOL                            130
-#define X509V3_F_R2I_PCI                                149
+#define X509V3_F_R2I_PCI                                155
 #define X509V3_F_S2I_ASN1_IA5STRING                     100
 #define X509V3_F_S2I_ASN1_INTEGER                       108
 #define X509V3_F_S2I_ASN1_OCTET_STRING                  112
 #define X509V3_F_S2I_ASN1_SKEY_ID                       114
 #define X509V3_F_S2I_SKEY_ID                            115
-#define X509V3_F_SET_DIST_POINT_NAME                    155
+#define X509V3_F_SET_DIST_POINT_NAME                    158
 #define X509V3_F_STRING_TO_HEX                          113
 #define X509V3_F_SXNET_ADD_ID_ASC                       125
 #define X509V3_F_SXNET_ADD_ID_INTEGER                   126