• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copied from Firefox source extensions/auth/gssapi.h
3  */
4 
5 /* ***** BEGIN LICENSE BLOCK *****
6  * Copyright 1993 by OpenVision Technologies, Inc.
7  *
8  * Permission to use, copy, modify, distribute, and sell this software
9  * and its documentation for any purpose is hereby granted without fee,
10  * provided that the above copyright notice appears in all copies and
11  * that both that copyright notice and this permission notice appear in
12  * supporting documentation, and that the name of OpenVision not be used
13  * in advertising or publicity pertaining to distribution of the software
14  * without specific, written prior permission. OpenVision makes no
15  * representations about the suitability of this software for any
16  * purpose.  It is provided "as is" without express or implied warranty.
17  *
18  * OPENVISION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
19  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
20  * EVENT SHALL OPENVISION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
21  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
22  * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
23  * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
24  * PERFORMANCE OF THIS SOFTWARE.
25  ****** END LICENSE BLOCK ***** */
26 
27 #ifndef GSSAPI_H_
28 #define GSSAPI_H_
29 
30 /*
31  * Also define _GSSAPI_H_ as that is what the Kerberos 5 code defines and
32  * what header files on some systems look for.
33  */
34 #define _GSSAPI_H_
35 
36 /*
37  * On Mac OS X, Kerberos/Kerberos.h is used to gain access to certain
38  * system-specific Kerberos functions, but on 10.4, that file also brings
39  * in other headers that conflict with this one.
40  */
41 #define _GSSAPI_GENERIC_H_
42 #define _GSSAPI_KRB5_H_
43 
44 /*
45  * Define windows specific needed parameters.
46  */
47 
48 #ifndef GSS_CALLCONV
49 #if defined(_WIN32)
50 #define GSS_CALLCONV __stdcall
51 #define GSS_CALLCONV_C __cdecl
52 #else
53 #define GSS_CALLCONV
54 #define GSS_CALLCONV_C
55 #endif
56 #endif /* GSS_CALLCONV */
57 
58 #ifdef GSS_USE_FUNCTION_POINTERS
59 #ifdef _WIN32
60 #undef GSS_CALLCONV
61 #define GSS_CALLCONV
62 #define GSS_FUNC(f) (__stdcall *f##_type)
63 #else
64 #define GSS_FUNC(f) (*f##_type)
65 #endif
66 #define GSS_MAKE_TYPEDEF typedef
67 #else
68 #define GSS_FUNC(f) f
69 #define GSS_MAKE_TYPEDEF
70 #endif
71 
72 /*
73  * First, include stddef.h to get size_t defined.
74  */
75 #include <stddef.h>
76 
77 /*
78  * Configure set the following
79  */
80 
81 #ifndef SIZEOF_LONG
82 #undef SIZEOF_LONG
83 #endif
84 #ifndef SIZEOF_SHORT
85 #undef SIZEOF_SHORT
86 #endif
87 
88 #ifndef EXTERN_C_BEGIN
89 #ifdef __cplusplus
90 #define EXTERN_C_BEGIN extern "C" {
91 #define EXTERN_C_END }
92 #else
93 #define EXTERN_C_BEGIN
94 #define EXTERN_C_END
95 #endif
96 #endif
97 
98 EXTERN_C_BEGIN
99 
100 /*
101  * If the platform supports the xom.h header file, it should be
102  * included here.
103  */
104 /* #include <xom.h> */
105 
106 
107 /*
108  * Now define the three implementation-dependent types.
109  */
110 
111 typedef void * gss_name_t ;
112 typedef void * gss_ctx_id_t ;
113 typedef void * gss_cred_id_t ;
114 
115 
116 /*
117  * The following type must be defined as the smallest natural
118  * unsigned integer supported by the platform that has at least
119  * 32 bits of precision.
120  */
121 
122 #if SIZEOF_LONG == 4
123 typedef unsigned long gss_uint32;
124 #elif SIZEOF_SHORT == 4
125 typedef unsigned short gss_uint32;
126 #else
127 typedef unsigned int gss_uint32;
128 #endif
129 
130 #ifdef OM_STRING
131 
132 /*
133  * We have included the xom.h header file.  Verify that OM_uint32
134  * is defined correctly.
135  */
136 
137 #if sizeof(gss_uint32) != sizeof(OM_uint32)
138 #error Incompatible definition of OM_uint32 from xom.h
139 #endif
140 
141 typedef OM_object_identifier gss_OID_desc, *gss_OID;
142 
143 #else /* !OM_STRING */
144 
145 /*
146  * We can't use X/Open definitions, so roll our own.
147  */
148 typedef gss_uint32 OM_uint32;
149 typedef struct gss_OID_desc_struct {
150   OM_uint32 length;
151   void *elements;
152 } gss_OID_desc, *gss_OID;
153 
154 #endif /* !OM_STRING */
155 
156 typedef struct gss_OID_set_desc_struct  {
157   size_t     count;
158   gss_OID    elements;
159 } gss_OID_set_desc, *gss_OID_set;
160 
161 
162 /*
163  * For now, define a QOP-type as an OM_uint32
164  */
165 typedef OM_uint32 gss_qop_t;
166 
167 typedef int gss_cred_usage_t;
168 
169 
170 typedef struct gss_buffer_desc_struct {
171   size_t length;
172   void *value;
173 } gss_buffer_desc, *gss_buffer_t;
174 
175 typedef struct gss_channel_bindings_struct {
176   OM_uint32 initiator_addrtype;
177   gss_buffer_desc initiator_address;
178   OM_uint32 acceptor_addrtype;
179   gss_buffer_desc acceptor_address;
180   gss_buffer_desc application_data;
181 } *gss_channel_bindings_t;
182 
183 
184 /*
185  * Flag bits for context-level services.
186  */
187 #define GSS_C_DELEG_FLAG 1
188 #define GSS_C_MUTUAL_FLAG 2
189 #define GSS_C_REPLAY_FLAG 4
190 #define GSS_C_SEQUENCE_FLAG 8
191 #define GSS_C_CONF_FLAG 16
192 #define GSS_C_INTEG_FLAG 32
193 #define GSS_C_ANON_FLAG 64
194 #define GSS_C_PROT_READY_FLAG 128
195 #define GSS_C_TRANS_FLAG 256
196 
197 /*
198  * Credential usage options
199  */
200 #define GSS_C_BOTH 0
201 #define GSS_C_INITIATE 1
202 #define GSS_C_ACCEPT 2
203 
204 /*
205  * Status code types for gss_display_status
206  */
207 #define GSS_C_GSS_CODE 1
208 #define GSS_C_MECH_CODE 2
209 
210 /*
211  * The constant definitions for channel-bindings address families
212  */
213 #define GSS_C_AF_UNSPEC     0
214 #define GSS_C_AF_LOCAL      1
215 #define GSS_C_AF_INET       2
216 #define GSS_C_AF_IMPLINK    3
217 #define GSS_C_AF_PUP        4
218 #define GSS_C_AF_CHAOS      5
219 #define GSS_C_AF_NS         6
220 #define GSS_C_AF_NBS        7
221 #define GSS_C_AF_ECMA       8
222 #define GSS_C_AF_DATAKIT    9
223 #define GSS_C_AF_CCITT      10
224 #define GSS_C_AF_SNA        11
225 #define GSS_C_AF_DECnet     12
226 #define GSS_C_AF_DLI        13
227 #define GSS_C_AF_LAT        14
228 #define GSS_C_AF_HYLINK     15
229 #define GSS_C_AF_APPLETALK  16
230 #define GSS_C_AF_BSC        17
231 #define GSS_C_AF_DSS        18
232 #define GSS_C_AF_OSI        19
233 #define GSS_C_AF_X25        21
234 
235 #define GSS_C_AF_NULLADDR   255
236 
237 /*
238  * Various Null values
239  */
240 #define GSS_C_NO_NAME ((gss_name_t) 0)
241 #define GSS_C_NO_BUFFER ((gss_buffer_t) 0)
242 #define GSS_C_NO_OID ((gss_OID) 0)
243 #define GSS_C_NO_OID_SET ((gss_OID_set) 0)
244 #define GSS_C_NO_CONTEXT ((gss_ctx_id_t) 0)
245 #define GSS_C_NO_CREDENTIAL ((gss_cred_id_t) 0)
246 #define GSS_C_NO_CHANNEL_BINDINGS ((gss_channel_bindings_t) 0)
247 #define GSS_C_EMPTY_BUFFER {0, NULL}
248 
249 /*
250  * Some alternate names for a couple of the above
251  * values.  These are defined for V1 compatibility.
252  */
253 #define GSS_C_NULL_OID GSS_C_NO_OID
254 #define GSS_C_NULL_OID_SET GSS_C_NO_OID_SET
255 
256 /*
257  * Define the default Quality of Protection for per-message
258  * services.  Note that an implementation that offers multiple
259  * levels of QOP may define GSS_C_QOP_DEFAULT to be either zero
260  * (as done here) to mean "default protection", or to a specific
261  * explicit QOP value.  However, a value of 0 should always be
262  * interpreted by a GSSAPI implementation as a request for the
263  * default protection level.
264  */
265 #define GSS_C_QOP_DEFAULT 0
266 
267 /*
268  * Expiration time of 2^32-1 seconds means infinite lifetime for a
269  * credential or security context
270  */
271 #define GSS_C_INDEFINITE 0xfffffffful
272 
273 /*
274  * The implementation must reserve static storage for a
275  * gss_OID_desc object containing the value
276  * {10, (void *)"\x2a\x86\x48\x86\xf7\x12"
277  *              "\x01\x02\x01\x01"},
278  * corresponding to an object-identifier value of
279  * {iso(1) member-body(2) United States(840) mit(113554)
280  *  infosys(1) gssapi(2) generic(1) user_name(1)}.  The constant
281  * GSS_C_NT_USER_NAME should be initialized to point
282  * to that gss_OID_desc.
283  */
284 extern gss_OID GSS_C_NT_USER_NAME;
285 
286 /*
287  * The implementation must reserve static storage for a
288  * gss_OID_desc object containing the value
289  * {10, (void *)"\x2a\x86\x48\x86\xf7\x12"
290  *              "\x01\x02\x01\x02"},
291  * corresponding to an object-identifier value of
292  * {iso(1) member-body(2) United States(840) mit(113554)
293  *  infosys(1) gssapi(2) generic(1) machine_uid_name(2)}.
294  * The constant GSS_C_NT_MACHINE_UID_NAME should be
295  * initialized to point to that gss_OID_desc.
296  */
297 extern gss_OID GSS_C_NT_MACHINE_UID_NAME;
298 
299 /*
300  * The implementation must reserve static storage for a
301  * gss_OID_desc object containing the value
302  * {10, (void *)"\x2a\x86\x48\x86\xf7\x12"
303  *              "\x01\x02\x01\x03"},
304  * corresponding to an object-identifier value of
305  * {iso(1) member-body(2) United States(840) mit(113554)
306  *  infosys(1) gssapi(2) generic(1) string_uid_name(3)}.
307  * The constant GSS_C_NT_STRING_UID_NAME should be
308  * initialized to point to that gss_OID_desc.
309  */
310 extern gss_OID GSS_C_NT_STRING_UID_NAME;
311 
312 /*
313  * The implementation must reserve static storage for a
314  * gss_OID_desc object containing the value
315  * {6, (void *)"\x2b\x06\x01\x05\x06\x02"},
316  * corresponding to an object-identifier value of
317  * {iso(1) org(3) dod(6) internet(1) security(5)
318  * nametypes(6) gss-host-based-services(2)).  The constant
319  * GSS_C_NT_HOSTBASED_SERVICE_X should be initialized to point
320  * to that gss_OID_desc.  This is a deprecated OID value, and
321  * implementations wishing to support hostbased-service names
322  * should instead use the GSS_C_NT_HOSTBASED_SERVICE OID,
323  * defined below, to identify such names;
324  * GSS_C_NT_HOSTBASED_SERVICE_X should be accepted a synonym
325  * for GSS_C_NT_HOSTBASED_SERVICE when presented as an input
326  * parameter, but should not be emitted by GSSAPI
327  * implementations
328  */
329 extern gss_OID GSS_C_NT_HOSTBASED_SERVICE_X;
330 
331 /*
332  * The implementation must reserve static storage for a
333  * gss_OID_desc object containing the value
334  * {10, (void *)"\x2a\x86\x48\x86\xf7\x12"
335  *              "\x01\x02\x01\x04"}, corresponding to an
336  * object-identifier value of {iso(1) member-body(2)
337  * Unites States(840) mit(113554) infosys(1) gssapi(2)
338  * generic(1) service_name(4)}.  The constant
339  * GSS_C_NT_HOSTBASED_SERVICE should be initialized
340  * to point to that gss_OID_desc.
341  */
342 extern gss_OID GSS_C_NT_HOSTBASED_SERVICE;
343 
344 
345 /*
346  * The implementation must reserve static storage for a
347  * gss_OID_desc object containing the value
348  * {6, (void *)"\x2b\x06\01\x05\x06\x03"},
349  * corresponding to an object identifier value of
350  * {1(iso), 3(org), 6(dod), 1(internet), 5(security),
351  * 6(nametypes), 3(gss-anonymous-name)}.  The constant
352  * and GSS_C_NT_ANONYMOUS should be initialized to point
353  * to that gss_OID_desc.
354  */
355 extern gss_OID GSS_C_NT_ANONYMOUS;
356 
357 /*
358  * The implementation must reserve static storage for a
359  * gss_OID_desc object containing the value
360  * {6, (void *)"\x2b\x06\x01\x05\x06\x04"},
361  * corresponding to an object-identifier value of
362  * {1(iso), 3(org), 6(dod), 1(internet), 5(security),
363  * 6(nametypes), 4(gss-api-exported-name)}.  The constant
364  * GSS_C_NT_EXPORT_NAME should be initialized to point
365  * to that gss_OID_desc.
366  */
367 extern gss_OID GSS_C_NT_EXPORT_NAME;
368 
369 /* Major status codes */
370 
371 #define GSS_S_COMPLETE 0
372 
373 /*
374  * Some "helper" definitions to make the status code macros obvious.
375  */
376 #define GSS_C_CALLING_ERROR_OFFSET 24
377 #define GSS_C_ROUTINE_ERROR_OFFSET 16
378 #define GSS_C_SUPPLEMENTARY_OFFSET 0
379 #define GSS_C_CALLING_ERROR_MASK 0377ul
380 #define GSS_C_ROUTINE_ERROR_MASK 0377ul
381 #define GSS_C_SUPPLEMENTARY_MASK 0177777ul
382 
383 /*
384  * The macros that test status codes for error conditions.
385  * Note that the GSS_ERROR() macro has changed slightly from
386  * the V1 GSSAPI so that it now evaluates its argument
387  * only once.
388  */
389 #define GSS_CALLING_ERROR(x) \
390 (x & (GSS_C_CALLING_ERROR_MASK << GSS_C_CALLING_ERROR_OFFSET))
391 #define GSS_ROUTINE_ERROR(x) \
392      (x & (GSS_C_ROUTINE_ERROR_MASK << GSS_C_ROUTINE_ERROR_OFFSET))
393 #define GSS_SUPPLEMENTARY_INFO(x) \
394      (x & (GSS_C_SUPPLEMENTARY_MASK << GSS_C_SUPPLEMENTARY_OFFSET))
395 #define GSS_ERROR(x) \
396      (x & ((GSS_C_CALLING_ERROR_MASK << GSS_C_CALLING_ERROR_OFFSET) | \
397            (GSS_C_ROUTINE_ERROR_MASK << GSS_C_ROUTINE_ERROR_OFFSET)))
398 
399 /*
400  * Now the actual status code definitions
401  */
402 
403 /*
404  * Calling errors:
405  */
406 #define GSS_S_CALL_INACCESSIBLE_READ \
407      (1ul << GSS_C_CALLING_ERROR_OFFSET)
408 #define GSS_S_CALL_INACCESSIBLE_WRITE \
409      (2ul << GSS_C_CALLING_ERROR_OFFSET)
410 #define GSS_S_CALL_BAD_STRUCTURE \
411      (3ul << GSS_C_CALLING_ERROR_OFFSET)
412 
413 /*
414  * Routine errors:
415  */
416 #define GSS_S_BAD_MECH (1ul << GSS_C_ROUTINE_ERROR_OFFSET)
417 #define GSS_S_BAD_NAME (2ul << GSS_C_ROUTINE_ERROR_OFFSET)
418 #define GSS_S_BAD_NAMETYPE (3ul << GSS_C_ROUTINE_ERROR_OFFSET)
419 #define GSS_S_BAD_BINDINGS (4ul << GSS_C_ROUTINE_ERROR_OFFSET)
420 #define GSS_S_BAD_STATUS (5ul << GSS_C_ROUTINE_ERROR_OFFSET)
421 #define GSS_S_BAD_SIG (6ul << GSS_C_ROUTINE_ERROR_OFFSET)
422 #define GSS_S_BAD_MIC GSS_S_BAD_SIG
423 #define GSS_S_NO_CRED (7ul << GSS_C_ROUTINE_ERROR_OFFSET)
424 #define GSS_S_NO_CONTEXT (8ul << GSS_C_ROUTINE_ERROR_OFFSET)
425 #define GSS_S_DEFECTIVE_TOKEN (9ul << GSS_C_ROUTINE_ERROR_OFFSET)
426 #define GSS_S_DEFECTIVE_CREDENTIAL (10ul << GSS_C_ROUTINE_ERROR_OFFSET)
427 #define GSS_S_CREDENTIALS_EXPIRED (11ul << GSS_C_ROUTINE_ERROR_OFFSET)
428 #define GSS_S_CONTEXT_EXPIRED (12ul << GSS_C_ROUTINE_ERROR_OFFSET)
429 #define GSS_S_FAILURE (13ul << GSS_C_ROUTINE_ERROR_OFFSET)
430 #define GSS_S_BAD_QOP (14ul << GSS_C_ROUTINE_ERROR_OFFSET)
431 #define GSS_S_UNAUTHORIZED (15ul << GSS_C_ROUTINE_ERROR_OFFSET)
432 #define GSS_S_UNAVAILABLE (16ul << GSS_C_ROUTINE_ERROR_OFFSET)
433 #define GSS_S_DUPLICATE_ELEMENT (17ul << GSS_C_ROUTINE_ERROR_OFFSET)
434 #define GSS_S_NAME_NOT_MN (18ul << GSS_C_ROUTINE_ERROR_OFFSET)
435 
436 /*
437  * Supplementary info bits:
438  */
439 #define GSS_S_CONTINUE_NEEDED (1ul << (GSS_C_SUPPLEMENTARY_OFFSET + 0))
440 #define GSS_S_DUPLICATE_TOKEN (1ul << (GSS_C_SUPPLEMENTARY_OFFSET + 1))
441 #define GSS_S_OLD_TOKEN (1ul << (GSS_C_SUPPLEMENTARY_OFFSET + 2))
442 #define GSS_S_UNSEQ_TOKEN (1ul << (GSS_C_SUPPLEMENTARY_OFFSET + 3))
443 #define GSS_S_GAP_TOKEN (1ul << (GSS_C_SUPPLEMENTARY_OFFSET + 4))
444 
445 /*
446  * Finally, function prototypes for the GSS-API routines.
447  */
448 
449 GSS_MAKE_TYPEDEF
450 OM_uint32
451 GSS_CALLCONV GSS_FUNC(gss_acquire_cred)
452 (OM_uint32 *,             /*  minor_status */
453  const gss_name_t,        /* desired_name */
454  OM_uint32,               /* time_req */
455  const gss_OID_set,       /* desired_mechs */
456  gss_cred_usage_t,        /* cred_usage */
457  gss_cred_id_t *,         /* output_cred_handle */
458  gss_OID_set *,           /* actual_mechs */
459  OM_uint32 *              /* time_rec */
460  );
461 
462 GSS_MAKE_TYPEDEF
463 OM_uint32
464 GSS_CALLCONV GSS_FUNC(gss_release_cred)
465 (OM_uint32 *,             /* minor_status */
466  gss_cred_id_t *          /* cred_handle */
467  );
468 
469 GSS_MAKE_TYPEDEF
470 OM_uint32
471 GSS_CALLCONV GSS_FUNC(gss_init_sec_context)
472 (OM_uint32 *,             /* minor_status */
473  const gss_cred_id_t,     /* initiator_cred_handle */
474  gss_ctx_id_t *,          /* context_handle */
475  const gss_name_t,        /* target_name */
476  const gss_OID,           /* mech_type */
477  OM_uint32,               /* req_flags */
478  OM_uint32,               /* time_req */
479  const gss_channel_bindings_t, /* input_chan_bindings */
480  const gss_buffer_t,      /* input_token */
481  gss_OID *,               /* actual_mech_type */
482  gss_buffer_t,            /* output_token */
483  OM_uint32 *,             /* ret_flags */
484  OM_uint32 *              /* time_rec */
485  );
486 
487 GSS_MAKE_TYPEDEF
488 OM_uint32
489 GSS_CALLCONV GSS_FUNC(gss_accept_sec_context)
490 (OM_uint32 *,             /* minor_status */
491  gss_ctx_id_t *,          /* context_handle */
492  const gss_cred_id_t,     /* acceptor_cred_handle */
493  const gss_buffer_t,      /* input_token_buffer */
494  const gss_channel_bindings_t, /* input_chan_bindings */
495  gss_name_t *,            /* src_name */
496  gss_OID *,               /* mech_type */
497  gss_buffer_t,            /* output_token */
498  OM_uint32 *,             /* ret_flags */
499  OM_uint32 *,             /* time_rec */
500  gss_cred_id_t *          /* delegated_cred_handle */
501  );
502 
503 GSS_MAKE_TYPEDEF
504 OM_uint32
505 GSS_CALLCONV GSS_FUNC(gss_process_context_token)
506 (OM_uint32 *,             /* minor_status */
507  const gss_ctx_id_t,      /* context_handle */
508  const gss_buffer_t       /* token_buffer */
509  );
510 
511 GSS_MAKE_TYPEDEF
512 OM_uint32
513 GSS_CALLCONV GSS_FUNC(gss_delete_sec_context)
514 (OM_uint32 *,             /* minor_status */
515  gss_ctx_id_t *,          /* context_handle */
516  gss_buffer_t             /* output_token */
517  );
518 
519 GSS_MAKE_TYPEDEF
520 OM_uint32
521 GSS_CALLCONV GSS_FUNC(gss_context_time)
522 (OM_uint32 *,             /* minor_status */
523  const gss_ctx_id_t,      /* context_handle */
524  OM_uint32 *              /* time_rec */
525  );
526 
527 GSS_MAKE_TYPEDEF
528 OM_uint32
529 GSS_CALLCONV GSS_FUNC(gss_get_mic)
530 (OM_uint32 *,             /* minor_status */
531  const gss_ctx_id_t,      /* context_handle */
532  gss_qop_t,               /* qop_req */
533  const gss_buffer_t,      /* message_buffer */
534  gss_buffer_t             /* message_token */
535  );
536 
537 
538 GSS_MAKE_TYPEDEF
539 OM_uint32
540 GSS_CALLCONV GSS_FUNC(gss_verify_mic)
541 (OM_uint32 *,             /* minor_status */
542  const gss_ctx_id_t,      /* context_handle */
543  const gss_buffer_t,      /* message_buffer */
544  const gss_buffer_t,      /* token_buffer */
545  gss_qop_t *              /* qop_state */
546  );
547 
548 GSS_MAKE_TYPEDEF
549 OM_uint32
550 GSS_CALLCONV GSS_FUNC(gss_wrap)
551 (OM_uint32 *,             /* minor_status */
552  const gss_ctx_id_t,      /* context_handle */
553  int,                     /* conf_req_flag */
554  gss_qop_t,               /* qop_req */
555  const gss_buffer_t,      /* input_message_buffer */
556  int *,                   /* conf_state */
557  gss_buffer_t             /* output_message_buffer */
558  );
559 
560 
561 GSS_MAKE_TYPEDEF
562 OM_uint32
563 GSS_CALLCONV GSS_FUNC(gss_unwrap)
564 (OM_uint32 *,             /* minor_status */
565  const gss_ctx_id_t,      /* context_handle */
566  const gss_buffer_t,      /* input_message_buffer */
567  gss_buffer_t,            /* output_message_buffer */
568  int *,                   /* conf_state */
569  gss_qop_t *              /* qop_state */
570  );
571 
572 GSS_MAKE_TYPEDEF
573 OM_uint32
574 GSS_CALLCONV GSS_FUNC(gss_display_status)
575 (OM_uint32 *,             /* minor_status */
576  OM_uint32,               /* status_value */
577  int,                     /* status_type */
578  const gss_OID,           /* mech_type */
579  OM_uint32 *,             /* message_context */
580  gss_buffer_t             /* status_string */
581  );
582 
583 GSS_MAKE_TYPEDEF
584 OM_uint32
585 GSS_CALLCONV GSS_FUNC(gss_indicate_mechs)
586 (OM_uint32 *,             /* minor_status */
587  gss_OID_set *            /* mech_set */
588  );
589 
590 GSS_MAKE_TYPEDEF
591 OM_uint32
592 GSS_CALLCONV GSS_FUNC(gss_compare_name)
593 (OM_uint32 *,             /* minor_status */
594  const gss_name_t,        /* name1 */
595  const gss_name_t,        /* name2 */
596  int *                    /* name_equal */
597  );
598 
599 GSS_MAKE_TYPEDEF
600 OM_uint32
601 GSS_CALLCONV GSS_FUNC(gss_display_name)
602 (OM_uint32 *,             /* minor_status */
603  const gss_name_t,        /* input_name */
604  gss_buffer_t,            /* output_name_buffer */
605  gss_OID *                /* output_name_type */
606  );
607 
608 GSS_MAKE_TYPEDEF
609 OM_uint32
610 GSS_CALLCONV GSS_FUNC(gss_import_name)
611 (OM_uint32 *,             /* minor_status */
612  const gss_buffer_t,      /* input_name_buffer */
613  const gss_OID,           /* input_name_type */
614  gss_name_t *             /* output_name */
615  );
616 
617 GSS_MAKE_TYPEDEF
618 OM_uint32
619 GSS_CALLCONV GSS_FUNC(gss_export_name)
620 (OM_uint32  *,            /* minor_status */
621  const gss_name_t,        /* input_name */
622  gss_buffer_t             /* exported_name */
623  );
624 
625 GSS_MAKE_TYPEDEF
626 OM_uint32
627 GSS_CALLCONV GSS_FUNC(gss_release_name)
628 (OM_uint32 *,             /* minor_status */
629  gss_name_t *             /* input_name */
630  );
631 
632 GSS_MAKE_TYPEDEF
633 OM_uint32
634 GSS_CALLCONV GSS_FUNC(gss_release_buffer)
635 (OM_uint32 *,             /* minor_status */
636  gss_buffer_t             /* buffer */
637  );
638 
639 GSS_MAKE_TYPEDEF
640 OM_uint32
641 GSS_CALLCONV GSS_FUNC(gss_release_oid_set)
642 (OM_uint32 *,             /* minor_status */
643  gss_OID_set *            /* set */
644  );
645 
646 GSS_MAKE_TYPEDEF
647 OM_uint32
648 GSS_CALLCONV GSS_FUNC(gss_inquire_cred)
649 (OM_uint32 *,             /* minor_status */
650  const gss_cred_id_t,     /* cred_handle */
651  gss_name_t *,            /* name */
652  OM_uint32 *,             /* lifetime */
653  gss_cred_usage_t *,      /* cred_usage */
654  gss_OID_set *            /* mechanisms */
655  );
656 
657 GSS_MAKE_TYPEDEF
658 OM_uint32
659 GSS_CALLCONV GSS_FUNC(gss_inquire_context)
660 (OM_uint32 *,             /* minor_status */
661  const gss_ctx_id_t,      /* context_handle */
662  gss_name_t *,            /* src_name */
663  gss_name_t *,            /* targ_name */
664  OM_uint32 *,             /* lifetime_rec */
665  gss_OID *,               /* mech_type */
666  OM_uint32 *,             /* ctx_flags */
667  int *,                   /* locally_initiated */
668  int *                    /* open */
669  );
670 
671 GSS_MAKE_TYPEDEF
672 OM_uint32
673 GSS_CALLCONV GSS_FUNC(gss_wrap_size_limit)
674 (OM_uint32 *,             /* minor_status */
675  const gss_ctx_id_t,      /* context_handle */
676  int,                     /* conf_req_flag */
677  gss_qop_t,               /* qop_req */
678  OM_uint32,               /* req_output_size */
679  OM_uint32 *              /* max_input_size */
680  );
681 
682 GSS_MAKE_TYPEDEF
683 OM_uint32
684 GSS_CALLCONV GSS_FUNC(gss_add_cred)
685 (OM_uint32 *,             /* minor_status */
686  const gss_cred_id_t,     /* input_cred_handle */
687  const gss_name_t,        /* desired_name */
688  const gss_OID,           /* desired_mech */
689  gss_cred_usage_t,        /* cred_usage */
690  OM_uint32,               /* initiator_time_req */
691  OM_uint32,               /* acceptor_time_req */
692  gss_cred_id_t *,         /* output_cred_handle */
693  gss_OID_set *,           /* actual_mechs */
694  OM_uint32 *,             /* initiator_time_rec */
695  OM_uint32 *              /* acceptor_time_rec */
696  );
697 
698 GSS_MAKE_TYPEDEF
699 OM_uint32
700 GSS_CALLCONV GSS_FUNC(gss_inquire_cred_by_mech)
701 (OM_uint32 *,             /* minor_status */
702  const gss_cred_id_t,     /* cred_handle */
703  const gss_OID,           /* mech_type */
704  gss_name_t *,            /* name */
705  OM_uint32 *,             /* initiator_lifetime */
706  OM_uint32 *,             /* acceptor_lifetime */
707  gss_cred_usage_t *       /* cred_usage */
708  );
709 
710 GSS_MAKE_TYPEDEF
711 OM_uint32
712 GSS_CALLCONV GSS_FUNC(gss_export_sec_context)
713 (OM_uint32 *,             /* minor_status */
714  gss_ctx_id_t *,          /* context_handle */
715  gss_buffer_t             /* interprocess_token */
716  );
717 
718 GSS_MAKE_TYPEDEF
719 OM_uint32
720 GSS_CALLCONV GSS_FUNC(gss_import_sec_context)
721 (OM_uint32 *,             /* minor_status */
722  const gss_buffer_t,      /* interprocess_token */
723  gss_ctx_id_t *           /* context_handle */
724  );
725 
726 GSS_MAKE_TYPEDEF
727 OM_uint32
728 GSS_CALLCONV GSS_FUNC(gss_create_empty_oid_set)
729 (OM_uint32 *,             /* minor_status */
730  gss_OID_set *            /* oid_set */
731  );
732 
733 GSS_MAKE_TYPEDEF
734 OM_uint32
735 GSS_CALLCONV GSS_FUNC(gss_add_oid_set_member)
736 (OM_uint32 *,             /* minor_status */
737  const gss_OID,           /* member_oid */
738  gss_OID_set *            /* oid_set */
739  );
740 
741 GSS_MAKE_TYPEDEF
742 OM_uint32
743 GSS_CALLCONV GSS_FUNC(gss_test_oid_set_member)
744 (OM_uint32 *,             /* minor_status */
745  const gss_OID,           /* member */
746  const gss_OID_set,       /* set */
747  int *                    /* present */
748  );
749 
750 GSS_MAKE_TYPEDEF
751 OM_uint32
752 GSS_CALLCONV GSS_FUNC(gss_inquire_names_for_mech)
753 (OM_uint32 *,             /* minor_status */
754  const gss_OID,           /* mechanism */
755  gss_OID_set *            /* name_types */
756  );
757 
758 GSS_MAKE_TYPEDEF
759 OM_uint32
760 GSS_CALLCONV GSS_FUNC(gss_inquire_mechs_for_name)
761 (OM_uint32 *,             /* minor_status */
762  const gss_name_t,        /* input_name */
763  gss_OID_set *            /* mech_types */
764  );
765 
766 GSS_MAKE_TYPEDEF
767 OM_uint32
768 GSS_CALLCONV GSS_FUNC(gss_canonicalize_name)
769 (OM_uint32 *,             /* minor_status */
770  const gss_name_t,        /* input_name */
771  const gss_OID,           /* mech_type */
772  gss_name_t *             /* output_name */
773  );
774 
775 GSS_MAKE_TYPEDEF
776 OM_uint32
777 GSS_CALLCONV GSS_FUNC(gss_duplicate_name)
778 (OM_uint32 *,             /* minor_status */
779  const gss_name_t,        /* src_name */
780  gss_name_t *             /* dest_name */
781  );
782 
783    /*
784     * The following routines are obsolete variants of gss_get_mic,
785     * gss_verify_mic, gss_wrap and gss_unwrap.  They should be
786     * provided by GSSAPI V2 implementations for backwards
787     * compatibility with V1 applications.  Distinct entrypoints
788     * (as opposed to #defines) should be provided, both to allow
789     * GSSAPI V1 applications to link against GSSAPI V2 implementations,
790     * and to retain the slight parameter type differences between the
791     * obsolete versions of these routines and their current forms.
792     */
793 
794    GSS_MAKE_TYPEDEF
795    OM_uint32
796    GSS_CALLCONV GSS_FUNC(gss_sign)
797               (OM_uint32 *,        /* minor_status */
798                gss_ctx_id_t,       /* context_handle */
799                int,                /* qop_req */
800                gss_buffer_t,       /* message_buffer */
801                gss_buffer_t        /* message_token */
802               );
803 
804 
805    GSS_MAKE_TYPEDEF
806    OM_uint32
807    GSS_CALLCONV GSS_FUNC(gss_verify)
808               (OM_uint32 *,        /* minor_status */
809                gss_ctx_id_t,       /* context_handle */
810                gss_buffer_t,       /* message_buffer */
811                gss_buffer_t,       /* token_buffer */
812                int *               /* qop_state */
813               );
814 
815    GSS_MAKE_TYPEDEF
816    OM_uint32
817    GSS_CALLCONV GSS_FUNC(gss_seal)
818               (OM_uint32 *,        /* minor_status */
819                gss_ctx_id_t,       /* context_handle */
820                int,                /* conf_req_flag */
821                int,                /* qop_req */
822                gss_buffer_t,       /* input_message_buffer */
823                int *,              /* conf_state */
824                gss_buffer_t        /* output_message_buffer */
825               );
826 
827 
828    GSS_MAKE_TYPEDEF
829    OM_uint32
830    GSS_CALLCONV GSS_FUNC(gss_unseal)
831               (OM_uint32 *,        /* minor_status */
832                gss_ctx_id_t,       /* context_handle */
833                gss_buffer_t,       /* input_message_buffer */
834                gss_buffer_t,       /* output_message_buffer */
835                int *,              /* conf_state */
836                int *               /* qop_state */
837               );
838 
839 
840 
841 EXTERN_C_END
842 
843 #endif /* GSSAPI_H_ */
844 
845