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