1 /*
   2  * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 /* This is the gssapi.h prologue. */
  27 /* It contains some choice pieces of autoconf.h */
  28 #define GSS_SIZEOF_INT 4
  29 #define GSS_SIZEOF_LONG 4
  30 #define GSS_SIZEOF_SHORT 2
  31 
  32 #ifndef _GSSAPI_H_
  33 #define _GSSAPI_H_
  34 
  35 #if defined(__MACH__) && defined(__APPLE__)
  36 #       include <TargetConditionals.h>
  37 #       if TARGET_RT_MAC_CFM
  38 #               error "Use KfM 4.0 SDK headers for CFM compilation."
  39 #       endif
  40 #endif
  41 
  42 #ifdef __cplusplus
  43 extern "C" {
  44 #endif /* __cplusplus */
  45 
  46 #if TARGET_OS_MAC
  47 #    pragma pack(push,2)
  48 #endif
  49 
  50 /*
  51  * First, include stddef.h to get size_t defined.
  52  */
  53 #include <stddef.h>
  54 
  55 /*
  56  * POSIX says that sys/types.h is where size_t is defined.
  57  */
  58 #include <sys/types.h>
  59 
  60 typedef void * gss_name_t;
  61 typedef void * gss_cred_id_t;
  62 typedef void * gss_ctx_id_t;
  63 
  64 /*
  65  * The following type must be defined as the smallest natural unsigned integer
  66  * supported by the platform that has at least 32 bits of precision.
  67  */
  68 #if (GSS_SIZEOF_SHORT == 4)
  69 typedef unsigned short gss_uint32;
  70 typedef short gss_int32;
  71 #elif (GSS_SIZEOF_INT == 4)
  72 typedef unsigned int gss_uint32;
  73 typedef int gss_int32;
  74 #elif (GSS_SIZEOF_LONG == 4)
  75 typedef unsigned long gss_uint32;
  76 typedef long gss_int32;
  77 #endif
  78 
  79 typedef gss_uint32      OM_uint32;
  80 
  81 typedef struct gss_OID_desc_struct {
  82       OM_uint32 length;
  83       void *elements;
  84 } gss_OID_desc, *gss_OID;
  85 
  86 typedef struct gss_OID_set_desc_struct  {
  87       size_t  count;
  88       gss_OID elements;
  89 } gss_OID_set_desc, *gss_OID_set;
  90 
  91 typedef struct gss_buffer_desc_struct {
  92       size_t length;
  93       void *value;
  94 } gss_buffer_desc, *gss_buffer_t;
  95 
  96 typedef struct gss_channel_bindings_struct {
  97       OM_uint32 initiator_addrtype;
  98       gss_buffer_desc initiator_address;
  99       OM_uint32 acceptor_addrtype;
 100       gss_buffer_desc acceptor_address;
 101       gss_buffer_desc application_data;
 102 } *gss_channel_bindings_t;
 103 
 104 /*
 105  * For now, define a QOP-type as an OM_uint32
 106  */
 107 typedef OM_uint32       gss_qop_t;
 108 typedef int             gss_cred_usage_t;
 109 
 110 /*
 111  * Flag bits for context-level services.
 112  */
 113 #define GSS_C_DELEG_FLAG 1
 114 #define GSS_C_MUTUAL_FLAG 2
 115 #define GSS_C_REPLAY_FLAG 4
 116 #define GSS_C_SEQUENCE_FLAG 8
 117 #define GSS_C_CONF_FLAG 16
 118 #define GSS_C_INTEG_FLAG 32
 119 #define GSS_C_ANON_FLAG 64
 120 #define GSS_C_PROT_READY_FLAG 128
 121 #define GSS_C_TRANS_FLAG 256
 122 
 123 /*
 124  * Credential usage options
 125  */
 126 #define GSS_C_BOTH 0
 127 #define GSS_C_INITIATE 1
 128 #define GSS_C_ACCEPT 2
 129 
 130 /*
 131  * Status code types for gss_display_status
 132  */
 133 #define GSS_C_GSS_CODE 1
 134 #define GSS_C_MECH_CODE 2
 135 
 136 /*
 137  * The constant definitions for channel-bindings address families
 138  */
 139 #define GSS_C_AF_UNSPEC     0
 140 #define GSS_C_AF_LOCAL      1
 141 #define GSS_C_AF_INET       2
 142 #define GSS_C_AF_IMPLINK    3
 143 #define GSS_C_AF_PUP        4
 144 #define GSS_C_AF_CHAOS      5
 145 #define GSS_C_AF_NS         6
 146 #define GSS_C_AF_NBS        7
 147 #define GSS_C_AF_ECMA       8
 148 #define GSS_C_AF_DATAKIT    9
 149 #define GSS_C_AF_CCITT      10
 150 #define GSS_C_AF_SNA        11
 151 #define GSS_C_AF_DECnet     12
 152 #define GSS_C_AF_DLI        13
 153 #define GSS_C_AF_LAT        14
 154 #define GSS_C_AF_HYLINK     15
 155 #define GSS_C_AF_APPLETALK  16
 156 #define GSS_C_AF_BSC        17
 157 #define GSS_C_AF_DSS        18
 158 #define GSS_C_AF_OSI        19
 159 #define GSS_C_AF_X25        21
 160 
 161 #define GSS_C_AF_NULLADDR   255
 162 
 163 /*
 164  * Various Null values.
 165  */
 166 #define GSS_C_NO_NAME ((gss_name_t) 0)
 167 #define GSS_C_NO_BUFFER ((gss_buffer_t) 0)
 168 #define GSS_C_NO_OID ((gss_OID) 0)
 169 #define GSS_C_NO_OID_SET ((gss_OID_set) 0)
 170 #define GSS_C_NO_CONTEXT ((gss_ctx_id_t) 0)
 171 #define GSS_C_NO_CREDENTIAL ((gss_cred_id_t) 0)
 172 #define GSS_C_NO_CHANNEL_BINDINGS ((gss_channel_bindings_t) 0)
 173 #define GSS_C_EMPTY_BUFFER {0, NULL}
 174 
 175 /*
 176  * Some alternate names for a couple of the above values.  These are defined
 177  * for V1 compatibility.
 178  */
 179 #define GSS_C_NULL_OID          GSS_C_NO_OID
 180 #define GSS_C_NULL_OID_SET      GSS_C_NO_OID_SET
 181 
 182 /*
 183  * Define the default Quality of Protection for per-message services.  Note
 184  * that an implementation that offers multiple levels of QOP may either reserve
 185  * a value (for example zero, as assumed here) to mean "default protection", or
 186  * alternatively may simply equate GSS_C_QOP_DEFAULT to a specific explicit
 187  * QOP value.  However a value of 0 should always be interpreted by a GSSAPI
 188  * implementation as a request for the default protection level.
 189  */
 190 #define GSS_C_QOP_DEFAULT 0
 191 
 192 /*
 193  * Expiration time of 2^32-1 seconds means infinite lifetime for a
 194  * credential or security context
 195  */
 196 #define GSS_C_INDEFINITE ((OM_uint32) 0xfffffffful)
 197 
 198 
 199 /* Major status codes */
 200 
 201 #define GSS_S_COMPLETE 0
 202 
 203 /*
 204  * Some "helper" definitions to make the status code macros obvious.
 205  */
 206 #define GSS_C_CALLING_ERROR_OFFSET 24
 207 #define GSS_C_ROUTINE_ERROR_OFFSET 16
 208 #define GSS_C_SUPPLEMENTARY_OFFSET 0
 209 #define GSS_C_CALLING_ERROR_MASK ((OM_uint32) 0377ul)
 210 #define GSS_C_ROUTINE_ERROR_MASK ((OM_uint32) 0377ul)
 211 #define GSS_C_SUPPLEMENTARY_MASK ((OM_uint32) 0177777ul)
 212 
 213 /*
 214  * The macros that test status codes for error conditions.  Note that the
 215  * GSS_ERROR() macro has changed slightly from the V1 GSSAPI so that it now
 216  * evaluates its argument only once.
 217  */
 218 #define GSS_CALLING_ERROR(x) \
 219   ((x) & (GSS_C_CALLING_ERROR_MASK << GSS_C_CALLING_ERROR_OFFSET))
 220 #define GSS_ROUTINE_ERROR(x) \
 221   ((x) & (GSS_C_ROUTINE_ERROR_MASK << GSS_C_ROUTINE_ERROR_OFFSET))
 222 #define GSS_SUPPLEMENTARY_INFO(x) \
 223   ((x) & (GSS_C_SUPPLEMENTARY_MASK << GSS_C_SUPPLEMENTARY_OFFSET))
 224 #define GSS_ERROR(x) \
 225   ((x) & ((GSS_C_CALLING_ERROR_MASK << GSS_C_CALLING_ERROR_OFFSET) | \
 226           (GSS_C_ROUTINE_ERROR_MASK << GSS_C_ROUTINE_ERROR_OFFSET)))
 227 
 228 /*
 229  * Now the actual status code definitions
 230  */
 231 
 232 /*
 233  * Calling errors:
 234  */
 235 #define GSS_S_CALL_INACCESSIBLE_READ \
 236                              (((OM_uint32) 1ul) << GSS_C_CALLING_ERROR_OFFSET)
 237 #define GSS_S_CALL_INACCESSIBLE_WRITE \
 238                              (((OM_uint32) 2ul) << GSS_C_CALLING_ERROR_OFFSET)
 239 #define GSS_S_CALL_BAD_STRUCTURE \
 240                              (((OM_uint32) 3ul) << GSS_C_CALLING_ERROR_OFFSET)
 241 
 242 /*
 243  * Routine errors:
 244  */
 245 #define GSS_S_BAD_MECH (((OM_uint32) 1ul) << GSS_C_ROUTINE_ERROR_OFFSET)
 246 #define GSS_S_BAD_NAME (((OM_uint32) 2ul) << GSS_C_ROUTINE_ERROR_OFFSET)
 247 #define GSS_S_BAD_NAMETYPE (((OM_uint32) 3ul) << GSS_C_ROUTINE_ERROR_OFFSET)
 248 #define GSS_S_BAD_BINDINGS (((OM_uint32) 4ul) << GSS_C_ROUTINE_ERROR_OFFSET)
 249 #define GSS_S_BAD_STATUS (((OM_uint32) 5ul) << GSS_C_ROUTINE_ERROR_OFFSET)
 250 #define GSS_S_BAD_SIG (((OM_uint32) 6ul) << GSS_C_ROUTINE_ERROR_OFFSET)
 251 #define GSS_S_NO_CRED (((OM_uint32) 7ul) << GSS_C_ROUTINE_ERROR_OFFSET)
 252 #define GSS_S_NO_CONTEXT (((OM_uint32) 8ul) << GSS_C_ROUTINE_ERROR_OFFSET)
 253 #define GSS_S_DEFECTIVE_TOKEN (((OM_uint32) 9ul) << GSS_C_ROUTINE_ERROR_OFFSET)
 254 #define GSS_S_DEFECTIVE_CREDENTIAL \
 255      (((OM_uint32) 10ul) << GSS_C_ROUTINE_ERROR_OFFSET)
 256 #define GSS_S_CREDENTIALS_EXPIRED \
 257      (((OM_uint32) 11ul) << GSS_C_ROUTINE_ERROR_OFFSET)
 258 #define GSS_S_CONTEXT_EXPIRED \
 259      (((OM_uint32) 12ul) << GSS_C_ROUTINE_ERROR_OFFSET)
 260 #define GSS_S_FAILURE (((OM_uint32) 13ul) << GSS_C_ROUTINE_ERROR_OFFSET)
 261 #define GSS_S_BAD_QOP (((OM_uint32) 14ul) << GSS_C_ROUTINE_ERROR_OFFSET)
 262 #define GSS_S_UNAUTHORIZED (((OM_uint32) 15ul) << GSS_C_ROUTINE_ERROR_OFFSET)
 263 #define GSS_S_UNAVAILABLE (((OM_uint32) 16ul) << GSS_C_ROUTINE_ERROR_OFFSET)
 264 #define GSS_S_DUPLICATE_ELEMENT \
 265      (((OM_uint32) 17ul) << GSS_C_ROUTINE_ERROR_OFFSET)
 266 #define GSS_S_NAME_NOT_MN \
 267      (((OM_uint32) 18ul) << GSS_C_ROUTINE_ERROR_OFFSET)
 268 
 269 /*
 270  * Supplementary info bits:
 271  */
 272 #define GSS_S_CONTINUE_NEEDED (1 << (GSS_C_SUPPLEMENTARY_OFFSET + 0))
 273 #define GSS_S_DUPLICATE_TOKEN (1 << (GSS_C_SUPPLEMENTARY_OFFSET + 1))
 274 #define GSS_S_OLD_TOKEN (1 << (GSS_C_SUPPLEMENTARY_OFFSET + 2))
 275 #define GSS_S_UNSEQ_TOKEN (1 << (GSS_C_SUPPLEMENTARY_OFFSET + 3))
 276 #define GSS_S_GAP_TOKEN (1 << (GSS_C_SUPPLEMENTARY_OFFSET + 4))
 277 
 278 
 279 /*
 280  * Finally, function prototypes for the GSSAPI routines.
 281  */
 282 
 283 #if defined (_WIN32) && defined (_MSC_VER)
 284 # ifdef GSS_DLL_FILE
 285 #  define GSS_DLLIMP __declspec(dllexport)
 286 # else
 287 #  define GSS_DLLIMP __declspec(dllimport)
 288 # endif
 289 #else
 290 # define GSS_DLLIMP
 291 #endif
 292 
 293 /* Reserved static storage for GSS_oids.  Comments are quotes from RFC 2744.
 294  *
 295  * The implementation must reserve static storage for a
 296  * gss_OID_desc object containing the value
 297  * {10, (void *)"\x2a\x86\x48\x86\xf7\x12\x01\x02\x01\x01"},
 298  * corresponding to an object-identifier value of
 299  * {iso(1) member-body(2) United States(840) mit(113554)
 300  * infosys(1) gssapi(2) generic(1) user_name(1)}.  The constant
 301  * GSS_C_NT_USER_NAME should be initialized to point
 302  * to that gss_OID_desc.
 303  */
 304 GSS_DLLIMP extern gss_OID GSS_C_NT_USER_NAME;
 305 
 306 /*
 307  * The implementation must reserve static storage for a
 308  * gss_OID_desc object containing the value
 309  * {10, (void *)"\x2a\x86\x48\x86\xf7\x12\x01\x02\x01\x02"},
 310  * corresponding to an object-identifier value of
 311  * {iso(1) member-body(2) United States(840) mit(113554)
 312  * infosys(1) gssapi(2) generic(1) machine_uid_name(2)}.
 313  * The constant GSS_C_NT_MACHINE_UID_NAME should be
 314  * initialized to point to that gss_OID_desc.
 315  */
 316 GSS_DLLIMP extern gss_OID GSS_C_NT_MACHINE_UID_NAME;
 317 
 318 /*
 319  * The implementation must reserve static storage for a
 320  * gss_OID_desc object containing the value
 321  * {10, (void *)"\x2a\x86\x48\x86\xf7\x12\x01\x02\x01\x03"},
 322  * corresponding to an object-identifier value of
 323  * {iso(1) member-body(2) United States(840) mit(113554)
 324  * infosys(1) gssapi(2) generic(1) string_uid_name(3)}.
 325  * The constant GSS_C_NT_STRING_UID_NAME should be
 326  * initialized to point to that gss_OID_desc.
 327  */
 328 GSS_DLLIMP extern gss_OID GSS_C_NT_STRING_UID_NAME;
 329 
 330 /*
 331  * The implementation must reserve static storage for a
 332  * gss_OID_desc object containing the value
 333  * {6, (void *)"\x2b\x06\x01\x05\x06\x02"},
 334  * corresponding to an object-identifier value of
 335  * {iso(1) org(3) dod(6) internet(1) security(5)
 336  * nametypes(6) gss-host-based-services(2)).  The constant
 337  * GSS_C_NT_HOSTBASED_SERVICE_X should be initialized to point
 338  * to that gss_OID_desc.  This is a deprecated OID value, and
 339  * implementations wishing to support hostbased-service names
 340  * should instead use the GSS_C_NT_HOSTBASED_SERVICE OID,
 341  * defined below, to identify such names;
 342  * GSS_C_NT_HOSTBASED_SERVICE_X should be accepted a synonym
 343  * for GSS_C_NT_HOSTBASED_SERVICE when presented as an input
 344  * parameter, but should not be emitted by GSS-API
 345  * implementations
 346  */
 347 GSS_DLLIMP extern gss_OID GSS_C_NT_HOSTBASED_SERVICE_X;
 348 
 349 /*
 350  * The implementation must reserve static storage for a
 351  * gss_OID_desc object containing the value
 352  * {10, (void *)"\x2a\x86\x48\x86\xf7\x12"
 353  *              "\x01\x02\x01\x04"}, corresponding to an
 354  * object-identifier value of {iso(1) member-body(2)
 355  * Unites States(840) mit(113554) infosys(1) gssapi(2)
 356  * generic(1) service_name(4)}.  The constant
 357  * GSS_C_NT_HOSTBASED_SERVICE should be initialized
 358  * to point to that gss_OID_desc.
 359  */
 360 GSS_DLLIMP extern gss_OID GSS_C_NT_HOSTBASED_SERVICE;
 361 
 362 /*
 363  * The implementation must reserve static storage for a
 364  * gss_OID_desc object containing the value
 365  * {6, (void *)"\x2b\x06\01\x05\x06\x03"},
 366  * corresponding to an object identifier value of
 367  * {1(iso), 3(org), 6(dod), 1(internet), 5(security),
 368  * 6(nametypes), 3(gss-anonymous-name)}.  The constant
 369  * and GSS_C_NT_ANONYMOUS should be initialized to point
 370  * to that gss_OID_desc.
 371  */
 372 GSS_DLLIMP extern gss_OID GSS_C_NT_ANONYMOUS;
 373 
 374 
 375 /*
 376  * The implementation must reserve static storage for a
 377  * gss_OID_desc object containing the value
 378  * {6, (void *)"\x2b\x06\x01\x05\x06\x04"},
 379  * corresponding to an object-identifier value of
 380  * {1(iso), 3(org), 6(dod), 1(internet), 5(security),
 381  * 6(nametypes), 4(gss-api-exported-name)}.  The constant
 382  * GSS_C_NT_EXPORT_NAME should be initialized to point
 383  * to that gss_OID_desc.
 384  */
 385 GSS_DLLIMP extern gss_OID GSS_C_NT_EXPORT_NAME;
 386 
 387 
 388 /* Function Prototypes */
 389 
 390 OM_uint32 gss_acquire_cred(
 391         OM_uint32 *,            /* minor_status */
 392         gss_name_t,             /* desired_name */
 393         OM_uint32,              /* time_req */
 394         gss_OID_set,            /* desired_mechs */
 395         gss_cred_usage_t,       /* cred_usage */
 396         gss_cred_id_t *,        /* output_cred_handle */
 397         gss_OID_set *,          /* actual_mechs */
 398         OM_uint32 *             /* time_rec */
 399 );
 400 
 401 OM_uint32 gss_release_cred(
 402         OM_uint32 *,            /* minor_status */
 403         gss_cred_id_t *         /* cred_handle */
 404 );
 405 
 406 OM_uint32 gss_init_sec_context(
 407         OM_uint32 *,            /* minor_status */
 408         gss_cred_id_t,          /* claimant_cred_handle */
 409         gss_ctx_id_t *,         /* context_handle */
 410         gss_name_t,             /* target_name */
 411         gss_OID,                /* mech_type (used to be const) */
 412         OM_uint32,              /* req_flags */
 413         OM_uint32,              /* time_req */
 414         gss_channel_bindings_t, /* input_chan_bindings */
 415         gss_buffer_t,           /* input_token */
 416         gss_OID *,              /* actual_mech_type */
 417         gss_buffer_t,           /* output_token */
 418         OM_uint32 *,            /* ret_flags */
 419         OM_uint32 *             /* time_rec */
 420 );
 421 
 422 OM_uint32 gss_accept_sec_context(
 423         OM_uint32 *,            /* minor_status */
 424         gss_ctx_id_t *,         /* context_handle */
 425         gss_cred_id_t,          /* acceptor_cred_handle */
 426         gss_buffer_t,           /* input_token_buffer */
 427         gss_channel_bindings_t, /* input_chan_bindings */
 428         gss_name_t *,           /* src_name */
 429         gss_OID *,              /* mech_type */
 430         gss_buffer_t,           /* output_token */
 431         OM_uint32 *,            /* ret_flags */
 432         OM_uint32 *,            /* time_rec */
 433         gss_cred_id_t *         /* delegated_cred_handle */
 434 );
 435 
 436 OM_uint32 gss_process_context_token(
 437         OM_uint32 *,            /* minor_status */
 438         gss_ctx_id_t,           /* context_handle */
 439         gss_buffer_t            /* token_buffer */
 440 );
 441 
 442 OM_uint32 gss_delete_sec_context(
 443         OM_uint32 *,            /* minor_status */
 444         gss_ctx_id_t *,         /* context_handle */
 445         gss_buffer_t            /* output_token */
 446 );
 447 
 448 OM_uint32 gss_context_time(
 449         OM_uint32 *,            /* minor_status */
 450         gss_ctx_id_t,           /* context_handle */
 451         OM_uint32 *             /* time_rec */
 452 );
 453 
 454 /* New for V2 */
 455 OM_uint32 gss_get_mic(
 456         OM_uint32 *,            /* minor_status */
 457         gss_ctx_id_t,           /* context_handle */
 458         gss_qop_t,              /* qop_req */
 459         gss_buffer_t,           /* message_buffer */
 460         gss_buffer_t            /* message_token */
 461 );
 462 
 463 /* New for V2 */
 464 OM_uint32 gss_verify_mic(
 465         OM_uint32 *,            /* minor_status */
 466         gss_ctx_id_t,           /* context_handle */
 467         gss_buffer_t,           /* message_buffer */
 468         gss_buffer_t,           /* message_token */
 469         gss_qop_t *             /* qop_state */
 470 );
 471 
 472 /* New for V2 */
 473 OM_uint32 gss_wrap(
 474         OM_uint32 *,            /* minor_status */
 475         gss_ctx_id_t,           /* context_handle */
 476         int,                    /* conf_req_flag */
 477         gss_qop_t,              /* qop_req */
 478         gss_buffer_t,           /* input_message_buffer */
 479         int *,                  /* conf_state */
 480         gss_buffer_t            /* output_message_buffer */
 481 );
 482 
 483 /* New for V2 */
 484 OM_uint32 gss_unwrap(
 485         OM_uint32 *,            /* minor_status */
 486         gss_ctx_id_t,           /* context_handle */
 487         gss_buffer_t,           /* input_message_buffer */
 488         gss_buffer_t,           /* output_message_buffer */
 489         int *,                  /* conf_state */
 490         gss_qop_t *             /* qop_state */
 491 );
 492 
 493 OM_uint32 gss_display_status(
 494         OM_uint32 *,            /* minor_status */
 495         OM_uint32,              /* status_value */
 496         int,                    /* status_type */
 497         gss_OID,                /* mech_type (used to be const) */
 498         OM_uint32 *,            /* message_context */
 499         gss_buffer_t            /* status_string */
 500 );
 501 
 502 OM_uint32 gss_indicate_mechs(
 503         OM_uint32 *,            /* minor_status */
 504         gss_OID_set *           /* mech_set */
 505 );
 506 
 507 OM_uint32 gss_compare_name(
 508         OM_uint32 *,            /* minor_status */
 509         gss_name_t,             /* name1 */
 510         gss_name_t,             /* name2 */
 511         int *                   /* name_equal */
 512 );
 513 
 514 OM_uint32 gss_display_name(
 515         OM_uint32 *,            /* minor_status */
 516         gss_name_t,             /* input_name */
 517         gss_buffer_t,           /* output_name_buffer */
 518         gss_OID *               /* output_name_type */
 519 );
 520 
 521 OM_uint32 gss_import_name(
 522         OM_uint32 *,            /* minor_status */
 523         gss_buffer_t,           /* input_name_buffer */
 524         gss_OID,                /* input_name_type(used to be const) */
 525         gss_name_t *            /* output_name */
 526 );
 527 
 528 OM_uint32 gss_release_name(
 529         OM_uint32 *,            /* minor_status */
 530         gss_name_t *            /* input_name */
 531 );
 532 
 533 OM_uint32 gss_release_buffer(
 534         OM_uint32 *,            /* minor_status */
 535         gss_buffer_t            /* buffer */
 536 );
 537 
 538 OM_uint32 gss_release_oid_set(
 539         OM_uint32 *,            /* minor_status */
 540         gss_OID_set *           /* set */
 541 );
 542 
 543 OM_uint32 gss_inquire_cred(
 544         OM_uint32 *,            /* minor_status */
 545         gss_cred_id_t,          /* cred_handle */
 546         gss_name_t *,           /* name */
 547         OM_uint32 *,            /* lifetime */
 548         gss_cred_usage_t *,     /* cred_usage */
 549         gss_OID_set *           /* mechanisms */
 550 );
 551 
 552 /* Last argument new for V2 */
 553 OM_uint32 gss_inquire_context(
 554         OM_uint32 *,            /* minor_status */
 555         gss_ctx_id_t,           /* context_handle */
 556         gss_name_t *,           /* src_name */
 557         gss_name_t *,           /* targ_name */
 558         OM_uint32 *,            /* lifetime_rec */
 559         gss_OID *,              /* mech_type */
 560         OM_uint32 *,            /* ctx_flags */
 561         int *,                  /* locally_initiated */
 562         int *                   /* open */
 563 );
 564 
 565 /* New for V2 */
 566 OM_uint32 gss_wrap_size_limit(
 567         OM_uint32 *,            /* minor_status */
 568         gss_ctx_id_t,           /* context_handle */
 569         int,                    /* conf_req_flag */
 570         gss_qop_t,              /* qop_req */
 571         OM_uint32,              /* req_output_size */
 572         OM_uint32 *             /* max_input_size */
 573 );
 574 
 575 /* New for V2 */
 576 OM_uint32 gss_add_cred(
 577         OM_uint32 *,            /* minor_status */
 578         gss_cred_id_t,          /* input_cred_handle */
 579         gss_name_t,             /* desired_name */
 580         gss_OID,                /* desired_mech */
 581         gss_cred_usage_t,       /* cred_usage */
 582         OM_uint32,              /* initiator_time_req */
 583         OM_uint32,              /* acceptor_time_req */
 584         gss_cred_id_t *,        /* output_cred_handle */
 585         gss_OID_set *,          /* actual_mechs */
 586         OM_uint32 *,            /* initiator_time_rec */
 587         OM_uint32 *             /* acceptor_time_rec */
 588 );
 589 
 590 /* New for V2 */
 591 OM_uint32 gss_inquire_cred_by_mech(
 592         OM_uint32 *,            /* minor_status */
 593         gss_cred_id_t,          /* cred_handle */
 594         gss_OID,                /* mech_type */
 595         gss_name_t *,           /* name */
 596         OM_uint32 *,            /* initiator_lifetime */
 597         OM_uint32 *,            /* acceptor_lifetime */
 598         gss_cred_usage_t *      /* cred_usage */
 599 );
 600 
 601 /* New for V2 */
 602 OM_uint32 gss_export_sec_context(
 603         OM_uint32 *,            /* minor_status */
 604         gss_ctx_id_t *,         /* context_handle */
 605         gss_buffer_t            /* interprocess_token */
 606 );
 607 
 608 /* New for V2 */
 609 OM_uint32 gss_import_sec_context(
 610         OM_uint32 *,            /* minor_status */
 611         gss_buffer_t,           /* interprocess_token */
 612         gss_ctx_id_t *          /* context_handle */
 613 );
 614 
 615 /* New for V2 */
 616 OM_uint32 gss_release_oid(
 617         OM_uint32 *,            /* minor_status */
 618         gss_OID *               /* oid */
 619 );
 620 
 621 /* New for V2 */
 622 OM_uint32 gss_create_empty_oid_set(
 623         OM_uint32 *,            /* minor_status */
 624         gss_OID_set *           /* oid_set */
 625 );
 626 
 627 /* New for V2 */
 628 OM_uint32 gss_add_oid_set_member(
 629         OM_uint32 *,            /* minor_status */
 630         gss_OID,                /* member_oid */
 631         gss_OID_set *           /* oid_set */
 632 );
 633 
 634 /* New for V2 */
 635 OM_uint32 gss_test_oid_set_member(
 636         OM_uint32 *,            /* minor_status */
 637         gss_OID,                /* member */
 638         gss_OID_set,            /* set */
 639         int *                   /* present */
 640 );
 641 
 642 /* New for V2 */
 643 OM_uint32 gss_str_to_oid(
 644         OM_uint32 *,            /* minor_status */
 645         gss_buffer_t,           /* oid_str */
 646         gss_OID *               /* oid */
 647 );
 648 
 649 /* New for V2 */
 650 OM_uint32 gss_oid_to_str(
 651         OM_uint32 *,            /* minor_status */
 652         gss_OID,                /* oid */
 653         gss_buffer_t            /* oid_str */
 654 );
 655 
 656 /* New for V2 */
 657 OM_uint32 gss_inquire_names_for_mech(
 658         OM_uint32 *,            /* minor_status */
 659         gss_OID,                /* mechanism */
 660         gss_OID_set *           /* name_types */
 661 );
 662 
 663 /* New for V2 */
 664 OM_uint32 gss_export_name(
 665         OM_uint32  *,           /* minor_status */
 666         const gss_name_t,       /* input_name */
 667         gss_buffer_t            /* exported_name */
 668 );
 669 
 670 /* New for V2 */
 671 OM_uint32 gss_duplicate_name(
 672         OM_uint32  *,           /* minor_status */
 673         const gss_name_t,       /* input_name */
 674         gss_name_t *            /* dest_name */
 675 );
 676 
 677 /* New for V2 */
 678 OM_uint32 gss_canonicalize_name(
 679         OM_uint32  *,           /* minor_status */
 680         const gss_name_t,       /* input_name */
 681         const gss_OID,          /* mech_type */
 682         gss_name_t *            /* output_name */
 683 );
 684 
 685 #if TARGET_OS_MAC
 686 #    pragma pack(pop)
 687 #endif
 688 
 689 #ifdef __cplusplus
 690 }
 691 #endif
 692 
 693 #endif /* _GSSAPI_H_ */