1 #ifndef ARC_PROXYCERTINFO_H
2 #define ARC_PROXYCERTINFO_H
4 #include <openssl/x509.h>
5 #include <openssl/x509v3.h>
9 namespace ArcCredential {
22 #define ANYLANGUAGE_PROXY_OID "1.3.6.1.5.5.7.21.0"
23 #define ANYLANGUAGE_PROXY_SN "ANYLANGUAGE_PROXY" //"anyLanguage" in openssl >= 098
24 #define ANYLANGUAGE_PROXY_LN "anyLanguage proxy"
26 #define IMPERSONATION_PROXY_OID "1.3.6.1.5.5.7.21.1"
27 #define IMPERSONATION_PROXY_SN "IMPERSONATION_PROXY" //"inheritAll" in openssl >= 098
28 #define IMPERSONATION_PROXY_LN "GSI impersonation proxy"
30 #define INDEPENDENT_PROXY_OID "1.3.6.1.5.5.7.21.2"
31 #define INDEPENDENT_PROXY_SN "INDEPENDENT_PROXY" //"independent" in openssl >=098
32 #define INDEPENDENT_PROXY_LN "GSI independent proxy"
35 #define GLOBUS_GSI_PROXY_GENERIC_POLICY_OID "1.3.6.1.4.1.3536.1.1.1.8"
37 #define LIMITED_PROXY_OID "1.3.6.1.4.1.3536.1.1.1.9"
38 #define LIMITED_PROXY_SN "LIMITED_PROXY"
39 #define LIMITED_PROXY_LN "GSI limited proxy"
42 #define ASN1_F_PROXYPOLICY_NEW 450
43 #define ASN1_F_D2I_PROXYPOLICY 451
44 #define ASN1_F_PROXYCERTINFO_NEW 430
45 #define ASN1_F_D2I_PROXYCERTINFO 431
49 #define X509V3_F_PROCESS_PCI_VALUE 150
50 #define X509V3_F_R2I_PCI 155
53 #define X509V3_R_INVALID_PROXY_POLICY_SETTING 153
54 #define X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED 154
55 #define X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY 159
59 typedef struct PROXYPOLICY_st {
60 ASN1_OBJECT * policy_language;
61 ASN1_OCTET_STRING * policy;
64 typedef struct PROXYCERTINFO_st {
65 ASN1_INTEGER * path_length;
66 PROXYPOLICY * proxypolicy;
74 PROXYPOLICY * PROXYPOLICY_new();
75 void PROXYPOLICY_free(PROXYPOLICY * proxypolicy);
78 PROXYPOLICY * PROXYPOLICY_dup(PROXYPOLICY * policy);
81 int PROXYPOLICY_set_policy_language(PROXYPOLICY * policy, ASN1_OBJECT * policy_language);
84 ASN1_OBJECT * PROXYPOLICY_get_policy_language(PROXYPOLICY * policy);
87 int PROXYPOLICY_set_policy(PROXYPOLICY * proxypolicy,
unsigned char * policy,
int length);
90 unsigned char * PROXYPOLICY_get_policy(PROXYPOLICY * policy,
int * length);
93 int i2d_PROXYPOLICY(PROXYPOLICY * policy,
unsigned char ** pp);
96 PROXYPOLICY * d2i_PROXYPOLICY(PROXYPOLICY ** policy,
unsigned char ** pp,
long length);
98 X509V3_EXT_METHOD * PROXYPOLICY_x509v3_ext_meth();
100 STACK_OF(CONF_VALUE) * i2v_PROXYPOLICY(
struct v3_ext_method * method, PROXYPOLICY * ext, STACK_OF(CONF_VALUE) * extlist);
105 PROXYCERTINFO * PROXYCERTINFO_new();
106 void PROXYCERTINFO_free(PROXYCERTINFO * proxycertinfo);
109 PROXYCERTINFO * PROXYCERTINFO_dup(PROXYCERTINFO * proxycertinfo);
111 int PROXYCERTINFO_print_fp(FILE* fp, PROXYCERTINFO* cert_info);
114 int PROXYCERTINFO_set_path_length(PROXYCERTINFO * proxycertinfo,
long path_length);
117 long PROXYCERTINFO_get_path_length(PROXYCERTINFO * proxycertinfo);
120 int PROXYCERTINFO_set_proxypolicy(PROXYCERTINFO * proxycertinfo, PROXYPOLICY * proxypolicy);
123 PROXYPOLICY * PROXYCERTINFO_get_proxypolicy(PROXYCERTINFO * proxycertinfo);
126 int i2d_PROXYCERTINFO(PROXYCERTINFO * proxycertinfo,
unsigned char ** pp);
129 PROXYCERTINFO * d2i_PROXYCERTINFO(PROXYCERTINFO ** cert_info,
unsigned char ** a,
long length);
131 int PROXYCERTINFO_set_version(PROXYCERTINFO *cert_info,
int version);
133 STACK_OF(CONF_VALUE) * i2v_PROXYCERTINFO(
134 struct v3_ext_method * method,
136 STACK_OF(CONF_VALUE) * extlist);
138 int i2r_PROXYCERTINFO(X509V3_EXT_METHOD *method, PROXYCERTINFO *ext, BIO *out,
int indent);
140 PROXYCERTINFO *r2i_PROXYCERTINFO(X509V3_EXT_METHOD *method, X509V3_CTX *ctx,
char *value);
142 X509V3_EXT_METHOD * PROXYCERTINFO_v3_x509v3_ext_meth();
144 X509V3_EXT_METHOD * PROXYCERTINFO_v4_x509v3_ext_meth();