1178825Sdfr/*- 2178825Sdfr * Copyright (c) 2005 Doug Rabson 3178825Sdfr * All rights reserved. 4178825Sdfr * 5178825Sdfr * Redistribution and use in source and binary forms, with or without 6178825Sdfr * modification, are permitted provided that the following conditions 7178825Sdfr * are met: 8178825Sdfr * 1. Redistributions of source code must retain the above copyright 9178825Sdfr * notice, this list of conditions and the following disclaimer. 10178825Sdfr * 2. Redistributions in binary form must reproduce the above copyright 11178825Sdfr * notice, this list of conditions and the following disclaimer in the 12178825Sdfr * documentation and/or other materials provided with the distribution. 13178825Sdfr * 14178825Sdfr * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15178825Sdfr * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16178825Sdfr * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17178825Sdfr * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18178825Sdfr * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19178825Sdfr * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20178825Sdfr * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21178825Sdfr * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22178825Sdfr * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23178825Sdfr * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24178825Sdfr * SUCH DAMAGE. 25178825Sdfr * 26178825Sdfr * $FreeBSD: releng/10.2/crypto/heimdal/lib/gssapi/gssapi_mech.h 233294 2012-03-22 08:48:42Z stas $ 27178825Sdfr */ 28178825Sdfr 29178825Sdfr#ifndef GSSAPI_MECH_H 30178825Sdfr#define GSSAPI_MECH_H 1 31178825Sdfr 32178825Sdfr#include <gssapi.h> 33178825Sdfr 34233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_acquire_cred_t 35178825Sdfr (OM_uint32 *, /* minor_status */ 36178825Sdfr const gss_name_t, /* desired_name */ 37178825Sdfr OM_uint32, /* time_req */ 38178825Sdfr const gss_OID_set, /* desired_mechs */ 39178825Sdfr gss_cred_usage_t, /* cred_usage */ 40178825Sdfr gss_cred_id_t *, /* output_cred_handle */ 41178825Sdfr gss_OID_set *, /* actual_mechs */ 42178825Sdfr OM_uint32 * /* time_rec */ 43178825Sdfr ); 44178825Sdfr 45233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_release_cred_t 46178825Sdfr (OM_uint32 *, /* minor_status */ 47178825Sdfr gss_cred_id_t * /* cred_handle */ 48178825Sdfr ); 49178825Sdfr 50233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_init_sec_context_t 51178825Sdfr (OM_uint32 *, /* minor_status */ 52178825Sdfr const gss_cred_id_t, /* initiator_cred_handle */ 53178825Sdfr gss_ctx_id_t *, /* context_handle */ 54178825Sdfr const gss_name_t, /* target_name */ 55178825Sdfr const gss_OID, /* mech_type */ 56178825Sdfr OM_uint32, /* req_flags */ 57178825Sdfr OM_uint32, /* time_req */ 58178825Sdfr const gss_channel_bindings_t, 59178825Sdfr /* input_chan_bindings */ 60178825Sdfr const gss_buffer_t, /* input_token */ 61178825Sdfr gss_OID *, /* actual_mech_type */ 62178825Sdfr gss_buffer_t, /* output_token */ 63178825Sdfr OM_uint32 *, /* ret_flags */ 64178825Sdfr OM_uint32 * /* time_rec */ 65178825Sdfr ); 66178825Sdfr 67233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_accept_sec_context_t 68178825Sdfr (OM_uint32 *, /* minor_status */ 69178825Sdfr gss_ctx_id_t *, /* context_handle */ 70178825Sdfr const gss_cred_id_t, /* acceptor_cred_handle */ 71178825Sdfr const gss_buffer_t, /* input_token_buffer */ 72178825Sdfr const gss_channel_bindings_t, 73178825Sdfr /* input_chan_bindings */ 74178825Sdfr gss_name_t *, /* src_name */ 75178825Sdfr gss_OID *, /* mech_type */ 76178825Sdfr gss_buffer_t, /* output_token */ 77178825Sdfr OM_uint32 *, /* ret_flags */ 78178825Sdfr OM_uint32 *, /* time_rec */ 79178825Sdfr gss_cred_id_t * /* delegated_cred_handle */ 80178825Sdfr ); 81178825Sdfr 82233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_process_context_token_t 83178825Sdfr (OM_uint32 *, /* minor_status */ 84178825Sdfr const gss_ctx_id_t, /* context_handle */ 85178825Sdfr const gss_buffer_t /* token_buffer */ 86178825Sdfr ); 87178825Sdfr 88233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_delete_sec_context_t 89178825Sdfr (OM_uint32 *, /* minor_status */ 90178825Sdfr gss_ctx_id_t *, /* context_handle */ 91178825Sdfr gss_buffer_t /* output_token */ 92178825Sdfr ); 93178825Sdfr 94233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_context_time_t 95178825Sdfr (OM_uint32 *, /* minor_status */ 96178825Sdfr const gss_ctx_id_t, /* context_handle */ 97178825Sdfr OM_uint32 * /* time_rec */ 98178825Sdfr ); 99178825Sdfr 100233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_get_mic_t 101178825Sdfr (OM_uint32 *, /* minor_status */ 102178825Sdfr const gss_ctx_id_t, /* context_handle */ 103178825Sdfr gss_qop_t, /* qop_req */ 104178825Sdfr const gss_buffer_t, /* message_buffer */ 105178825Sdfr gss_buffer_t /* message_token */ 106178825Sdfr ); 107178825Sdfr 108233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_verify_mic_t 109178825Sdfr (OM_uint32 *, /* minor_status */ 110178825Sdfr const gss_ctx_id_t, /* context_handle */ 111178825Sdfr const gss_buffer_t, /* message_buffer */ 112178825Sdfr const gss_buffer_t, /* token_buffer */ 113178825Sdfr gss_qop_t * /* qop_state */ 114178825Sdfr ); 115178825Sdfr 116233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_wrap_t 117178825Sdfr (OM_uint32 *, /* minor_status */ 118178825Sdfr const gss_ctx_id_t, /* context_handle */ 119178825Sdfr int, /* conf_req_flag */ 120178825Sdfr gss_qop_t, /* qop_req */ 121178825Sdfr const gss_buffer_t, /* input_message_buffer */ 122178825Sdfr int *, /* conf_state */ 123178825Sdfr gss_buffer_t /* output_message_buffer */ 124178825Sdfr ); 125178825Sdfr 126233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_unwrap_t 127178825Sdfr (OM_uint32 *, /* minor_status */ 128178825Sdfr const gss_ctx_id_t, /* context_handle */ 129178825Sdfr const gss_buffer_t, /* input_message_buffer */ 130178825Sdfr gss_buffer_t, /* output_message_buffer */ 131178825Sdfr int *, /* conf_state */ 132178825Sdfr gss_qop_t * /* qop_state */ 133178825Sdfr ); 134178825Sdfr 135233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_display_status_t 136178825Sdfr (OM_uint32 *, /* minor_status */ 137178825Sdfr OM_uint32, /* status_value */ 138178825Sdfr int, /* status_type */ 139178825Sdfr const gss_OID, /* mech_type */ 140178825Sdfr OM_uint32 *, /* message_context */ 141178825Sdfr gss_buffer_t /* status_string */ 142178825Sdfr ); 143178825Sdfr 144233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_indicate_mechs_t 145178825Sdfr (OM_uint32 *, /* minor_status */ 146178825Sdfr gss_OID_set * /* mech_set */ 147178825Sdfr ); 148178825Sdfr 149233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_compare_name_t 150178825Sdfr (OM_uint32 *, /* minor_status */ 151178825Sdfr const gss_name_t, /* name1 */ 152178825Sdfr const gss_name_t, /* name2 */ 153178825Sdfr int * /* name_equal */ 154178825Sdfr ); 155178825Sdfr 156233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_display_name_t 157178825Sdfr (OM_uint32 *, /* minor_status */ 158178825Sdfr const gss_name_t, /* input_name */ 159178825Sdfr gss_buffer_t, /* output_name_buffer */ 160178825Sdfr gss_OID * /* output_name_type */ 161178825Sdfr ); 162178825Sdfr 163233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_import_name_t 164178825Sdfr (OM_uint32 *, /* minor_status */ 165178825Sdfr const gss_buffer_t, /* input_name_buffer */ 166178825Sdfr const gss_OID, /* input_name_type */ 167178825Sdfr gss_name_t * /* output_name */ 168178825Sdfr ); 169178825Sdfr 170233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_export_name_t 171178825Sdfr (OM_uint32 *, /* minor_status */ 172178825Sdfr const gss_name_t, /* input_name */ 173178825Sdfr gss_buffer_t /* exported_name */ 174178825Sdfr ); 175178825Sdfr 176233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_release_name_t 177178825Sdfr (OM_uint32 *, /* minor_status */ 178178825Sdfr gss_name_t * /* input_name */ 179178825Sdfr ); 180178825Sdfr 181233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_inquire_cred_t 182178825Sdfr (OM_uint32 *, /* minor_status */ 183178825Sdfr const gss_cred_id_t, /* cred_handle */ 184178825Sdfr gss_name_t *, /* name */ 185178825Sdfr OM_uint32 *, /* lifetime */ 186178825Sdfr gss_cred_usage_t *, /* cred_usage */ 187178825Sdfr gss_OID_set * /* mechanisms */ 188178825Sdfr ); 189178825Sdfr 190233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_inquire_context_t 191178825Sdfr (OM_uint32 *, /* minor_status */ 192178825Sdfr const gss_ctx_id_t, /* context_handle */ 193178825Sdfr gss_name_t *, /* src_name */ 194178825Sdfr gss_name_t *, /* targ_name */ 195178825Sdfr OM_uint32 *, /* lifetime_rec */ 196178825Sdfr gss_OID *, /* mech_type */ 197178825Sdfr OM_uint32 *, /* ctx_flags */ 198178825Sdfr int *, /* locally_initiated */ 199178825Sdfr int * /* open */ 200178825Sdfr ); 201178825Sdfr 202233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_wrap_size_limit_t 203178825Sdfr (OM_uint32 *, /* minor_status */ 204178825Sdfr const gss_ctx_id_t, /* context_handle */ 205178825Sdfr int, /* conf_req_flag */ 206178825Sdfr gss_qop_t, /* qop_req */ 207178825Sdfr OM_uint32, /* req_output_size */ 208178825Sdfr OM_uint32 * /* max_input_size */ 209178825Sdfr ); 210178825Sdfr 211233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_add_cred_t ( 212178825Sdfr OM_uint32 *, /* minor_status */ 213178825Sdfr const gss_cred_id_t, /* input_cred_handle */ 214178825Sdfr const gss_name_t, /* desired_name */ 215178825Sdfr const gss_OID, /* desired_mech */ 216178825Sdfr gss_cred_usage_t, /* cred_usage */ 217178825Sdfr OM_uint32, /* initiator_time_req */ 218178825Sdfr OM_uint32, /* acceptor_time_req */ 219178825Sdfr gss_cred_id_t *, /* output_cred_handle */ 220178825Sdfr gss_OID_set *, /* actual_mechs */ 221178825Sdfr OM_uint32 *, /* initiator_time_rec */ 222178825Sdfr OM_uint32 * /* acceptor_time_rec */ 223178825Sdfr ); 224178825Sdfr 225233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_inquire_cred_by_mech_t ( 226178825Sdfr OM_uint32 *, /* minor_status */ 227178825Sdfr const gss_cred_id_t, /* cred_handle */ 228178825Sdfr const gss_OID, /* mech_type */ 229178825Sdfr gss_name_t *, /* name */ 230178825Sdfr OM_uint32 *, /* initiator_lifetime */ 231178825Sdfr OM_uint32 *, /* acceptor_lifetime */ 232178825Sdfr gss_cred_usage_t * /* cred_usage */ 233178825Sdfr ); 234178825Sdfr 235233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_export_sec_context_t ( 236178825Sdfr OM_uint32 *, /* minor_status */ 237178825Sdfr gss_ctx_id_t *, /* context_handle */ 238178825Sdfr gss_buffer_t /* interprocess_token */ 239178825Sdfr ); 240178825Sdfr 241233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_import_sec_context_t ( 242178825Sdfr OM_uint32 *, /* minor_status */ 243178825Sdfr const gss_buffer_t, /* interprocess_token */ 244178825Sdfr gss_ctx_id_t * /* context_handle */ 245178825Sdfr ); 246178825Sdfr 247233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_inquire_names_for_mech_t ( 248178825Sdfr OM_uint32 *, /* minor_status */ 249178825Sdfr const gss_OID, /* mechanism */ 250178825Sdfr gss_OID_set * /* name_types */ 251178825Sdfr ); 252178825Sdfr 253233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_inquire_mechs_for_name_t ( 254178825Sdfr OM_uint32 *, /* minor_status */ 255178825Sdfr const gss_name_t, /* input_name */ 256178825Sdfr gss_OID_set * /* mech_types */ 257178825Sdfr ); 258178825Sdfr 259233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_canonicalize_name_t ( 260178825Sdfr OM_uint32 *, /* minor_status */ 261178825Sdfr const gss_name_t, /* input_name */ 262178825Sdfr const gss_OID, /* mech_type */ 263178825Sdfr gss_name_t * /* output_name */ 264178825Sdfr ); 265178825Sdfr 266233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_duplicate_name_t ( 267178825Sdfr OM_uint32 *, /* minor_status */ 268178825Sdfr const gss_name_t, /* src_name */ 269178825Sdfr gss_name_t * /* dest_name */ 270178825Sdfr ); 271178825Sdfr 272233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_inquire_sec_context_by_oid ( 273178825Sdfr OM_uint32 *minor_status, 274178825Sdfr const gss_ctx_id_t context_handle, 275178825Sdfr const gss_OID desired_object, 276178825Sdfr gss_buffer_set_t *data_set 277178825Sdfr ); 278178825Sdfr 279233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_inquire_cred_by_oid ( 280178825Sdfr OM_uint32 *minor_status, 281178825Sdfr const gss_cred_id_t cred, 282178825Sdfr const gss_OID desired_object, 283178825Sdfr gss_buffer_set_t *data_set 284178825Sdfr ); 285178825Sdfr 286233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_set_sec_context_option ( 287178825Sdfr OM_uint32 *minor_status, 288178825Sdfr gss_ctx_id_t *cred_handle, 289178825Sdfr const gss_OID desired_object, 290178825Sdfr const gss_buffer_t value 291178825Sdfr ); 292178825Sdfr 293233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_set_cred_option ( 294178825Sdfr OM_uint32 *minor_status, 295178825Sdfr gss_cred_id_t *cred_handle, 296178825Sdfr const gss_OID desired_object, 297178825Sdfr const gss_buffer_t value 298178825Sdfr ); 299178825Sdfr 300178825Sdfr 301233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_pseudo_random( 302178825Sdfr OM_uint32 *minor_status, 303178825Sdfr gss_ctx_id_t context, 304178825Sdfr int prf_key, 305178825Sdfr const gss_buffer_t prf_in, 306178825Sdfr ssize_t desired_output_len, 307178825Sdfr gss_buffer_t prf_out 308178825Sdfr ); 309178825Sdfr 310233294Sstastypedef OM_uint32 GSSAPI_CALLCONV 311233294Sstas_gss_wrap_iov_t(OM_uint32 *minor_status, 312233294Sstas gss_ctx_id_t context_handle, 313233294Sstas int conf_req_flag, 314233294Sstas gss_qop_t qop_req, 315233294Sstas int * conf_state, 316233294Sstas gss_iov_buffer_desc *iov, 317233294Sstas int iov_count); 318178825Sdfr 319233294Sstastypedef OM_uint32 GSSAPI_CALLCONV 320233294Sstas_gss_unwrap_iov_t(OM_uint32 *minor_status, 321233294Sstas gss_ctx_id_t context_handle, 322233294Sstas int *conf_state, 323233294Sstas gss_qop_t *qop_state, 324233294Sstas gss_iov_buffer_desc *iov, 325233294Sstas int iov_count); 326233294Sstas 327233294Sstastypedef OM_uint32 GSSAPI_CALLCONV 328233294Sstas_gss_wrap_iov_length_t(OM_uint32 * minor_status, 329233294Sstas gss_ctx_id_t context_handle, 330233294Sstas int conf_req_flag, 331233294Sstas gss_qop_t qop_req, 332233294Sstas int *conf_state, 333233294Sstas gss_iov_buffer_desc *iov, 334233294Sstas int iov_count); 335233294Sstas 336233294Sstastypedef OM_uint32 GSSAPI_CALLCONV 337233294Sstas_gss_store_cred_t(OM_uint32 *minor_status, 338233294Sstas gss_cred_id_t input_cred_handle, 339233294Sstas gss_cred_usage_t cred_usage, 340233294Sstas const gss_OID desired_mech, 341233294Sstas OM_uint32 overwrite_cred, 342233294Sstas OM_uint32 default_cred, 343233294Sstas gss_OID_set *elements_stored, 344233294Sstas gss_cred_usage_t *cred_usage_stored); 345233294Sstas 346233294Sstastypedef OM_uint32 GSSAPI_CALLCONV 347233294Sstas_gss_export_cred_t(OM_uint32 *minor_status, 348233294Sstas gss_cred_id_t cred_handle, 349233294Sstas gss_buffer_t cred_token); 350233294Sstas 351233294Sstastypedef OM_uint32 GSSAPI_CALLCONV 352233294Sstas_gss_import_cred_t(OM_uint32 * minor_status, 353233294Sstas gss_buffer_t cred_token, 354233294Sstas gss_cred_id_t * cred_handle); 355233294Sstas 356233294Sstas 357233294Sstastypedef OM_uint32 GSSAPI_CALLCONV 358233294Sstas_gss_acquire_cred_ext_t(OM_uint32 * /*minor_status */, 359233294Sstas const gss_name_t /* desired_name */, 360233294Sstas gss_const_OID /* credential_type */, 361233294Sstas const void * /* credential_data */, 362233294Sstas OM_uint32 /* time_req */, 363233294Sstas gss_const_OID /* desired_mech */, 364233294Sstas gss_cred_usage_t /* cred_usage */, 365233294Sstas gss_cred_id_t * /* output_cred_handle */); 366233294Sstas 367233294Sstastypedef void GSSAPI_CALLCONV 368233294Sstas_gss_iter_creds_t(OM_uint32 /* flags */, 369233294Sstas void * /* userctx */, 370233294Sstas void (* /*cred_iter */ )(void *, gss_OID, gss_cred_id_t)); 371233294Sstas 372233294Sstastypedef OM_uint32 GSSAPI_CALLCONV 373233294Sstas_gss_destroy_cred_t(OM_uint32 * /* minor_status */, 374233294Sstas gss_cred_id_t * /* cred */); 375233294Sstas 376233294Sstastypedef OM_uint32 GSSAPI_CALLCONV 377233294Sstas_gss_cred_hold_t(OM_uint32 * /* minor_status */, 378233294Sstas gss_cred_id_t /* cred */); 379233294Sstas 380233294Sstastypedef OM_uint32 GSSAPI_CALLCONV 381233294Sstas_gss_cred_unhold_t(OM_uint32 * /* minor_status */, 382233294Sstas gss_cred_id_t /* cred */); 383233294Sstas 384233294Sstastypedef OM_uint32 GSSAPI_CALLCONV 385233294Sstas_gss_cred_label_set_t(OM_uint32 * /* minor_status */, 386233294Sstas gss_cred_id_t /* cred */, 387233294Sstas const char * /* label */, 388233294Sstas gss_buffer_t /* value */); 389233294Sstas 390233294Sstastypedef OM_uint32 GSSAPI_CALLCONV 391233294Sstas_gss_cred_label_get_t(OM_uint32 * /* minor_status */, 392233294Sstas gss_cred_id_t /* cred */, 393233294Sstas const char * /* label */, 394233294Sstas gss_buffer_t /* value */); 395233294Sstas 396233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_display_name_ext_t ( 397233294Sstas OM_uint32 *, /* minor_status */ 398233294Sstas gss_name_t, /* name */ 399233294Sstas gss_OID, /* display_as_name_type */ 400233294Sstas gss_buffer_t /* display_name */ 401233294Sstas ); 402233294Sstas 403233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_inquire_name_t ( 404233294Sstas OM_uint32 *, /* minor_status */ 405233294Sstas gss_name_t, /* name */ 406233294Sstas int *, /* name_is_MN */ 407233294Sstas gss_OID *, /* MN_mech */ 408233294Sstas gss_buffer_set_t * /* attrs */ 409233294Sstas ); 410233294Sstas 411233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_get_name_attribute_t ( 412233294Sstas OM_uint32 *, /* minor_status */ 413233294Sstas gss_name_t, /* name */ 414233294Sstas gss_buffer_t, /* attr */ 415233294Sstas int *, /* authenticated */ 416233294Sstas int *, /* complete */ 417233294Sstas gss_buffer_t, /* value */ 418233294Sstas gss_buffer_t, /* display_value */ 419233294Sstas int * /* more */ 420233294Sstas ); 421233294Sstas 422233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_set_name_attribute_t ( 423233294Sstas OM_uint32 *, /* minor_status */ 424233294Sstas gss_name_t, /* name */ 425233294Sstas int, /* complete */ 426233294Sstas gss_buffer_t, /* attr */ 427233294Sstas gss_buffer_t /* value */ 428233294Sstas ); 429233294Sstas 430233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_delete_name_attribute_t ( 431233294Sstas OM_uint32 *, /* minor_status */ 432233294Sstas gss_name_t, /* name */ 433233294Sstas gss_buffer_t /* attr */ 434233294Sstas ); 435233294Sstas 436233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_export_name_composite_t ( 437233294Sstas OM_uint32 *, /* minor_status */ 438233294Sstas gss_name_t, /* name */ 439233294Sstas gss_buffer_t /* exp_composite_name */ 440233294Sstas ); 441233294Sstas 442233294Sstas/* 443233294Sstas * 444233294Sstas */ 445233294Sstas 446233294Sstastypedef struct gss_mo_desc_struct gss_mo_desc; 447233294Sstas 448233294Sstastypedef OM_uint32 GSSAPI_CALLCONV 449233294Sstas_gss_mo_init (OM_uint32 *, gss_OID, gss_mo_desc **, size_t *); 450233294Sstas 451233294Sstas 452233294Sstasstruct gss_mo_desc_struct { 453233294Sstas gss_OID option; 454233294Sstas OM_uint32 flags; 455233294Sstas#define GSS_MO_MA 1 456233294Sstas#define GSS_MO_MA_CRITICAL 2 457233294Sstas const char *name; 458233294Sstas void *ctx; 459233294Sstas int (*get)(gss_const_OID, gss_mo_desc *, gss_buffer_t); 460233294Sstas int (*set)(gss_const_OID, gss_mo_desc *, int, gss_buffer_t); 461233294Sstas}; 462233294Sstas 463233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_pname_to_uid_t ( 464233294Sstas OM_uint32 *, /* minor_status */ 465233294Sstas const gss_name_t, /* name */ 466233294Sstas const gss_OID, /* mech_type */ 467233294Sstas uid_t * /* uidOut */ 468233294Sstas ); 469233294Sstas 470233294Sstastypedef OM_uint32 GSSAPI_CALLCONV _gss_authorize_localname_t ( 471233294Sstas OM_uint32 *, /* minor_status */ 472233294Sstas const gss_name_t, /* name */ 473233294Sstas gss_const_buffer_t, /* user */ 474233294Sstas gss_const_OID /* user_name_type */ 475233294Sstas ); 476233294Sstas 477233294Sstas/* mechglue internal */ 478233294Sstasstruct gss_mech_compat_desc_struct; 479233294Sstas 480233294Sstas#define GMI_VERSION 5 481233294Sstas 482233294Sstas/* gm_flags */ 483233294Sstas#define GM_USE_MG_CRED 1 /* uses mech glue credentials */ 484233294Sstas 485178825Sdfrtypedef struct gssapi_mech_interface_desc { 486178825Sdfr unsigned gm_version; 487178825Sdfr const char *gm_name; 488178825Sdfr gss_OID_desc gm_mech_oid; 489233294Sstas unsigned gm_flags; 490178825Sdfr _gss_acquire_cred_t *gm_acquire_cred; 491178825Sdfr _gss_release_cred_t *gm_release_cred; 492178825Sdfr _gss_init_sec_context_t *gm_init_sec_context; 493178825Sdfr _gss_accept_sec_context_t *gm_accept_sec_context; 494178825Sdfr _gss_process_context_token_t *gm_process_context_token; 495178825Sdfr _gss_delete_sec_context_t *gm_delete_sec_context; 496178825Sdfr _gss_context_time_t *gm_context_time; 497178825Sdfr _gss_get_mic_t *gm_get_mic; 498178825Sdfr _gss_verify_mic_t *gm_verify_mic; 499178825Sdfr _gss_wrap_t *gm_wrap; 500178825Sdfr _gss_unwrap_t *gm_unwrap; 501178825Sdfr _gss_display_status_t *gm_display_status; 502178825Sdfr _gss_indicate_mechs_t *gm_indicate_mechs; 503178825Sdfr _gss_compare_name_t *gm_compare_name; 504178825Sdfr _gss_display_name_t *gm_display_name; 505178825Sdfr _gss_import_name_t *gm_import_name; 506178825Sdfr _gss_export_name_t *gm_export_name; 507178825Sdfr _gss_release_name_t *gm_release_name; 508178825Sdfr _gss_inquire_cred_t *gm_inquire_cred; 509178825Sdfr _gss_inquire_context_t *gm_inquire_context; 510178825Sdfr _gss_wrap_size_limit_t *gm_wrap_size_limit; 511178825Sdfr _gss_add_cred_t *gm_add_cred; 512178825Sdfr _gss_inquire_cred_by_mech_t *gm_inquire_cred_by_mech; 513178825Sdfr _gss_export_sec_context_t *gm_export_sec_context; 514178825Sdfr _gss_import_sec_context_t *gm_import_sec_context; 515178825Sdfr _gss_inquire_names_for_mech_t *gm_inquire_names_for_mech; 516178825Sdfr _gss_inquire_mechs_for_name_t *gm_inquire_mechs_for_name; 517178825Sdfr _gss_canonicalize_name_t *gm_canonicalize_name; 518178825Sdfr _gss_duplicate_name_t *gm_duplicate_name; 519178825Sdfr _gss_inquire_sec_context_by_oid *gm_inquire_sec_context_by_oid; 520178825Sdfr _gss_inquire_cred_by_oid *gm_inquire_cred_by_oid; 521178825Sdfr _gss_set_sec_context_option *gm_set_sec_context_option; 522178825Sdfr _gss_set_cred_option *gm_set_cred_option; 523178825Sdfr _gss_pseudo_random *gm_pseudo_random; 524233294Sstas _gss_wrap_iov_t *gm_wrap_iov; 525233294Sstas _gss_unwrap_iov_t *gm_unwrap_iov; 526233294Sstas _gss_wrap_iov_length_t *gm_wrap_iov_length; 527233294Sstas _gss_store_cred_t *gm_store_cred; 528233294Sstas _gss_export_cred_t *gm_export_cred; 529233294Sstas _gss_import_cred_t *gm_import_cred; 530233294Sstas _gss_acquire_cred_ext_t *gm_acquire_cred_ext; 531233294Sstas _gss_iter_creds_t *gm_iter_creds; 532233294Sstas _gss_destroy_cred_t *gm_destroy_cred; 533233294Sstas _gss_cred_hold_t *gm_cred_hold; 534233294Sstas _gss_cred_unhold_t *gm_cred_unhold; 535233294Sstas _gss_cred_label_get_t *gm_cred_label_get; 536233294Sstas _gss_cred_label_set_t *gm_cred_label_set; 537233294Sstas gss_mo_desc *gm_mo; 538233294Sstas size_t gm_mo_num; 539233294Sstas _gss_pname_to_uid_t *gm_pname_to_uid; 540233294Sstas _gss_authorize_localname_t *gm_authorize_localname; 541233294Sstas _gss_display_name_ext_t *gm_display_name_ext; 542233294Sstas _gss_inquire_name_t *gm_inquire_name; 543233294Sstas _gss_get_name_attribute_t *gm_get_name_attribute; 544233294Sstas _gss_set_name_attribute_t *gm_set_name_attribute; 545233294Sstas _gss_delete_name_attribute_t *gm_delete_name_attribute; 546233294Sstas _gss_export_name_composite_t *gm_export_name_composite; 547233294Sstas struct gss_mech_compat_desc_struct *gm_compat; 548178825Sdfr} gssapi_mech_interface_desc, *gssapi_mech_interface; 549178825Sdfr 550178825Sdfrgssapi_mech_interface 551233294Sstas__gss_get_mechanism(gss_const_OID /* oid */); 552178825Sdfr 553178825Sdfrgssapi_mech_interface __gss_spnego_initialize(void); 554178825Sdfrgssapi_mech_interface __gss_krb5_initialize(void); 555178825Sdfrgssapi_mech_interface __gss_ntlm_initialize(void); 556178825Sdfr 557233294Sstasvoid gss_mg_collect_error(gss_OID, OM_uint32, OM_uint32); 558233294Sstas 559233294Sstasint _gss_mo_get_option_1(gss_const_OID, gss_mo_desc *, gss_buffer_t); 560233294Sstasint _gss_mo_get_option_0(gss_const_OID, gss_mo_desc *, gss_buffer_t); 561233294Sstasint _gss_mo_get_ctx_as_string(gss_const_OID, gss_mo_desc *, gss_buffer_t); 562233294Sstas 563233294Sstasstruct _gss_oid_name_table { 564233294Sstas gss_OID oid; 565233294Sstas const char *name; 566233294Sstas const char *short_desc; 567233294Sstas const char *long_desc; 568233294Sstas}; 569233294Sstas 570233294Sstasextern struct _gss_oid_name_table _gss_ont_mech[]; 571233294Sstasextern struct _gss_oid_name_table _gss_ont_ma[]; 572233294Sstas 573233294Sstas/* 574233294Sstas * Extended credentials acqusition API, not to be exported until 575233294Sstas * it or something equivalent has been standardised. 576233294Sstas */ 577233294Sstasextern gss_OID_desc GSSAPI_LIB_VARIABLE __gss_c_cred_password_oid_desc; 578233294Sstas#define GSS_C_CRED_PASSWORD (&__gss_c_cred_password_oid_desc) 579233294Sstas 580233294Sstasextern gss_OID_desc GSSAPI_LIB_VARIABLE __gss_c_cred_certificate_oid_desc; 581233294Sstas#define GSS_C_CRED_CERTIFICATE (&__gss_c_cred_certificate_oid_desc) 582233294Sstas 583233294SstasOM_uint32 _gss_acquire_cred_ext 584233294Sstas (OM_uint32 * /*minor_status*/, 585233294Sstas const gss_name_t /*desired_name*/, 586233294Sstas gss_const_OID /*credential_type*/, 587233294Sstas const void * /*credential_data*/, 588233294Sstas OM_uint32 /*time_req*/, 589233294Sstas gss_const_OID /*desired_mech*/, 590233294Sstas gss_cred_usage_t /*cred_usage*/, 591233294Sstas gss_cred_id_t * /*output_cred_handle*/ 592233294Sstas ); 593233294Sstas 594178825Sdfr#endif /* GSSAPI_MECH_H */ 595