00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef VOMS_APIC_H
00016 #define VOMS_APIC_H
00017
00018 #ifndef GSSAPI_H_
00019 typedef void * gss_cred_id_t;
00020 typedef void * gss_ctx_id_t;
00021 #endif
00022
00023 #include <openssl/x509.h>
00024 #include <time.h>
00025
00026 #include "newformat.h"
00027
00028
00029
00032 struct data {
00033 char *group;
00034 char *role;
00035 char *cap;
00036 };
00037
00038 struct attribute {
00039 const char *name;
00040 const char *value;
00041 const char *qualifier;
00042 };
00043
00044 struct contactdata {
00047 char *nick;
00048 char *host;
00049 char *contact;
00050 char *vo;
00051 int port;
00052 char *reserved;
00053 int version;
00054 };
00055
00059 #define TYPE_NODATA 0
00060 #define TYPE_STD 1
00061 #define TYPE_CUSTOM 2
00064 struct voms {
00065 int siglen;
00066 char *signature;
00067 char *user;
00068 char *userca;
00069 char *server;
00070 char *serverca;
00071 char *voname;
00072 char *uri;
00073 char *date1;
00074 char *date2;
00075 int type;
00076 struct data **std;
00077 char *custom;
00078 int datalen;
00079 int version;
00080 char **fqan;
00081 char *serial;
00083
00084 AC *ac;
00085 X509 *holder;
00086 };
00087
00088
00089 #define RECURSE_CHAIN 0
00090 #define RECURSE_NONE 1
00091
00092 #define VERIFY_FULL 0xffffffff
00093 #define VERIFY_NONE 0x00000000
00094 #define VERIFY_DATE 0x00000001
00095 #define VERIFY_NOTARGET 0x00000002
00096 #define VERIFY_KEY 0x00000004
00097 #define VERIFY_SIGN 0x00000008
00098 #define VERIFY_ORDER 0x00000010
00099 #define VERIFY_ID 0x00000020
00100 #define VERIFY_CERTLIST 0x00000040
00101
00104 #define VERR_NONE 0
00105 #define VERR_NOSOCKET 1
00106 #define VERR_NOIDENT 2
00107 #define VERR_COMM 3
00108 #define VERR_PARAM 4
00109 #define VERR_NOEXT 5
00110 #define VERR_NOINIT 6
00111 #define VERR_TIME 7
00112 #define VERR_IDCHECK 8
00114 #define VERR_EXTRAINFO 9
00115 #define VERR_FORMAT 10
00116 #define VERR_NODATA 11
00117 #define VERR_PARSE 12
00118 #define VERR_DIR 13
00119 #define VERR_SIGN 14
00120 #define VERR_SERVER 15
00121 #define VERR_MEM 16
00122 #define VERR_VERIFY 17
00123 #define VERR_TYPE 18
00124 #define VERR_ORDER 19
00125 #define VERR_SERVERCODE 20
00126 #define VERR_NOTAVAIL 21
00128 struct vomsdata {
00129 char *cdir;
00130 char *vdir;
00131 struct voms **data;
00134 char *workvo;
00136 char *extra_data;
00145 int volen;
00146 int extralen;
00147
00148 struct vomsdata *real;
00149 };
00150
00151 extern struct contactdata **VOMS_FindByAlias(struct vomsdata *vd, char *alias,
00152 char *system, char *user,
00153 int *error);
00171 extern struct contactdata **VOMS_FindByVO(struct vomsdata *vd, char *vo,
00172 char *system, char *user,
00173 int *error);
00191 extern void VOMS_DeleteContacts(struct contactdata **list);
00195 extern struct vomsdata *VOMS_Init(char *voms, char *cert);
00209 extern struct voms *VOMS_Copy(struct voms *v, int *error);
00217 extern struct vomsdata *VOMS_CopyAll(struct vomsdata *vd, int *error);
00225 extern void VOMS_Delete(struct voms *v);
00228 extern int VOMS_AddTarget(struct vomsdata *vd, char *target, int *error);
00233 extern void VOMS_FreeTargets(struct vomsdata *vd, int *error);
00237 extern char *VOMS_ListTargets(struct vomsdata *vd, int *error);
00238
00239
00240
00241 extern int VOMS_SetVerificationType(int type, struct vomsdata *vd, int *error);
00242
00243
00244
00245
00246 extern int VOMS_SetLifetime(int length, struct vomsdata *vd,
00247 int *error);
00254 extern void VOMS_Destroy(struct vomsdata *vd);
00257 extern int VOMS_ResetOrder(struct vomsdata *vd, int *error);
00263 extern int VOMS_Ordering(char *order, struct vomsdata *vd, int *error);
00273 extern int VOMS_Contact(char *hostname, int port, char *servsubject,
00274 char *command, struct vomsdata *vd, int *error);
00287 extern int VOMS_ContactRaw(char *hostname, int port, char *servsubject,
00288 char *command, void **data, int *datalen, int *version,
00289 struct vomsdata *vd, int *error);
00304 extern int VOMS_Retrieve(X509 *cert, STACK_OF(X509) *chain, int how,
00305 struct vomsdata *vd, int *error);
00317 extern int VOMS_Import(char *buffer, int buflen, struct vomsdata *vd, int *error);
00328 extern int VOMS_Export(char **buffer, int *buflen, struct vomsdata *vd, int *error);
00335 extern struct voms *VOMS_DefaultData(struct vomsdata *vd, int *error);
00343 extern char *VOMS_ErrorMessage(struct vomsdata *vd, int error, char *buffer, int len);
00353 extern int VOMS_RetrieveEXT(X509_EXTENSION *ext, struct vomsdata *vd, int *error);
00359 extern int VOMS_RetrieveFromCred(gss_cred_id_t cred, int how, struct vomsdata *vd, int *error);
00366 extern int VOMS_RetrieveFromFile(FILE *file, int how, struct vomsdata *vd, int *error);
00373 extern int VOMS_RetrieveFromCtx(gss_ctx_id_t ctx, int how, struct vomsdata *vd, int *error);
00380 extern int VOMS_RetrieveFromProxy(int how, struct vomsdata *vd, int *error);
00386 extern int VOMS_GetAttributeSourcesNumber(struct voms *v, struct vomsdata *vd, int *error);
00387 extern int VOMS_GetAttributeSourceHandle(struct voms *v, int num, struct vomsdata *vd, int *error);
00388 extern const char *VOMS_GetAttributeGrantor(struct voms *v, int handle, struct vomsdata *vd, int *error);
00389 extern int VOMS_GetAttributesNumber(struct voms *v, int handle, struct vomsdata *vd, int *error);
00390 extern int VOMS_GetAttribute(struct voms *v, int handle, int num, struct attribute *at, struct vomsdata *vd, int *error);
00391
00392 extern struct vomsdata *VOMS_Duplicate(struct vomsdata *vd);
00393 extern AC *VOMS_GetAC(struct voms *v);
00394
00395 int getMajorVersionNumber(void);
00396 int getMinorVersionNumber(void);
00397 int getPatchVersionNumber(void);
00398
00399 extern int VOMS_SetVerificationTime(time_t verificationtime, struct vomsdata *vd, int *error);
00400 extern char **VOMS_GetTargetsList(struct voms *v, struct vomsdata *vd, int *error);
00401 extern void VOMS_FreeTargetsList(char **);
00402
00403 #endif
00404
00405