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
00092 #define GLOBUS_GSI_GSS_ASSIST_MODULE (&globus_i_gsi_gss_assist_module)
00093
00094 extern
00095 globus_module_descriptor_t globus_i_gsi_gss_assist_module;
00096
00097 #define _GASL(s) globus_common_i18n_get_string( \
00098 GLOBUS_GSI_GSS_ASSIST_MODULE, \
00099 s)
00100 #include "globus_gss_assist_constants.h"
00101
00102
00103 #define GLOBUS_GSS_ASSIST_TOKEN_ERR_MALLOC 1
00104 #define GLOBUS_GSS_ASSIST_TOKEN_ERR_BAD_SIZE 2
00105 #define GLOBUS_GSS_ASSIST_TOKEN_EOF 3
00106 #define GLOBUS_GSS_ASSIST_TOKEN_NOT_FOUND 4
00107
00108
00109 #ifndef GSS_C_NO_NAME
00110 #define GSS_C_NO_NAME ((gss_name_t *) 0)
00111 #define GSS_ASSIST_KRB5_HACK
00112 #endif
00113
00114
00115
00116 #define GLOBUS_GSS_ASSIST_EX_SEND_WITHOUT_LENGTH 1
00117
00118 typedef struct globus_gss_assist_ex_st
00119 {
00120 void * arg;
00121 int flags;
00122 } globus_gss_assist_ex;
00123
00133 extern int
00134 globus_gss_assist_token_get_fd(
00135 void * arg,
00136 void ** bufp,
00137 size_t * sizep);
00138
00139 extern int
00140 globus_gss_assist_token_send_fd(
00141 void * arg,
00142 void * buf,
00143 size_t size);
00144
00145 extern int
00146 globus_gss_assist_token_send_fd_ex(
00147 void * arg,
00148 void * buf,
00149 size_t size);
00150
00151 extern int
00152 globus_gss_assist_token_send_fd_without_length(
00153 void * arg,
00154 void * buf,
00155 size_t size);
00156
00165 extern OM_uint32
00166 globus_gss_assist_acquire_cred(
00167 OM_uint32 *,
00168 gss_cred_usage_t,
00169 gss_cred_id_t * );
00170
00171 extern
00172 OM_uint32
00173 globus_gss_assist_read_vhost_cred_dir(
00174 OM_uint32 *minor_status,
00175 const char *dir,
00176 gss_cred_id_t **output_credentials_array,
00177 size_t *output_credentials_array_size);
00178
00179 extern OM_uint32
00180 globus_gss_assist_acquire_cred_dir(
00181 OM_uint32 *,
00182 gss_cred_usage_t,
00183 gss_cred_id_t ** ,
00184 size_t);
00185
00186
00187
00188 extern OM_uint32
00189 globus_gss_assist_acquire_cred_ext(
00190 OM_uint32 *,
00191 char *,
00192 OM_uint32,
00193 const gss_OID_set,
00194 gss_cred_usage_t,
00195 gss_cred_id_t *,
00196 gss_OID_set *,
00197 OM_uint32 * );
00198
00210 extern OM_uint32
00211 globus_gss_assist_accept_sec_context(
00212 OM_uint32 *,
00213 gss_ctx_id_t *,
00214 const gss_cred_id_t,
00215 char **,
00216 OM_uint32 *,
00217 int *,
00218 int *,
00219 gss_cred_id_t *,
00220 int (* get_token)(void *, void **, size_t *),
00221 void * get_context,
00222 int (* send_token)(void *, void *, size_t),
00223 void * send_context);
00224
00225
00226
00227
00228
00229 extern OM_uint32
00230 globus_gss_assist_accept_sec_context_async(
00231 OM_uint32 * minor_status,
00232 gss_ctx_id_t * context_handle,
00233 const gss_cred_id_t cred_handle,
00234 char ** src_name_char,
00235 OM_uint32 * ret_flags,
00236 int * user_to_user_flag,
00237 void * input_buffer,
00238 size_t input_buffer_len,
00239 void ** output_bufferp,
00240 size_t * output_buffer_lenp,
00241 gss_cred_id_t * delegated_cred_handle);
00242
00243
00244
00245
00246
00247
00248 extern OM_uint32
00249 globus_gss_assist_init_sec_context(
00250 OM_uint32 *,
00251 const gss_cred_id_t,
00252 gss_ctx_id_t *,
00253 char *,
00254 OM_uint32,
00255 OM_uint32 *,
00256 int *,
00257 int (* get_token)(void *, void **, size_t *),
00258 void * get_arg,
00259 int (* send_token)(void *, void *, size_t),
00260 void * send_arg);
00261
00262
00263
00264
00265
00266 extern OM_uint32
00267 globus_gss_assist_init_sec_context_async(
00268 OM_uint32 * minor_status,
00269 const gss_cred_id_t cred_handle,
00270 gss_ctx_id_t * context_handle,
00271 char * target_name_char,
00272 OM_uint32 req_flags,
00273 OM_uint32 * ret_flags,
00274 void * input_buffer,
00275 size_t input_buffer_len,
00276 void ** output_bufferp,
00277 size_t * output_buffer_lenp);
00278
00287 extern OM_uint32
00288 globus_gss_assist_display_status(
00289 FILE *,
00290 char *,
00291 OM_uint32,
00292 OM_uint32,
00293 int );
00294
00295 extern OM_uint32
00296 globus_gss_assist_display_status_str(
00297 char **,
00298 char *,
00299 OM_uint32,
00300 OM_uint32,
00301 int );
00302
00303
00304
00305
00306
00307 extern OM_uint32
00308 globus_gss_assist_wrap_send(
00309 OM_uint32 * minor_status,
00310 const gss_ctx_id_t context_handle,
00311 char * data,
00312 size_t length,
00313 int * token_status,
00314 int (*gss_assist_send_token)(void *, void *, size_t),
00315 void * gss_assist_send_context,
00316 FILE * fperr);
00317
00318
00319
00320
00321 extern OM_uint32
00322 globus_gss_assist_get_unwrap(
00323 OM_uint32 * minor_status,
00324 const gss_ctx_id_t context_handle,
00325 char ** data,
00326 size_t * length,
00327 int * token_status,
00328 int (*gss_assist_get_token)(void *, void **, size_t *),
00329 void * gss_assist_get_context,
00330 FILE * fperr);
00331
00332
00333
00334
00335
00336 OM_uint32
00337 globus_gss_assist_will_handle_restrictions(
00338 OM_uint32 * minor_status,
00339 gss_ctx_id_t * context_handle);
00340
00341
00342
00343
00344
00345 extern OM_uint32
00346 globus_gss_assist_export_sec_context(
00347 OM_uint32 * minor_status,
00348 gss_ctx_id_t * context_handle,
00349 int * token_status,
00350 int fdp,
00351 FILE * fperr);
00352
00353
00354
00355
00356 extern OM_uint32
00357 globus_gss_assist_import_sec_context(
00358 OM_uint32 * minor_status,
00359 gss_ctx_id_t * context_handle,
00360 int * token_status,
00361 int fdp,
00362 FILE * fperr);
00363
00364
00365 globus_result_t
00366 globus_gss_assist_authorization_host_name(
00367 char * hostname,
00368 gss_name_t * authorization_hostname);
00369
00379 extern int
00380 globus_gss_assist_gridmap(
00381 char * globusidp,
00382 char ** useridp);
00383
00384 extern int
00385 globus_gss_assist_userok(
00386 char * globusid,
00387 char * userid);
00388
00389 extern int
00390 globus_gss_assist_map_local_user(
00391 char * local_user,
00392 char ** globusidp);
00393
00394 globus_result_t
00395 globus_gss_assist_lookup_all_globusid(
00396 char * username,
00397 char ** dns[],
00398 int * dn_count);
00399
00400 globus_result_t
00401 globus_gss_assist_map_and_authorize(
00402 gss_ctx_id_t context,
00403 char * service,
00404 char * desired_identity,
00405 char * identity_buffer,
00406 unsigned int identity_buffer_length);
00407
00408 globus_result_t
00409 globus_gss_assist_map_and_authorize_sharing(
00410 char * shared_user_certificate,
00411 gss_ctx_id_t context,
00412 char * desired_identity,
00413 char * identity_buffer,
00414 unsigned int identity_buffer_length);
00415
00416
00431 #define GlobusGssAssistFreeDNArray(dn_a) \
00432 { \
00433 int __ctr = 0; \
00434 while(dn_a[__ctr] != NULL) \
00435 { \
00436 free(dn_a[__ctr]); \
00437 __ctr++; \
00438 } \
00439 free(dn_a); \
00440 }
00441
00442
00443 #ifdef __cplusplus
00444 }
00445 #endif
00446
00447 #endif