gssapi.h revision 178825
1/* 2 * Copyright (c) 1997 - 2007 Kungliga Tekniska H�gskolan 3 * (Royal Institute of Technology, Stockholm, Sweden). 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 17 * 3. Neither the name of the Institute nor the names of its contributors 18 * may be used to endorse or promote products derived from this software 19 * without specific prior written permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 */ 33 34/* $Id: gssapi.h 21004 2007-06-08 01:53:10Z lha $ */ 35 36#ifndef GSSAPI_GSSAPI_H_ 37#define GSSAPI_GSSAPI_H_ 38 39/* 40 * First, include stddef.h to get size_t defined. 41 */ 42#include <stddef.h> 43 44#include <krb5-types.h> 45 46/* 47 * Now define the three implementation-dependent types. 48 */ 49 50typedef uint32_t OM_uint32; 51typedef uint64_t OM_uint64; 52 53typedef uint32_t gss_uint32; 54 55struct gss_name_t_desc_struct; 56typedef struct gss_name_t_desc_struct *gss_name_t; 57 58struct gss_ctx_id_t_desc_struct; 59typedef struct gss_ctx_id_t_desc_struct *gss_ctx_id_t; 60 61typedef struct gss_OID_desc_struct { 62 OM_uint32 length; 63 void *elements; 64} gss_OID_desc, *gss_OID; 65 66typedef struct gss_OID_set_desc_struct { 67 size_t count; 68 gss_OID elements; 69} gss_OID_set_desc, *gss_OID_set; 70 71typedef int gss_cred_usage_t; 72 73struct gss_cred_id_t_desc_struct; 74typedef struct gss_cred_id_t_desc_struct *gss_cred_id_t; 75 76typedef struct gss_buffer_desc_struct { 77 size_t length; 78 void *value; 79} gss_buffer_desc, *gss_buffer_t; 80 81typedef struct gss_channel_bindings_struct { 82 OM_uint32 initiator_addrtype; 83 gss_buffer_desc initiator_address; 84 OM_uint32 acceptor_addrtype; 85 gss_buffer_desc acceptor_address; 86 gss_buffer_desc application_data; 87} *gss_channel_bindings_t; 88 89/* GGF extension data types */ 90typedef struct gss_buffer_set_desc_struct { 91 size_t count; 92 gss_buffer_desc *elements; 93} gss_buffer_set_desc, *gss_buffer_set_t; 94 95/* 96 * For now, define a QOP-type as an OM_uint32 97 */ 98typedef OM_uint32 gss_qop_t; 99 100/* 101 * Flag bits for context-level services. 102 */ 103#define GSS_C_DELEG_FLAG 1 104#define GSS_C_MUTUAL_FLAG 2 105#define GSS_C_REPLAY_FLAG 4 106#define GSS_C_SEQUENCE_FLAG 8 107#define GSS_C_CONF_FLAG 16 108#define GSS_C_INTEG_FLAG 32 109#define GSS_C_ANON_FLAG 64 110#define GSS_C_PROT_READY_FLAG 128 111#define GSS_C_TRANS_FLAG 256 112 113#define GSS_C_DCE_STYLE 4096 114#define GSS_C_IDENTIFY_FLAG 8192 115#define GSS_C_EXTENDED_ERROR_FLAG 16384 116 117/* 118 * Credential usage options 119 */ 120#define GSS_C_BOTH 0 121#define GSS_C_INITIATE 1 122#define GSS_C_ACCEPT 2 123 124/* 125 * Status code types for gss_display_status 126 */ 127#define GSS_C_GSS_CODE 1 128#define GSS_C_MECH_CODE 2 129 130/* 131 * The constant definitions for channel-bindings address families 132 */ 133#define GSS_C_AF_UNSPEC 0 134#define GSS_C_AF_LOCAL 1 135#define GSS_C_AF_INET 2 136#define GSS_C_AF_IMPLINK 3 137#define GSS_C_AF_PUP 4 138#define GSS_C_AF_CHAOS 5 139#define GSS_C_AF_NS 6 140#define GSS_C_AF_NBS 7 141#define GSS_C_AF_ECMA 8 142#define GSS_C_AF_DATAKIT 9 143#define GSS_C_AF_CCITT 10 144#define GSS_C_AF_SNA 11 145#define GSS_C_AF_DECnet 12 146#define GSS_C_AF_DLI 13 147#define GSS_C_AF_LAT 14 148#define GSS_C_AF_HYLINK 15 149#define GSS_C_AF_APPLETALK 16 150#define GSS_C_AF_BSC 17 151#define GSS_C_AF_DSS 18 152#define GSS_C_AF_OSI 19 153#define GSS_C_AF_X25 21 154#define GSS_C_AF_INET6 24 155 156#define GSS_C_AF_NULLADDR 255 157 158/* 159 * Various Null values 160 */ 161#define GSS_C_NO_NAME ((gss_name_t) 0) 162#define GSS_C_NO_BUFFER ((gss_buffer_t) 0) 163#define GSS_C_NO_BUFFER_SET ((gss_buffer_set_t) 0) 164#define GSS_C_NO_OID ((gss_OID) 0) 165#define GSS_C_NO_OID_SET ((gss_OID_set) 0) 166#define GSS_C_NO_CONTEXT ((gss_ctx_id_t) 0) 167#define GSS_C_NO_CREDENTIAL ((gss_cred_id_t) 0) 168#define GSS_C_NO_CHANNEL_BINDINGS ((gss_channel_bindings_t) 0) 169#define GSS_C_EMPTY_BUFFER {0, NULL} 170 171/* 172 * Some alternate names for a couple of the above 173 * values. These are defined for V1 compatibility. 174 */ 175#define GSS_C_NULL_OID GSS_C_NO_OID 176#define GSS_C_NULL_OID_SET GSS_C_NO_OID_SET 177 178/* 179 * Define the default Quality of Protection for per-message 180 * services. Note that an implementation that offers multiple 181 * levels of QOP may define GSS_C_QOP_DEFAULT to be either zero 182 * (as done here) to mean "default protection", or to a specific 183 * explicit QOP value. However, a value of 0 should always be 184 * interpreted by a GSSAPI implementation as a request for the 185 * default protection level. 186 */ 187#define GSS_C_QOP_DEFAULT 0 188 189#define GSS_KRB5_CONF_C_QOP_DES 0x0100 190#define GSS_KRB5_CONF_C_QOP_DES3_KD 0x0200 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 0xfffffffful 197 198#ifdef __cplusplus 199extern "C" { 200#endif 201 202/* 203 * The implementation must reserve static storage for a 204 * gss_OID_desc object containing the value 205 * {10, (void *)"\x2a\x86\x48\x86\xf7\x12" 206 * "\x01\x02\x01\x01"}, 207 * corresponding to an object-identifier value of 208 * {iso(1) member-body(2) United States(840) mit(113554) 209 * infosys(1) gssapi(2) generic(1) user_name(1)}. The constant 210 * GSS_C_NT_USER_NAME should be initialized to point 211 * to that gss_OID_desc. 212 */ 213extern gss_OID GSS_C_NT_USER_NAME; 214 215/* 216 * The implementation must reserve static storage for a 217 * gss_OID_desc object containing the value 218 * {10, (void *)"\x2a\x86\x48\x86\xf7\x12" 219 * "\x01\x02\x01\x02"}, 220 * corresponding to an object-identifier value of 221 * {iso(1) member-body(2) United States(840) mit(113554) 222 * infosys(1) gssapi(2) generic(1) machine_uid_name(2)}. 223 * The constant GSS_C_NT_MACHINE_UID_NAME should be 224 * initialized to point to that gss_OID_desc. 225 */ 226extern gss_OID GSS_C_NT_MACHINE_UID_NAME; 227 228/* 229 * The implementation must reserve static storage for a 230 * gss_OID_desc object containing the value 231 * {10, (void *)"\x2a\x86\x48\x86\xf7\x12" 232 * "\x01\x02\x01\x03"}, 233 * corresponding to an object-identifier value of 234 * {iso(1) member-body(2) United States(840) mit(113554) 235 * infosys(1) gssapi(2) generic(1) string_uid_name(3)}. 236 * The constant GSS_C_NT_STRING_UID_NAME should be 237 * initialized to point to that gss_OID_desc. 238 */ 239extern gss_OID GSS_C_NT_STRING_UID_NAME; 240 241/* 242 * The implementation must reserve static storage for a 243 * gss_OID_desc object containing the value 244 * {6, (void *)"\x2b\x06\x01\x05\x06\x02"}, 245 * corresponding to an object-identifier value of 246 * {iso(1) org(3) dod(6) internet(1) security(5) 247 * nametypes(6) gss-host-based-services(2)). The constant 248 * GSS_C_NT_HOSTBASED_SERVICE_X should be initialized to point 249 * to that gss_OID_desc. This is a deprecated OID value, and 250 * implementations wishing to support hostbased-service names 251 * should instead use the GSS_C_NT_HOSTBASED_SERVICE OID, 252 * defined below, to identify such names; 253 * GSS_C_NT_HOSTBASED_SERVICE_X should be accepted a synonym 254 * for GSS_C_NT_HOSTBASED_SERVICE when presented as an input 255 * parameter, but should not be emitted by GSS-API 256 * implementations 257 */ 258extern gss_OID GSS_C_NT_HOSTBASED_SERVICE_X; 259 260/* 261 * The implementation must reserve static storage for a 262 * gss_OID_desc object containing the value 263 * {10, (void *)"\x2a\x86\x48\x86\xf7\x12" 264 * "\x01\x02\x01\x04"}, corresponding to an 265 * object-identifier value of {iso(1) member-body(2) 266 * Unites States(840) mit(113554) infosys(1) gssapi(2) 267 * generic(1) service_name(4)}. The constant 268 * GSS_C_NT_HOSTBASED_SERVICE should be initialized 269 * to point to that gss_OID_desc. 270 */ 271extern gss_OID GSS_C_NT_HOSTBASED_SERVICE; 272 273/* 274 * The implementation must reserve static storage for a 275 * gss_OID_desc object containing the value 276 * {6, (void *)"\x2b\x06\01\x05\x06\x03"}, 277 * corresponding to an object identifier value of 278 * {1(iso), 3(org), 6(dod), 1(internet), 5(security), 279 * 6(nametypes), 3(gss-anonymous-name)}. The constant 280 * and GSS_C_NT_ANONYMOUS should be initialized to point 281 * to that gss_OID_desc. 282 */ 283extern gss_OID GSS_C_NT_ANONYMOUS; 284 285/* 286 * The implementation must reserve static storage for a 287 * gss_OID_desc object containing the value 288 * {6, (void *)"\x2b\x06\x01\x05\x06\x04"}, 289 * corresponding to an object-identifier value of 290 * {1(iso), 3(org), 6(dod), 1(internet), 5(security), 291 * 6(nametypes), 4(gss-api-exported-name)}. The constant 292 * GSS_C_NT_EXPORT_NAME should be initialized to point 293 * to that gss_OID_desc. 294 */ 295extern gss_OID GSS_C_NT_EXPORT_NAME; 296 297/* 298 * Digest mechanism 299 */ 300 301extern gss_OID GSS_SASL_DIGEST_MD5_MECHANISM; 302 303/* 304 * NTLM mechanism 305 */ 306 307extern gss_OID GSS_NTLM_MECHANISM; 308 309/* Major status codes */ 310 311#define GSS_S_COMPLETE 0 312 313/* 314 * Some "helper" definitions to make the status code macros obvious. 315 */ 316#define GSS_C_CALLING_ERROR_OFFSET 24 317#define GSS_C_ROUTINE_ERROR_OFFSET 16 318#define GSS_C_SUPPLEMENTARY_OFFSET 0 319#define GSS_C_CALLING_ERROR_MASK 0377ul 320#define GSS_C_ROUTINE_ERROR_MASK 0377ul 321#define GSS_C_SUPPLEMENTARY_MASK 0177777ul 322 323/* 324 * The macros that test status codes for error conditions. 325 * Note that the GSS_ERROR() macro has changed slightly from 326 * the V1 GSSAPI so that it now evaluates its argument 327 * only once. 328 */ 329#define GSS_CALLING_ERROR(x) \ 330 (x & (GSS_C_CALLING_ERROR_MASK << GSS_C_CALLING_ERROR_OFFSET)) 331#define GSS_ROUTINE_ERROR(x) \ 332 (x & (GSS_C_ROUTINE_ERROR_MASK << GSS_C_ROUTINE_ERROR_OFFSET)) 333#define GSS_SUPPLEMENTARY_INFO(x) \ 334 (x & (GSS_C_SUPPLEMENTARY_MASK << GSS_C_SUPPLEMENTARY_OFFSET)) 335#define GSS_ERROR(x) \ 336 (x & ((GSS_C_CALLING_ERROR_MASK << GSS_C_CALLING_ERROR_OFFSET) | \ 337 (GSS_C_ROUTINE_ERROR_MASK << GSS_C_ROUTINE_ERROR_OFFSET))) 338 339/* 340 * Now the actual status code definitions 341 */ 342 343/* 344 * Calling errors: 345 */ 346#define GSS_S_CALL_INACCESSIBLE_READ \ 347 (1ul << GSS_C_CALLING_ERROR_OFFSET) 348#define GSS_S_CALL_INACCESSIBLE_WRITE \ 349 (2ul << GSS_C_CALLING_ERROR_OFFSET) 350#define GSS_S_CALL_BAD_STRUCTURE \ 351 (3ul << GSS_C_CALLING_ERROR_OFFSET) 352 353/* 354 * Routine errors: 355 */ 356#define GSS_S_BAD_MECH (1ul << GSS_C_ROUTINE_ERROR_OFFSET) 357#define GSS_S_BAD_NAME (2ul << GSS_C_ROUTINE_ERROR_OFFSET) 358#define GSS_S_BAD_NAMETYPE (3ul << GSS_C_ROUTINE_ERROR_OFFSET) 359 360#define GSS_S_BAD_BINDINGS (4ul << GSS_C_ROUTINE_ERROR_OFFSET) 361#define GSS_S_BAD_STATUS (5ul << GSS_C_ROUTINE_ERROR_OFFSET) 362#define GSS_S_BAD_SIG (6ul << GSS_C_ROUTINE_ERROR_OFFSET) 363#define GSS_S_BAD_MIC GSS_S_BAD_SIG 364#define GSS_S_NO_CRED (7ul << GSS_C_ROUTINE_ERROR_OFFSET) 365#define GSS_S_NO_CONTEXT (8ul << GSS_C_ROUTINE_ERROR_OFFSET) 366#define GSS_S_DEFECTIVE_TOKEN (9ul << GSS_C_ROUTINE_ERROR_OFFSET) 367#define GSS_S_DEFECTIVE_CREDENTIAL (10ul << GSS_C_ROUTINE_ERROR_OFFSET) 368#define GSS_S_CREDENTIALS_EXPIRED (11ul << GSS_C_ROUTINE_ERROR_OFFSET) 369#define GSS_S_CONTEXT_EXPIRED (12ul << GSS_C_ROUTINE_ERROR_OFFSET) 370#define GSS_S_FAILURE (13ul << GSS_C_ROUTINE_ERROR_OFFSET) 371#define GSS_S_BAD_QOP (14ul << GSS_C_ROUTINE_ERROR_OFFSET) 372#define GSS_S_UNAUTHORIZED (15ul << GSS_C_ROUTINE_ERROR_OFFSET) 373#define GSS_S_UNAVAILABLE (16ul << GSS_C_ROUTINE_ERROR_OFFSET) 374#define GSS_S_DUPLICATE_ELEMENT (17ul << GSS_C_ROUTINE_ERROR_OFFSET) 375#define GSS_S_NAME_NOT_MN (18ul << GSS_C_ROUTINE_ERROR_OFFSET) 376 377/* 378 * Supplementary info bits: 379 */ 380#define GSS_S_CONTINUE_NEEDED (1ul << (GSS_C_SUPPLEMENTARY_OFFSET + 0)) 381#define GSS_S_DUPLICATE_TOKEN (1ul << (GSS_C_SUPPLEMENTARY_OFFSET + 1)) 382#define GSS_S_OLD_TOKEN (1ul << (GSS_C_SUPPLEMENTARY_OFFSET + 2)) 383#define GSS_S_UNSEQ_TOKEN (1ul << (GSS_C_SUPPLEMENTARY_OFFSET + 3)) 384#define GSS_S_GAP_TOKEN (1ul << (GSS_C_SUPPLEMENTARY_OFFSET + 4)) 385 386/* 387 * Finally, function prototypes for the GSS-API routines. 388 */ 389 390OM_uint32 gss_acquire_cred 391 (OM_uint32 * /*minor_status*/, 392 const gss_name_t /*desired_name*/, 393 OM_uint32 /*time_req*/, 394 const 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 401OM_uint32 gss_release_cred 402 (OM_uint32 * /*minor_status*/, 403 gss_cred_id_t * /*cred_handle*/ 404 ); 405 406OM_uint32 gss_init_sec_context 407 (OM_uint32 * /*minor_status*/, 408 const gss_cred_id_t /*initiator_cred_handle*/, 409 gss_ctx_id_t * /*context_handle*/, 410 const gss_name_t /*target_name*/, 411 const gss_OID /*mech_type*/, 412 OM_uint32 /*req_flags*/, 413 OM_uint32 /*time_req*/, 414 const gss_channel_bindings_t /*input_chan_bindings*/, 415 const 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 422OM_uint32 gss_accept_sec_context 423 (OM_uint32 * /*minor_status*/, 424 gss_ctx_id_t * /*context_handle*/, 425 const gss_cred_id_t /*acceptor_cred_handle*/, 426 const gss_buffer_t /*input_token_buffer*/, 427 const 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 436OM_uint32 gss_process_context_token 437 (OM_uint32 * /*minor_status*/, 438 const gss_ctx_id_t /*context_handle*/, 439 const gss_buffer_t /*token_buffer*/ 440 ); 441 442OM_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 448OM_uint32 gss_context_time 449 (OM_uint32 * /*minor_status*/, 450 const gss_ctx_id_t /*context_handle*/, 451 OM_uint32 * /*time_rec*/ 452 ); 453 454OM_uint32 gss_get_mic 455 (OM_uint32 * /*minor_status*/, 456 const gss_ctx_id_t /*context_handle*/, 457 gss_qop_t /*qop_req*/, 458 const gss_buffer_t /*message_buffer*/, 459 gss_buffer_t /*message_token*/ 460 ); 461 462OM_uint32 gss_verify_mic 463 (OM_uint32 * /*minor_status*/, 464 const gss_ctx_id_t /*context_handle*/, 465 const gss_buffer_t /*message_buffer*/, 466 const gss_buffer_t /*token_buffer*/, 467 gss_qop_t * /*qop_state*/ 468 ); 469 470OM_uint32 gss_wrap 471 (OM_uint32 * /*minor_status*/, 472 const gss_ctx_id_t /*context_handle*/, 473 int /*conf_req_flag*/, 474 gss_qop_t /*qop_req*/, 475 const gss_buffer_t /*input_message_buffer*/, 476 int * /*conf_state*/, 477 gss_buffer_t /*output_message_buffer*/ 478 ); 479 480OM_uint32 gss_unwrap 481 (OM_uint32 * /*minor_status*/, 482 const gss_ctx_id_t /*context_handle*/, 483 const gss_buffer_t /*input_message_buffer*/, 484 gss_buffer_t /*output_message_buffer*/, 485 int * /*conf_state*/, 486 gss_qop_t * /*qop_state*/ 487 ); 488 489OM_uint32 gss_display_status 490 (OM_uint32 * /*minor_status*/, 491 OM_uint32 /*status_value*/, 492 int /*status_type*/, 493 const gss_OID /*mech_type*/, 494 OM_uint32 * /*message_context*/, 495 gss_buffer_t /*status_string*/ 496 ); 497 498OM_uint32 gss_indicate_mechs 499 (OM_uint32 * /*minor_status*/, 500 gss_OID_set * /*mech_set*/ 501 ); 502 503OM_uint32 gss_compare_name 504 (OM_uint32 * /*minor_status*/, 505 const gss_name_t /*name1*/, 506 const gss_name_t /*name2*/, 507 int * /*name_equal*/ 508 ); 509 510OM_uint32 gss_display_name 511 (OM_uint32 * /*minor_status*/, 512 const gss_name_t /*input_name*/, 513 gss_buffer_t /*output_name_buffer*/, 514 gss_OID * /*output_name_type*/ 515 ); 516 517OM_uint32 gss_import_name 518 (OM_uint32 * /*minor_status*/, 519 const gss_buffer_t /*input_name_buffer*/, 520 const gss_OID /*input_name_type*/, 521 gss_name_t * /*output_name*/ 522 ); 523 524OM_uint32 gss_export_name 525 (OM_uint32 * /*minor_status*/, 526 const gss_name_t /*input_name*/, 527 gss_buffer_t /*exported_name*/ 528 ); 529 530OM_uint32 gss_release_name 531 (OM_uint32 * /*minor_status*/, 532 gss_name_t * /*input_name*/ 533 ); 534 535OM_uint32 gss_release_buffer 536 (OM_uint32 * /*minor_status*/, 537 gss_buffer_t /*buffer*/ 538 ); 539 540OM_uint32 gss_release_oid_set 541 (OM_uint32 * /*minor_status*/, 542 gss_OID_set * /*set*/ 543 ); 544 545OM_uint32 gss_inquire_cred 546 (OM_uint32 * /*minor_status*/, 547 const gss_cred_id_t /*cred_handle*/, 548 gss_name_t * /*name*/, 549 OM_uint32 * /*lifetime*/, 550 gss_cred_usage_t * /*cred_usage*/, 551 gss_OID_set * /*mechanisms*/ 552 ); 553 554OM_uint32 gss_inquire_context ( 555 OM_uint32 * /*minor_status*/, 556 const gss_ctx_id_t /*context_handle*/, 557 gss_name_t * /*src_name*/, 558 gss_name_t * /*targ_name*/, 559 OM_uint32 * /*lifetime_rec*/, 560 gss_OID * /*mech_type*/, 561 OM_uint32 * /*ctx_flags*/, 562 int * /*locally_initiated*/, 563 int * /*open_context*/ 564 ); 565 566OM_uint32 gss_wrap_size_limit ( 567 OM_uint32 * /*minor_status*/, 568 const 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 575OM_uint32 gss_add_cred ( 576 OM_uint32 * /*minor_status*/, 577 const gss_cred_id_t /*input_cred_handle*/, 578 const gss_name_t /*desired_name*/, 579 const gss_OID /*desired_mech*/, 580 gss_cred_usage_t /*cred_usage*/, 581 OM_uint32 /*initiator_time_req*/, 582 OM_uint32 /*acceptor_time_req*/, 583 gss_cred_id_t * /*output_cred_handle*/, 584 gss_OID_set * /*actual_mechs*/, 585 OM_uint32 * /*initiator_time_rec*/, 586 OM_uint32 * /*acceptor_time_rec*/ 587 ); 588 589OM_uint32 gss_inquire_cred_by_mech ( 590 OM_uint32 * /*minor_status*/, 591 const gss_cred_id_t /*cred_handle*/, 592 const gss_OID /*mech_type*/, 593 gss_name_t * /*name*/, 594 OM_uint32 * /*initiator_lifetime*/, 595 OM_uint32 * /*acceptor_lifetime*/, 596 gss_cred_usage_t * /*cred_usage*/ 597 ); 598 599OM_uint32 gss_export_sec_context ( 600 OM_uint32 * /*minor_status*/, 601 gss_ctx_id_t * /*context_handle*/, 602 gss_buffer_t /*interprocess_token*/ 603 ); 604 605OM_uint32 gss_import_sec_context ( 606 OM_uint32 * /*minor_status*/, 607 const gss_buffer_t /*interprocess_token*/, 608 gss_ctx_id_t * /*context_handle*/ 609 ); 610 611OM_uint32 gss_create_empty_oid_set ( 612 OM_uint32 * /*minor_status*/, 613 gss_OID_set * /*oid_set*/ 614 ); 615 616OM_uint32 gss_add_oid_set_member ( 617 OM_uint32 * /*minor_status*/, 618 const gss_OID /*member_oid*/, 619 gss_OID_set * /*oid_set*/ 620 ); 621 622OM_uint32 gss_test_oid_set_member ( 623 OM_uint32 * /*minor_status*/, 624 const gss_OID /*member*/, 625 const gss_OID_set /*set*/, 626 int * /*present*/ 627 ); 628 629OM_uint32 gss_inquire_names_for_mech ( 630 OM_uint32 * /*minor_status*/, 631 const gss_OID /*mechanism*/, 632 gss_OID_set * /*name_types*/ 633 ); 634 635OM_uint32 gss_inquire_mechs_for_name ( 636 OM_uint32 * /*minor_status*/, 637 const gss_name_t /*input_name*/, 638 gss_OID_set * /*mech_types*/ 639 ); 640 641OM_uint32 gss_canonicalize_name ( 642 OM_uint32 * /*minor_status*/, 643 const gss_name_t /*input_name*/, 644 const gss_OID /*mech_type*/, 645 gss_name_t * /*output_name*/ 646 ); 647 648OM_uint32 gss_duplicate_name ( 649 OM_uint32 * /*minor_status*/, 650 const gss_name_t /*src_name*/, 651 gss_name_t * /*dest_name*/ 652 ); 653 654OM_uint32 gss_duplicate_oid ( 655 OM_uint32 * /* minor_status */, 656 gss_OID /* src_oid */, 657 gss_OID * /* dest_oid */ 658 ); 659OM_uint32 660gss_release_oid 661 (OM_uint32 * /*minor_status*/, 662 gss_OID * /* oid */ 663 ); 664 665OM_uint32 666gss_oid_to_str( 667 OM_uint32 * /*minor_status*/, 668 gss_OID /* oid */, 669 gss_buffer_t /* str */ 670 ); 671 672OM_uint32 673gss_inquire_sec_context_by_oid( 674 OM_uint32 * minor_status, 675 const gss_ctx_id_t context_handle, 676 const gss_OID desired_object, 677 gss_buffer_set_t *data_set 678 ); 679 680OM_uint32 681gss_set_sec_context_option (OM_uint32 *minor_status, 682 gss_ctx_id_t *context_handle, 683 const gss_OID desired_object, 684 const gss_buffer_t value); 685 686OM_uint32 687gss_set_cred_option (OM_uint32 *minor_status, 688 gss_cred_id_t *cred_handle, 689 const gss_OID object, 690 const gss_buffer_t value); 691 692int 693gss_oid_equal(const gss_OID a, const gss_OID b); 694 695OM_uint32 696gss_create_empty_buffer_set 697 (OM_uint32 * minor_status, 698 gss_buffer_set_t *buffer_set); 699 700OM_uint32 701gss_add_buffer_set_member 702 (OM_uint32 * minor_status, 703 const gss_buffer_t member_buffer, 704 gss_buffer_set_t *buffer_set); 705 706OM_uint32 707gss_release_buffer_set 708 (OM_uint32 * minor_status, 709 gss_buffer_set_t *buffer_set); 710 711OM_uint32 712gss_inquire_cred_by_oid(OM_uint32 *minor_status, 713 const gss_cred_id_t cred_handle, 714 const gss_OID desired_object, 715 gss_buffer_set_t *data_set); 716 717/* 718 * RFC 4401 719 */ 720 721#define GSS_C_PRF_KEY_FULL 0 722#define GSS_C_PRF_KEY_PARTIAL 1 723 724OM_uint32 725gss_pseudo_random 726 (OM_uint32 *minor_status, 727 gss_ctx_id_t context, 728 int prf_key, 729 const gss_buffer_t prf_in, 730 ssize_t desired_output_len, 731 gss_buffer_t prf_out 732 ); 733 734/* 735 * The following routines are obsolete variants of gss_get_mic, 736 * gss_verify_mic, gss_wrap and gss_unwrap. They should be 737 * provided by GSSAPI V2 implementations for backwards 738 * compatibility with V1 applications. Distinct entrypoints 739 * (as opposed to #defines) should be provided, both to allow 740 * GSSAPI V1 applications to link against GSSAPI V2 implementations, 741 * and to retain the slight parameter type differences between the 742 * obsolete versions of these routines and their current forms. 743 */ 744 745OM_uint32 gss_sign 746 (OM_uint32 * /*minor_status*/, 747 gss_ctx_id_t /*context_handle*/, 748 int /*qop_req*/, 749 gss_buffer_t /*message_buffer*/, 750 gss_buffer_t /*message_token*/ 751 ); 752 753OM_uint32 gss_verify 754 (OM_uint32 * /*minor_status*/, 755 gss_ctx_id_t /*context_handle*/, 756 gss_buffer_t /*message_buffer*/, 757 gss_buffer_t /*token_buffer*/, 758 int * /*qop_state*/ 759 ); 760 761OM_uint32 gss_seal 762 (OM_uint32 * /*minor_status*/, 763 gss_ctx_id_t /*context_handle*/, 764 int /*conf_req_flag*/, 765 int /*qop_req*/, 766 gss_buffer_t /*input_message_buffer*/, 767 int * /*conf_state*/, 768 gss_buffer_t /*output_message_buffer*/ 769 ); 770 771OM_uint32 gss_unseal 772 (OM_uint32 * /*minor_status*/, 773 gss_ctx_id_t /*context_handle*/, 774 gss_buffer_t /*input_message_buffer*/, 775 gss_buffer_t /*output_message_buffer*/, 776 int * /*conf_state*/, 777 int * /*qop_state*/ 778 ); 779 780/* 781 * 782 */ 783 784OM_uint32 785gss_inquire_sec_context_by_oid (OM_uint32 *minor_status, 786 const gss_ctx_id_t context_handle, 787 const gss_OID desired_object, 788 gss_buffer_set_t *data_set); 789 790OM_uint32 791gss_encapsulate_token(gss_buffer_t /* input_token */, 792 gss_OID /* oid */, 793 gss_buffer_t /* output_token */); 794 795OM_uint32 796gss_decapsulate_token(gss_buffer_t /* input_token */, 797 gss_OID /* oid */, 798 gss_buffer_t /* output_token */); 799 800 801 802#ifdef __cplusplus 803} 804#endif 805 806#include <gssapi/gssapi_krb5.h> 807#include <gssapi/gssapi_spnego.h> 808 809#endif /* GSSAPI_GSSAPI_H_ */ 810