globus_gss_assist  10.21
globus_gss_assist.h
Go to the documentation of this file.
1 /*
2  * Copyright 1999-2006 University of Chicago
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef _GLOBUS_GSS_ASSIST_H
18 #define _GLOBUS_GSS_ASSIST_H
19 
25 #include "gssapi.h"
26 
27 #include <stdio.h>
28 #include <stdlib.h>
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 
34 #ifndef GLOBUS_GLOBAL_DOCUMENT_SET
35 
39 #endif
40 
92 #define GLOBUS_GSI_GSS_ASSIST_MODULE (&globus_i_gsi_gss_assist_module)
93 
94 extern
95 globus_module_descriptor_t globus_i_gsi_gss_assist_module;
96 
97 #define _GASL(s) globus_common_i18n_get_string( \
98  GLOBUS_GSI_GSS_ASSIST_MODULE, \
99  s)
101 
102 
103 #define GLOBUS_GSS_ASSIST_TOKEN_ERR_MALLOC 1
104 #define GLOBUS_GSS_ASSIST_TOKEN_ERR_BAD_SIZE 2
105 #define GLOBUS_GSS_ASSIST_TOKEN_EOF 3
106 #define GLOBUS_GSS_ASSIST_TOKEN_NOT_FOUND 4
107 
108 /* for kerberos v5.1.0.5 compatibility we need this */
109 #ifndef GSS_C_NO_NAME
110 #define GSS_C_NO_NAME ((gss_name_t *) 0)
111 #define GSS_ASSIST_KRB5_HACK
112 #endif
113 
114 /* for the globus_gss_assist_ex flags: */
115 
116 #define GLOBUS_GSS_ASSIST_EX_SEND_WITHOUT_LENGTH 1
117 
118 typedef struct globus_gss_assist_ex_st
119 {
120  void * arg;
121  int flags;
122 } globus_gss_assist_ex;
123 
133 extern int
135  void * arg,
136  void ** bufp,
137  size_t * sizep);
138 
139 extern int
141  void * arg,
142  void * buf,
143  size_t size);
144 
145 extern int
147  void * arg,
148  void * buf,
149  size_t size);
150 
151 extern int
153  void * arg,
154  void * buf,
155  size_t size);
156 
165 extern OM_uint32
167  OM_uint32 *, /* minor_status */
168  gss_cred_usage_t, /* cred_usage */
169  gss_cred_id_t * /* output_cred_handle */);
170 
171 /*
172  * globus_gss_assist_acquire_cred_ext, assist with the gss_acquire_cred
173  */
174 extern OM_uint32
176  OM_uint32 *, /* minor_status */
177  char *, /* desired_name_char */
178  OM_uint32, /* time_req */
179  const gss_OID_set, /* desired_mechs */
180  gss_cred_usage_t, /* cred_usage */
181  gss_cred_id_t *, /* output_cred_handle */
182  gss_OID_set *, /* actual_mechs */
183  OM_uint32 * /* time_rec */);
184 
196 extern OM_uint32
198  OM_uint32 *, /* minor_status */
199  gss_ctx_id_t *, /* context_handle */
200  const gss_cred_id_t, /* acceptor_cred_handle */
201  char **, /* src_name as char ** */
202  OM_uint32 *, /* ret_flags */
203  int *, /* user_to_user_flag */
204  int *, /* token_status */
205  gss_cred_id_t *, /* delegated_cred_handle */
206  int (* get_token)(void *, void **, size_t *),
207  void * get_context,
208  int (* send_token)(void *, void *, size_t),
209  void * send_context);
210 
211 /*
212  * globus_gss_assist_accept_sec_context_async - async version of
213  * globus_gss_assist_accept_sec_context().
214  */
215 extern OM_uint32
217  OM_uint32 * minor_status,
218  gss_ctx_id_t * context_handle,
219  const gss_cred_id_t cred_handle,
220  char ** src_name_char,
221  OM_uint32 * ret_flags,
222  int * user_to_user_flag,
223  void * input_buffer,
224  size_t input_buffer_len,
225  void ** output_bufferp,
226  size_t * output_buffer_lenp,
227  gss_cred_id_t * delegated_cred_handle);
228 
229 /*
230  * globus_gss_assist_init_sec_context - takes care of looping
231  * over multiple tokens using the get and send tokens
232  * routines
233  */
234 extern OM_uint32
236  OM_uint32 *, /* minor_status */
237  const gss_cred_id_t, /* initiator_cred_handle */
238  gss_ctx_id_t *, /* context_handle */
239  char *, /* target_name as char * */
240  OM_uint32, /* req_flags */
241  OM_uint32 *, /* ret_flags */
242  int *, /* token_status */
243  int (* get_token)(void *, void **, size_t *),
244  void * get_arg,
245  int (* send_token)(void *, void *, size_t),
246  void * send_arg);
247 
248 /*
249  * globus_gss_assist_init_sec_context_async - async version of
250  * globus_gss_assist_init_sec_context().
251  */
252 extern OM_uint32
254  OM_uint32 * minor_status,
255  const gss_cred_id_t cred_handle,
256  gss_ctx_id_t * context_handle,
257  char * target_name_char,
258  OM_uint32 req_flags,
259  OM_uint32 * ret_flags,
260  void * input_buffer,
261  size_t input_buffer_len,
262  void ** output_bufferp,
263  size_t * output_buffer_lenp);
264 
273 extern OM_uint32
275  FILE *, /* where to print */
276  char *, /* comment */
277  OM_uint32, /* major_status */
278  OM_uint32, /* minor_status */
279  int /* token_status */);
280 
281 extern OM_uint32
283  char **, /* string returned with newlines */
284  char *, /* comment */
285  OM_uint32, /* major_status */
286  OM_uint32, /* minor_status */
287  int /* token_status */);
288 
289 /*
290  * globus_gss_assist_wrap_send - used to wrap a
291  * simple message and send it
292  */
293 extern OM_uint32
295  OM_uint32 * minor_status,
296  const gss_ctx_id_t context_handle,
297  char * data,
298  size_t length,
299  int * token_status,
300  int (*gss_assist_send_token)(void *, void *, size_t),
301  void * gss_assist_send_context,
302  FILE * fperr);
303 
304 /*
305  * globus_gss_assist_get_unwrap - used to get and unwrap a message
306  */
307 extern OM_uint32
309  OM_uint32 * minor_status,
310  const gss_ctx_id_t context_handle,
311  char ** data,
312  size_t * length,
313  int * token_status,
314  int (*gss_assist_get_token)(void *, void **, size_t *),
315  void * gss_assist_get_context,
316  FILE * fperr);
317 
318 /*
319  * globus_gss_assist_will_handle_restrictions - used to tell OpenSSL
320  * that the application will deal with the restrictions extension
321  */
322 OM_uint32
324  OM_uint32 * minor_status,
325  gss_ctx_id_t * context_handle);
326 
327 
328 /*
329  * globus_gss_assist_import_sec_context - read a security context
330  */
331 extern OM_uint32
333  OM_uint32 * minor_status,
334  gss_ctx_id_t * context_handle,
335  int * token_status,
336  int fdp,
337  FILE * fperr);
338 
339 /*
340  * globus_gss_assist_import_sec_context - read a security context
341  */
342 extern OM_uint32
344  OM_uint32 * minor_status,
345  gss_ctx_id_t * context_handle,
346  int * token_status,
347  int fdp,
348  FILE * fperr);
349 
350 
351 globus_result_t
353  char * hostname,
354  gss_name_t * authorization_hostname);
355 
365 extern int
367  char * globusidp,
368  char ** useridp);
369 
370 extern int
372  char * globusid,
373  char * userid);
374 
375 extern int
377  char * local_user,
378  char ** globusidp);
379 
380 globus_result_t
382  char * username,
383  char ** dns[],
384  int * dn_count);
385 
386 globus_result_t
388  gss_ctx_id_t context,
389  char * service,
390  char * desired_identity,
391  char * identity_buffer,
392  unsigned int identity_buffer_length);
393 
394 globus_result_t
396  char * shared_user_certificate,
397  gss_ctx_id_t context,
398  char * desired_identity,
399  char * identity_buffer,
400  unsigned int identity_buffer_length);
401 
402 
417 #define GlobusGssAssistFreeDNArray(dn_a) \
418 { \
419  int __ctr = 0; \
420  while(dn_a[__ctr] != NULL) \
421  { \
422  free(dn_a[__ctr]); \
423  __ctr++; \
424  } \
425  free(dn_a); \
426 }
427 
428 
429 #ifdef __cplusplus
430 }
431 #endif
432 
433 #endif /* _GLOBUS_GSS_ASSIST_H */
globus_result_t globus_gss_assist_lookup_all_globusid(char *username, char **dns[], int *dn_count)
Look up all Grid IDs associated with a local user ID.
Definition: gridmap.c:1769
OM_uint32 globus_gss_assist_display_status_str(char **, char *, OM_uint32, OM_uint32, int)
Definition: display.c:173
int globus_gss_assist_userok(char *globusid, char *userid)
Gridmap entry existence check.
Definition: gridmap.c:699
OM_uint32 globus_gss_assist_accept_sec_context_async(OM_uint32 *minor_status, gss_ctx_id_t *context_handle, const gss_cred_id_t cred_handle, char **src_name_char, OM_uint32 *ret_flags, int *user_to_user_flag, void *input_buffer, size_t input_buffer_len, void **output_bufferp, size_t *output_buffer_lenp, gss_cred_id_t *delegated_cred_handle)
Accept a Security Context Without Blocking.
Definition: accept.c:323
OM_uint32 globus_gss_assist_get_unwrap(OM_uint32 *minor_status, const gss_ctx_id_t context_handle, char **data, size_t *length, int *token_status, int(*gss_assist_get_token)(void *, void **, size_t *), void *gss_assist_get_context, FILE *fperr)
Get Unwrap.
Definition: unwrap.c:60
OM_uint32 globus_gss_assist_acquire_cred(OM_uint32 *, gss_cred_usage_t, gss_cred_id_t *)
Definition: acquire.c:67
OM_uint32 globus_gss_assist_accept_sec_context(OM_uint32 *, gss_ctx_id_t *, const gss_cred_id_t, char **, OM_uint32 *, int *, int *, gss_cred_id_t *, int(*get_token)(void *, void **, size_t *), void *get_context, int(*send_token)(void *, void *, size_t), void *send_context)
Accept a Security Context.
Definition: accept.c:80
OM_uint32 globus_gss_assist_import_sec_context(OM_uint32 *minor_status, gss_ctx_id_t *context_handle, int *token_status, int fdp, FILE *fperr)
Definition: import_sec_context.c:51
OM_uint32 globus_gss_assist_will_handle_restrictions(OM_uint32 *minor_status, gss_ctx_id_t *context_handle)
Definition: set_sec_context_opts.c:45
OM_uint32 globus_gss_assist_acquire_cred_ext(OM_uint32 *, char *, OM_uint32, const gss_OID_set, gss_cred_usage_t, gss_cred_id_t *, gss_OID_set *, OM_uint32 *)
Definition: acquire.c:95
int globus_gss_assist_token_send_fd(void *arg, void *buf, size_t size)
Send token via a FILE *.
Definition: tokens_f.c:247
globus_result_t globus_gss_assist_map_and_authorize_sharing(char *shared_user_certificate, gss_ctx_id_t context, char *desired_identity, char *identity_buffer, unsigned int identity_buffer_length)
Authorize a particular credential for shared access.
Definition: gridmap.c:2126
OM_uint32 globus_gss_assist_export_sec_context(OM_uint32 *minor_status, gss_ctx_id_t *context_handle, int *token_status, int fdp, FILE *fperr)
Definition: export_sec_context.c:52
OM_uint32 globus_gss_assist_wrap_send(OM_uint32 *minor_status, const gss_ctx_id_t context_handle, char *data, size_t length, int *token_status, int(*gss_assist_send_token)(void *, void *, size_t), void *gss_assist_send_context, FILE *fperr)
Wrap.
Definition: wrap.c:62
int globus_gss_assist_map_local_user(char *local_user, char **globusidp)
Look up the default Grid identity associated with a local user name.
Definition: gridmap.c:836
OM_uint32 globus_gss_assist_init_sec_context(OM_uint32 *, const gss_cred_id_t, gss_ctx_id_t *, char *, OM_uint32, OM_uint32 *, int *, int(*get_token)(void *, void **, size_t *), void *get_arg, int(*send_token)(void *, void *, size_t), void *send_arg)
Definition: init.c:77
int globus_gss_assist_token_send_fd_ex(void *arg, void *buf, size_t size)
Send a token to a FILE *.
Definition: tokens_f.c:319
OM_uint32 globus_gss_assist_init_sec_context_async(OM_uint32 *minor_status, const gss_cred_id_t cred_handle, gss_ctx_id_t *context_handle, char *target_name_char, OM_uint32 req_flags, OM_uint32 *ret_flags, void *input_buffer, size_t input_buffer_len, void **output_bufferp, size_t *output_buffer_lenp)
Definition: init.c:336
int globus_gss_assist_token_get_fd(void *arg, void **bufp, size_t *sizep)
Get token from a FILE *.
Definition: tokens_f.c:50
int globus_gss_assist_gridmap(char *globusidp, char **useridp)
Look up the default mapping for a Grid identity in a gridmap file.
Definition: gridmap.c:552
OM_uint32 globus_gss_assist_display_status(FILE *, char *, OM_uint32, OM_uint32, int)
Definition: display.c:125
globus_result_t globus_gss_assist_map_and_authorize(gss_ctx_id_t context, char *service, char *desired_identity, char *identity_buffer, unsigned int identity_buffer_length)
Authorize the peer of a security context to use a service.
Definition: gridmap.c:1952
globus_result_t globus_gss_assist_authorization_host_name(char *hostname, gss_name_t *authorization_hostname)
Definition: hostname.c:47
Globus GSI GSS Assist Library.
int globus_gss_assist_token_send_fd_without_length(void *arg, void *buf, size_t size)
Send token to a FILE *.
Definition: tokens_f.c:276