00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef _GLOBUS_GSS_ASSIST_H
00018 #define _GLOBUS_GSS_ASSIST_H
00019
00025 #include "gssapi.h"
00026
00027 #include <stdio.h>
00028 #include <stdlib.h>
00029
00030 #ifdef __cplusplus
00031 extern "C" {
00032 #endif
00033
00034 #ifndef GLOBUS_GLOBAL_DOCUMENT_SET
00035
00039 #endif
00040
00094 #define GLOBUS_GSI_GSS_ASSIST_MODULE (&globus_i_gsi_gss_assist_module)
00095
00096 extern
00097 globus_module_descriptor_t globus_i_gsi_gss_assist_module;
00098
00099 #define _GASL(s) globus_common_i18n_get_string( \
00100 GLOBUS_GSI_GSS_ASSIST_MODULE, \
00101 s)
00102 #include "globus_gss_assist_constants.h"
00103
00104
00105 #define GLOBUS_GSS_ASSIST_TOKEN_ERR_MALLOC 1
00106 #define GLOBUS_GSS_ASSIST_TOKEN_ERR_BAD_SIZE 2
00107 #define GLOBUS_GSS_ASSIST_TOKEN_EOF 3
00108 #define GLOBUS_GSS_ASSIST_TOKEN_NOT_FOUND 4
00109
00110
00111 #ifndef GSS_C_NO_NAME
00112 #define GSS_C_NO_NAME ((gss_name_t *) 0)
00113 #define GSS_ASSIST_KRB5_HACK
00114 #endif
00115
00116
00117
00118 #define GLOBUS_GSS_ASSIST_EX_SEND_WITHOUT_LENGTH 1
00119
00120 typedef struct globus_gss_assist_ex_st
00121 {
00122 void * arg;
00123 int flags;
00124 } globus_gss_assist_ex;
00125
00136 extern int
00137 globus_gss_assist_token_get_fd(
00138 void * arg,
00139 void ** bufp,
00140 size_t * sizep);
00141
00142 extern int
00143 globus_gss_assist_token_send_fd(
00144 void * arg,
00145 void * buf,
00146 size_t size);
00147
00148 extern int
00149 globus_gss_assist_token_send_fd_ex(
00150 void * arg,
00151 void * buf,
00152 size_t size);
00153
00154 extern int
00155 globus_gss_assist_token_send_fd_without_length(
00156 void * arg,
00157 void * buf,
00158 size_t size);
00159
00169 extern OM_uint32
00170 globus_gss_assist_acquire_cred(
00171 OM_uint32 *,
00172 gss_cred_usage_t,
00173 gss_cred_id_t * );
00174
00175 extern
00176 OM_uint32
00177 globus_gss_assist_read_vhost_cred_dir(
00178 OM_uint32 *minor_status,
00179 const char *dir,
00180 gss_cred_id_t **output_credentials_array,
00181 size_t *output_credentials_array_size);
00182
00183 extern OM_uint32
00184 globus_gss_assist_acquire_cred_dir(
00185 OM_uint32 *,
00186 gss_cred_usage_t,
00187 gss_cred_id_t ** ,
00188 size_t);
00189
00190
00191
00192 extern OM_uint32
00193 globus_gss_assist_acquire_cred_ext(
00194 OM_uint32 *,
00195 char *,
00196 OM_uint32,
00197 const gss_OID_set,
00198 gss_cred_usage_t,
00199 gss_cred_id_t *,
00200 gss_OID_set *,
00201 OM_uint32 * );
00202
00215 extern OM_uint32
00216 globus_gss_assist_accept_sec_context(
00217 OM_uint32 *,
00218 gss_ctx_id_t *,
00219 const gss_cred_id_t,
00220 char **,
00221 OM_uint32 *,
00222 int *,
00223 int *,
00224 gss_cred_id_t *,
00225 int (* get_token)(void *, void **, size_t *),
00226 void * get_context,
00227 int (* send_token)(void *, void *, size_t),
00228 void * send_context);
00229
00230
00231
00232
00233
00234 extern OM_uint32
00235 globus_gss_assist_accept_sec_context_async(
00236 OM_uint32 * minor_status,
00237 gss_ctx_id_t * context_handle,
00238 const gss_cred_id_t cred_handle,
00239 char ** src_name_char,
00240 OM_uint32 * ret_flags,
00241 int * user_to_user_flag,
00242 void * input_buffer,
00243 size_t input_buffer_len,
00244 void ** output_bufferp,
00245 size_t * output_buffer_lenp,
00246 gss_cred_id_t * delegated_cred_handle);
00247
00248
00249
00250
00251
00252
00253 extern OM_uint32
00254 globus_gss_assist_init_sec_context(
00255 OM_uint32 *,
00256 const gss_cred_id_t,
00257 gss_ctx_id_t *,
00258 char *,
00259 OM_uint32,
00260 OM_uint32 *,
00261 int *,
00262 int (* get_token)(void *, void **, size_t *),
00263 void * get_arg,
00264 int (* send_token)(void *, void *, size_t),
00265 void * send_arg);
00266
00267
00268
00269
00270
00271 extern OM_uint32
00272 globus_gss_assist_init_sec_context_async(
00273 OM_uint32 * minor_status,
00274 const gss_cred_id_t cred_handle,
00275 gss_ctx_id_t * context_handle,
00276 char * target_name_char,
00277 OM_uint32 req_flags,
00278 OM_uint32 * ret_flags,
00279 void * input_buffer,
00280 size_t input_buffer_len,
00281 void ** output_bufferp,
00282 size_t * output_buffer_lenp);
00283
00293 extern OM_uint32
00294 globus_gss_assist_display_status(
00295 FILE *,
00296 char *,
00297 OM_uint32,
00298 OM_uint32,
00299 int );
00300
00301 extern OM_uint32
00302 globus_gss_assist_display_status_str(
00303 char **,
00304 char *,
00305 OM_uint32,
00306 OM_uint32,
00307 int );
00308
00309
00310
00311
00312
00313 extern OM_uint32
00314 globus_gss_assist_wrap_send(
00315 OM_uint32 * minor_status,
00316 const gss_ctx_id_t context_handle,
00317 char * data,
00318 size_t length,
00319 int * token_status,
00320 int (*gss_assist_send_token)(void *, void *, size_t),
00321 void * gss_assist_send_context,
00322 FILE * fperr);
00323
00324
00325
00326
00327 extern OM_uint32
00328 globus_gss_assist_get_unwrap(
00329 OM_uint32 * minor_status,
00330 const gss_ctx_id_t context_handle,
00331 char ** data,
00332 size_t * length,
00333 int * token_status,
00334 int (*gss_assist_get_token)(void *, void **, size_t *),
00335 void * gss_assist_get_context,
00336 FILE * fperr);
00337
00338
00339
00340
00341
00342 OM_uint32
00343 globus_gss_assist_will_handle_restrictions(
00344 OM_uint32 * minor_status,
00345 gss_ctx_id_t * context_handle);
00346
00347
00348
00349
00350
00351 extern OM_uint32
00352 globus_gss_assist_export_sec_context(
00353 OM_uint32 * minor_status,
00354 gss_ctx_id_t * context_handle,
00355 int * token_status,
00356 int fdp,
00357 FILE * fperr);
00358
00359
00360
00361
00362 extern OM_uint32
00363 globus_gss_assist_import_sec_context(
00364 OM_uint32 * minor_status,
00365 gss_ctx_id_t * context_handle,
00366 int * token_status,
00367 int fdp,
00368 FILE * fperr);
00369
00370
00371 globus_result_t
00372 globus_gss_assist_authorization_host_name(
00373 char * hostname,
00374 gss_name_t * authorization_hostname);
00375
00386 extern int
00387 globus_gss_assist_gridmap(
00388 char * globusidp,
00389 char ** useridp);
00390
00391 extern int
00392 globus_gss_assist_userok(
00393 char * globusid,
00394 char * userid);
00395
00396 extern int
00397 globus_gss_assist_map_local_user(
00398 char * local_user,
00399 char ** globusidp);
00400
00401 globus_result_t
00402 globus_gss_assist_lookup_all_globusid(
00403 char * username,
00404 char ** dns[],
00405 int * dn_count);
00406
00407 globus_result_t
00408 globus_gss_assist_map_and_authorize(
00409 gss_ctx_id_t context,
00410 char * service,
00411 char * desired_identity,
00412 char * identity_buffer,
00413 unsigned int identity_buffer_length);
00414
00415 globus_result_t
00416 globus_gss_assist_map_and_authorize_sharing(
00417 char * shared_user_certificate,
00418 gss_ctx_id_t context,
00419 char * desired_identity,
00420 char * identity_buffer,
00421 unsigned int identity_buffer_length);
00422
00423
00438 #define GlobusGssAssistFreeDNArray(dn_a) \
00439 { \
00440 int __ctr = 0; \
00441 while(dn_a[__ctr] != NULL) \
00442 { \
00443 free(dn_a[__ctr]); \
00444 __ctr++; \
00445 } \
00446 free(dn_a); \
00447 }
00448
00449
00450 #ifdef __cplusplus
00451 }
00452 #endif
00453
00454 #endif