8 #ifndef ARC_VOMSATTRIBUTE_H 9 #define ARC_VOMSATTRIBUTE_H 11 #include <openssl/asn1t.h> 12 #include <openssl/safestack.h> 13 #include <openssl/x509v3.h> 16 #if (OPENSSL_VERSION_NUMBER < 0x10100000L) 18 #define DEFINE_STACK_OF(S) \ 19 inline STACK_OF(S)* sk_##S##_new(int (*cmp) (const S* const *, const S* const *)) { return SKM_sk_new(S, (cmp)); } \ 20 inline STACK_OF(S)* sk_##S##_new_null() { return SKM_sk_new_null(S); } \ 21 inline int sk_##S##_is_sorted(STACK_OF(S) const *st) { return SKM_sk_is_sorted(S, st); } \ 22 inline void sk_##S##_free(STACK_OF(S)* st) { SKM_sk_free(S, st); } \ 23 inline int sk_##S##_num(STACK_OF(S) const* st) { return SKM_sk_num(S, st); } \ 24 inline int sk_##S##_push(STACK_OF(S)* st, S* val) { return SKM_sk_push(S, st, val); } \ 25 inline S* sk_##S##_value(STACK_OF(S) const* st, int i) { return SKM_sk_value(S, st, i); } \ 26 inline void sk_##S##_pop_free(STACK_OF(S)* st, void (*free_func)(S*)) { SKM_sk_pop_free(S, st, free_func); } \ 49 #define VOMS_AC_HEADER "-----BEGIN VOMS AC-----" 50 #define VOMS_AC_TRAILER "-----END VOMS AC-----" 54 #define ASN1_F_D2I_AC_ATTR 5000 55 #define AC_F_ATTR_New 5001 56 #define ASN1_F_D2I_AC_ROLE 5002 57 #define AC_F_ROLE_New 5003 58 #define ASN1_F_D2I_AC_IETFATTR 5004 59 #define AC_F_IETFATTR_New 5005 60 #define ASN1_F_D2I_AC_IETFATTRVAL 5006 61 #define ASN1_F_D2I_AC_DIGEST 5007 62 #define AC_F_DIGEST_New 5008 63 #define ASN1_F_D2I_AC_IS 5009 64 #define AC_F_AC_IS_New 5010 65 #define ASN1_F_D2I_AC_FORM 5011 66 #define AC_F_AC_FORM_New 5012 67 #define ASN1_F_D2I_AC_ACI 5013 68 #define ASN1_F_AC_ACI_New 5014 69 #define ASN1_F_D2I_AC_HOLDER 5015 70 #define ASN1_F_AC_HOLDER_New 5016 71 #define ASN1_F_AC_VAL_New 5017 72 #define AC_F_AC_INFO_NEW 5018 73 #define AC_F_D2I_AC 5019 74 #define AC_F_AC_New 5020 75 #define ASN1_F_I2D_AC_IETFATTRVAL 5021 76 #define AC_F_D2I_AC_DIGEST 5022 77 #define AC_F_AC_DIGEST_New 5023 78 #define AC_F_D2I_AC_IS 5024 79 #define AC_ERR_UNSET 5025 80 #define AC_ERR_SET 5026 81 #define AC_ERR_SIGNATURE 5027 82 #define AC_ERR_VERSION 5028 83 #define AC_ERR_HOLDER_SERIAL 5029 84 #define AC_ERR_HOLDER 5030 85 #define AC_ERR_UID_MISMATCH 5031 86 #define AC_ERR_ISSUER_NAME 5032 87 #define AC_ERR_SERIAL 5033 88 #define AC_ERR_DATES 5034 89 #define AC_ERR_ATTRIBS 5035 90 #define AC_F_AC_TARGET_New 5036 91 #define ASN1_F_D2I_AC_TARGET 5037 92 #define AC_F_AC_TARGETS_New 5036 93 #define ASN1_F_D2I_AC_TARGETS 5037 94 #define ASN1_F_D2I_AC_SEQ 5038 95 #define AC_F_AC_SEQ_new 5039 96 #define AC_ERR_ATTRIB_URI 5040 97 #define AC_ERR_ATTRIB_FQAN 5041 98 #define AC_ERR_EXTS_ABSENT 5042 99 #define AC_ERR_MEMORY 5043 100 #define AC_ERR_EXT_CRIT 5044 101 #define AC_ERR_EXT_TARGET 5045 102 #define AC_ERR_EXT_KEY 5046 103 #define AC_ERR_UNKNOWN 5047 105 #define AC_ERR_PARAMETERS 5048 106 #define X509_ERR_ISSUER_NAME 5049 107 #define X509_ERR_HOLDER_NAME 5050 108 #define AC_ERR_NO_EXTENSION 5051 110 #define ASN1_F_D2I_AC_CERTS 5052 111 #define AC_F_X509_New 5053 113 #define AC_F_D2I_AC_ATTRIBUTE 5054 114 #define AC_F_ATTRIBUTE_New 5055 115 #define ASN1_F_D2I_AC_ATT_HOLDER 5056 116 #define AC_F_AC_ATT_HOLDER_New 5057 117 #define ASN1_F_D2I_AC_FULL_ATTRIBUTES 5058 118 #define AC_F_AC_FULL_ATTRIBUTES_New 5059 119 #define ASN1_F_D2I_AC_ATTRIBUTEVAL 5060 120 #define ASN1_F_I2D_AC_ATTRIBUTEVAL 5061 121 #define AC_F_AC_ATTRIBUTEVAL_New 5062 122 #define AC_ERR_ATTRIB 5063 124 typedef struct ACDIGEST {
125 ASN1_ENUMERATED *type;
128 ASN1_BIT_STRING *digest;
131 DECLARE_ASN1_FUNCTIONS(AC_DIGEST)
133 typedef struct ACIS {
134 STACK_OF(GENERAL_NAME) *issuer;
135 ASN1_INTEGER *serial;
136 ASN1_BIT_STRING *uid;
139 DECLARE_ASN1_FUNCTIONS(AC_IS)
141 typedef struct ACFORM {
142 STACK_OF(GENERAL_NAME) *names;
147 DECLARE_ASN1_FUNCTIONS(AC_FORM)
149 typedef struct ACACI {
150 STACK_OF(GENERAL_NAME) *names;
154 DECLARE_ASN1_FUNCTIONS(AC_ACI)
156 typedef struct ACHOLDER {
158 STACK_OF(GENERAL_NAME) *name;
162 DECLARE_ASN1_FUNCTIONS(AC_HOLDER)
164 typedef struct ACVAL {
165 ASN1_GENERALIZEDTIME *notBefore;
166 ASN1_GENERALIZEDTIME *notAfter;
169 DECLARE_ASN1_FUNCTIONS(AC_VAL)
173 #define AC_IETFATTRVAL ASN1_TYPE 174 #define AC_IETFATTRVAL_new ASN1_TYPE_new 175 #define AC_IETFATTRVAL_free ASN1_TYPE_free 176 #define sk_AC_IETFATTRVAL_push sk_ASN1_TYPE_push 177 #define stack_st_AC_IETFATTRVAL stack_st_ASN1_TYPE 178 #define sk_AC_IETFATTRVAL_num sk_ASN1_TYPE_num 179 #define sk_AC_IETFATTRVAL_value sk_ASN1_TYPE_value 180 #define sk_AC_IETFATTRVAL_new_null sk_ASN1_TYPE_new_null 182 typedef struct ACIETFATTR {
183 STACK_OF(GENERAL_NAME) *names;
184 STACK_OF(AC_IETFATTRVAL) *values;
187 DECLARE_ASN1_FUNCTIONS(AC_IETFATTR)
189 typedef struct ACTARGET {
195 DECLARE_ASN1_FUNCTIONS(AC_TARGET)
197 typedef struct ACTARGETS {
198 STACK_OF(AC_TARGET) *targets;
201 DECLARE_ASN1_FUNCTIONS(AC_TARGETS)
203 typedef struct ACATTR {
206 STACK_OF(AC_IETFATTR) *ietfattr;
209 #define GET_TYPE_FQAN 1 210 #define GET_TYPE_ATTRIBUTES 2 212 DECLARE_ASN1_FUNCTIONS(AC_ATTR)
214 typedef struct ACINFO {
215 ASN1_INTEGER *version;
219 ASN1_INTEGER *serial;
221 STACK_OF(AC_ATTR) *attrib;
223 STACK_OF(X509_EXTENSION) *exts;
226 DECLARE_ASN1_FUNCTIONS(AC_INFO)
231 ASN1_BIT_STRING *signature;
234 DECLARE_ASN1_FUNCTIONS(AC)
236 typedef struct ACSEQ {
240 DECLARE_ASN1_FUNCTIONS(AC_SEQ)
242 typedef struct ACCERTS {
243 STACK_OF(X509) *stackcert;
246 DECLARE_ASN1_FUNCTIONS(AC_CERTS)
248 typedef struct ACATTRIBUTE {
249 ASN1_OCTET_STRING *name;
250 ASN1_OCTET_STRING *qualifier;
251 ASN1_OCTET_STRING *value;
254 DECLARE_ASN1_FUNCTIONS(AC_ATTRIBUTE)
256 typedef struct ACATTHOLDER {
257 STACK_OF(GENERAL_NAME) *grantor;
258 STACK_OF(AC_ATTRIBUTE) *attributes;
261 DECLARE_ASN1_FUNCTIONS(AC_ATT_HOLDER)
263 typedef struct ACFULLATTRIBUTES {
264 STACK_OF(AC_ATT_HOLDER) *providers;
265 } AC_FULL_ATTRIBUTES;
267 DECLARE_ASN1_FUNCTIONS(AC_FULL_ATTRIBUTES)
270 DEFINE_STACK_OF(AC_TARGET)
271 DEFINE_STACK_OF(AC_TARGETS)
272 DEFINE_STACK_OF(AC_IETFATTR)
274 DEFINE_STACK_OF(AC_ATTR)
276 DEFINE_STACK_OF(AC_INFO)
277 DEFINE_STACK_OF(AC_VAL)
278 DEFINE_STACK_OF(AC_HOLDER)
279 DEFINE_STACK_OF(AC_ACI)
280 DEFINE_STACK_OF(AC_FORM)
281 DEFINE_STACK_OF(AC_IS)
282 DEFINE_STACK_OF(AC_DIGEST)
283 DEFINE_STACK_OF(AC_CERTS)
284 DEFINE_STACK_OF(AC_ATTRIBUTE)
285 DEFINE_STACK_OF(AC_ATT_HOLDER)
286 DEFINE_STACK_OF(AC_FULL_ATTRIBUTES)
289 X509V3_EXT_METHOD * VOMSAttribute_auth_x509v3_ext_meth();
290 X509V3_EXT_METHOD * VOMSAttribute_avail_x509v3_ext_meth();
291 X509V3_EXT_METHOD * VOMSAttribute_targets_x509v3_ext_meth();
292 X509V3_EXT_METHOD * VOMSAttribute_acseq_x509v3_ext_meth();
293 X509V3_EXT_METHOD * VOMSAttribute_certseq_x509v3_ext_meth();
294 X509V3_EXT_METHOD * VOMSAttribute_attribs_x509v3_ext_meth();
299 Internal code for low-level credential handling.
Definition: CertUtil.h:11