Home | History | Annotate | Download | only in gssapi
      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