00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef VOMS_APIC_H
00017 #define VOMS_APIC_H
00018
00019 #ifdef NOGLOBUS
00020 #ifndef GSSAPI_H_
00021 typedef void * gss_cred_id_t;
00022 typedef void * gss_ctx_id_t;
00023 #endif
00024 #else
00025 #include <gssapi.h>
00026 #endif
00027
00028 #include <openssl/x509.h>
00029 #include <time.h>
00030
00031 #include "newformat.h"
00032
00033
00034
00037 struct data {
00038 char *group;
00039 char *role;
00040 char *cap;
00041 };
00042
00043 struct attribute {
00044 const char *name;
00045 const char *value;
00046 const char *qualifier;
00047 };
00048
00049 struct contactdata {
00052 char *nick;
00053 char *host;
00054 char *contact;
00055 char *vo;
00056 int port;
00057 char *reserved;
00058 int version;
00059 };
00060
00064 #define TYPE_NODATA 0
00065 #define TYPE_STD 1
00066 #define TYPE_CUSTOM 2
00069 struct voms {
00070 int siglen;
00071 char *signature;
00072 char *user;
00073 char *userca;
00074 char *server;
00075 char *serverca;
00076 char *voname;
00077 char *uri;
00078 char *date1;
00079 char *date2;
00080 int type;
00081 struct data **std;
00082 char *custom;
00083 int datalen;
00084 int version;
00085 char **fqan;
00086 char *serial;
00088
00089 AC *ac;
00090 X509 *holder;
00091 };
00092
00093
00094 #define RECURSE_CHAIN 0
00095 #define RECURSE_NONE 1
00096
00097 #define VERIFY_FULL 0xffffffff
00098 #define VERIFY_NONE 0x00000000
00099 #define VERIFY_DATE 0x00000001
00100 #define VERIFY_NOTARGET 0x00000002
00101 #define VERIFY_KEY 0x00000004
00102 #define VERIFY_SIGN 0x00000008
00103 #define VERIFY_ORDER 0x00000010
00104 #define VERIFY_ID 0x00000020
00105 #define VERIFY_CERTLIST 0x00000040
00106
00109 #define VERR_NONE 0
00110 #define VERR_NOSOCKET 1
00111 #define VERR_NOIDENT 2
00112 #define VERR_COMM 3
00113 #define VERR_PARAM 4
00114 #define VERR_NOEXT 5
00115 #define VERR_NOINIT 6
00116 #define VERR_TIME 7
00117 #define VERR_IDCHECK 8
00119 #define VERR_EXTRAINFO 9
00120 #define VERR_FORMAT 10
00121 #define VERR_NODATA 11
00122 #define VERR_PARSE 12
00123 #define VERR_DIR 13
00124 #define VERR_SIGN 14
00125 #define VERR_SERVER 15
00126 #define VERR_MEM 16
00127 #define VERR_VERIFY 17
00128 #define VERR_TYPE 18
00129 #define VERR_ORDER 19
00130 #define VERR_SERVERCODE 20
00131 #define VERR_NOTAVAIL 21
00133 struct vomsdata {
00134 char *cdir;
00135 char *vdir;
00136 struct voms **data;
00139 char *workvo;
00141 char *extra_data;
00150 int volen;
00151 int extralen;
00152
00153 struct vomsdata *real;
00154 };
00155
00156 extern struct contactdata **VOMS_FindByAlias(struct vomsdata *vd, char *alias,
00157 char *system, char *user,
00158 int *error);
00176 extern struct contactdata **VOMS_FindByVO(struct vomsdata *vd, char *vo,
00177 char *system, char *user,
00178 int *error);
00196 extern void VOMS_DeleteContacts(struct contactdata **list);
00200 extern struct vomsdata *VOMS_Init(char *voms, char *cert);
00214 extern struct voms *VOMS_Copy(struct voms *v, int *error);
00222 extern struct vomsdata *VOMS_CopyAll(struct vomsdata *vd, int *error);
00230 extern void VOMS_Delete(struct voms *v);
00233 extern int VOMS_AddTarget(struct vomsdata *vd, char *target, int *error);
00238 extern void VOMS_FreeTargets(struct vomsdata *vd, int *error);
00242 extern char *VOMS_ListTargets(struct vomsdata *vd, int *error);
00243
00244
00245
00246 extern int VOMS_SetVerificationType(int type, struct vomsdata *vd, int *error);
00247
00248
00249
00250
00251 extern int VOMS_SetLifetime(int length, struct vomsdata *vd,
00252 int *error);
00259 extern void VOMS_Destroy(struct vomsdata *vd);
00262 extern int VOMS_ResetOrder(struct vomsdata *vd, int *error);
00268 extern int VOMS_Ordering(char *order, struct vomsdata *vd, int *error);
00278 extern int VOMS_Contact(char *hostname, int port, char *servsubject,
00279 char *command, struct vomsdata *vd, int *error);
00292 extern int VOMS_ContactRaw(char *hostname, int port, char *servsubject,
00293 char *command, void **data, int *datalen, int *version,
00294 struct vomsdata *vd, int *error);
00309 extern int VOMS_Retrieve(X509 *cert, STACK_OF(X509) *chain, int how,
00310 struct vomsdata *vd, int *error);
00322 extern int VOMS_Import(char *buffer, int buflen, struct vomsdata *vd, int *error);
00333 extern int VOMS_Export(char **buffer, int *buflen, struct vomsdata *vd, int *error);
00340 extern struct voms *VOMS_DefaultData(struct vomsdata *vd, int *error);
00348 extern char *VOMS_ErrorMessage(struct vomsdata *vd, int error, char *buffer, int len);
00358 extern int VOMS_RetrieveEXT(X509_EXTENSION *ext, struct vomsdata *vd, int *error);
00364 extern int VOMS_RetrieveFromCred(gss_cred_id_t cred, int how, struct vomsdata *vd, int *error);
00371 extern int VOMS_RetrieveFromFile(FILE *file, int how, struct vomsdata *vd, int *error);
00378 extern int VOMS_RetrieveFromCtx(gss_ctx_id_t ctx, int how, struct vomsdata *vd, int *error);
00385 extern int VOMS_RetrieveFromProxy(int how, struct vomsdata *vd, int *error);
00391 extern int VOMS_GetAttributeSourcesNumber(struct voms *v, struct vomsdata *vd, int *error);
00392 extern int VOMS_GetAttributeSourceHandle(struct voms *v, int num, struct vomsdata *vd, int *error);
00393 extern const char *VOMS_GetAttributeGrantor(struct voms *v, int handle, struct vomsdata *vd, int *error);
00394 extern int VOMS_GetAttributesNumber(struct voms *v, int handle, struct vomsdata *vd, int *error);
00395 extern int VOMS_GetAttribute(struct voms *v, int handle, int num, struct attribute *at, struct vomsdata *vd, int *error);
00396
00397 extern struct vomsdata *VOMS_Duplicate(struct vomsdata *vd);
00398 extern AC *VOMS_GetAC(struct voms *v);
00399
00400 extern int getMajorVersionNumber(void);
00401 extern int getMinorVersionNumber(void);
00402 extern int getPatchVersionNumber(void);
00403
00404 extern int VOMS_SetVerificationTime(time_t verificationtime, struct vomsdata *vd, int *error);
00405 extern char **VOMS_GetTargetsList(struct voms *v, struct vomsdata *vd, int *error);
00406 extern void VOMS_FreeTargetsList(char **);
00407
00408 extern int VOMS_SetTimeout(int t, struct vomsdata *vd, int *error);
00409 #endif
00410
00411