gssapi.h revision c407dc5cd9bdc5668497f21b26b09d988ab439de
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
98EXTERN_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
111typedef void * gss_name_t ;
112typedef void * gss_ctx_id_t ;
113typedef 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
123typedef unsigned long gss_uint32;
124#elif SIZEOF_SHORT == 4
125typedef unsigned short gss_uint32;
126#else
127typedef 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
141typedef 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 */
148typedef gss_uint32 OM_uint32;
149typedef struct gss_OID_desc_struct {
150  OM_uint32 length;
151  void *elements;
152} gss_OID_desc, *gss_OID;
153
154#endif /* !OM_STRING */
155
156typedef 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 */
165typedef OM_uint32 gss_qop_t;
166
167typedef int gss_cred_usage_t;
168
169
170typedef struct gss_buffer_desc_struct {
171  size_t length;
172  void *value;
173} gss_buffer_desc, *gss_buffer_t;
174
175typedef 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 */
284extern 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 */
297extern 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 */
310extern 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 */
329extern 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 */
342extern 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 */
355extern 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 */
367extern 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
449GSS_MAKE_TYPEDEF
450OM_uint32
451GSS_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
462GSS_MAKE_TYPEDEF
463OM_uint32
464GSS_CALLCONV GSS_FUNC(gss_release_cred)
465(OM_uint32 *,             /* minor_status */
466 gss_cred_id_t *          /* cred_handle */
467 );
468
469GSS_MAKE_TYPEDEF
470OM_uint32
471GSS_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
487GSS_MAKE_TYPEDEF
488OM_uint32
489GSS_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
503GSS_MAKE_TYPEDEF
504OM_uint32
505GSS_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
511GSS_MAKE_TYPEDEF
512OM_uint32
513GSS_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
519GSS_MAKE_TYPEDEF
520OM_uint32
521GSS_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
527GSS_MAKE_TYPEDEF
528OM_uint32
529GSS_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
538GSS_MAKE_TYPEDEF
539OM_uint32
540GSS_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
548GSS_MAKE_TYPEDEF
549OM_uint32
550GSS_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
561GSS_MAKE_TYPEDEF
562OM_uint32
563GSS_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
572GSS_MAKE_TYPEDEF
573OM_uint32
574GSS_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
583GSS_MAKE_TYPEDEF
584OM_uint32
585GSS_CALLCONV GSS_FUNC(gss_indicate_mechs)
586(OM_uint32 *,             /* minor_status */
587 gss_OID_set *            /* mech_set */
588 );
589
590GSS_MAKE_TYPEDEF
591OM_uint32
592GSS_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
599GSS_MAKE_TYPEDEF
600OM_uint32
601GSS_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
608GSS_MAKE_TYPEDEF
609OM_uint32
610GSS_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
617GSS_MAKE_TYPEDEF
618OM_uint32
619GSS_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
625GSS_MAKE_TYPEDEF
626OM_uint32
627GSS_CALLCONV GSS_FUNC(gss_release_name)
628(OM_uint32 *,             /* minor_status */
629 gss_name_t *             /* input_name */
630 );
631
632GSS_MAKE_TYPEDEF
633OM_uint32
634GSS_CALLCONV GSS_FUNC(gss_release_buffer)
635(OM_uint32 *,             /* minor_status */
636 gss_buffer_t             /* buffer */
637 );
638
639GSS_MAKE_TYPEDEF
640OM_uint32
641GSS_CALLCONV GSS_FUNC(gss_release_oid_set)
642(OM_uint32 *,             /* minor_status */
643 gss_OID_set *            /* set */
644 );
645
646GSS_MAKE_TYPEDEF
647OM_uint32
648GSS_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
657GSS_MAKE_TYPEDEF
658OM_uint32
659GSS_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
671GSS_MAKE_TYPEDEF
672OM_uint32
673GSS_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
682GSS_MAKE_TYPEDEF
683OM_uint32
684GSS_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
698GSS_MAKE_TYPEDEF
699OM_uint32
700GSS_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
710GSS_MAKE_TYPEDEF
711OM_uint32
712GSS_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
718GSS_MAKE_TYPEDEF
719OM_uint32
720GSS_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
726GSS_MAKE_TYPEDEF
727OM_uint32
728GSS_CALLCONV GSS_FUNC(gss_create_empty_oid_set)
729(OM_uint32 *,             /* minor_status */
730 gss_OID_set *            /* oid_set */
731 );
732
733GSS_MAKE_TYPEDEF
734OM_uint32
735GSS_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
741GSS_MAKE_TYPEDEF
742OM_uint32
743GSS_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
750GSS_MAKE_TYPEDEF
751OM_uint32
752GSS_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
758GSS_MAKE_TYPEDEF
759OM_uint32
760GSS_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
766GSS_MAKE_TYPEDEF
767OM_uint32
768GSS_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
775GSS_MAKE_TYPEDEF
776OM_uint32
777GSS_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
841EXTERN_C_END
842
843#endif /* GSSAPI_H_ */
844
845