1c0b9f4feSDoug Rabson /*- 2*4d846d26SWarner Losh * SPDX-License-Identifier: BSD-2-Clause 35e53a4f9SPedro F. Giffuni * 4c0b9f4feSDoug Rabson * Copyright (c) 2005 Doug Rabson 5c0b9f4feSDoug Rabson * All rights reserved. 6c0b9f4feSDoug Rabson * 7c0b9f4feSDoug Rabson * Redistribution and use in source and binary forms, with or without 8c0b9f4feSDoug Rabson * modification, are permitted provided that the following conditions 9c0b9f4feSDoug Rabson * are met: 10c0b9f4feSDoug Rabson * 1. Redistributions of source code must retain the above copyright 11c0b9f4feSDoug Rabson * notice, this list of conditions and the following disclaimer. 12c0b9f4feSDoug Rabson * 2. Redistributions in binary form must reproduce the above copyright 13c0b9f4feSDoug Rabson * notice, this list of conditions and the following disclaimer in the 14c0b9f4feSDoug Rabson * documentation and/or other materials provided with the distribution. 15c0b9f4feSDoug Rabson * 16c0b9f4feSDoug Rabson * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 17c0b9f4feSDoug Rabson * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18c0b9f4feSDoug Rabson * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19c0b9f4feSDoug Rabson * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 20c0b9f4feSDoug Rabson * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21c0b9f4feSDoug Rabson * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22c0b9f4feSDoug Rabson * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23c0b9f4feSDoug Rabson * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24c0b9f4feSDoug Rabson * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25c0b9f4feSDoug Rabson * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26c0b9f4feSDoug Rabson * SUCH DAMAGE. 27c0b9f4feSDoug Rabson */ 28c0b9f4feSDoug Rabson 2933f12199SDoug Rabson #include <unistd.h> 30c0b9f4feSDoug Rabson #include <sys/queue.h> 31c0b9f4feSDoug Rabson 32c0b9f4feSDoug Rabson typedef OM_uint32 _gss_acquire_cred_t 33c0b9f4feSDoug Rabson (OM_uint32 *, /* minor_status */ 34c0b9f4feSDoug Rabson const gss_name_t, /* desired_name */ 35c0b9f4feSDoug Rabson OM_uint32, /* time_req */ 36c0b9f4feSDoug Rabson const gss_OID_set, /* desired_mechs */ 37c0b9f4feSDoug Rabson gss_cred_usage_t, /* cred_usage */ 38c0b9f4feSDoug Rabson gss_cred_id_t *, /* output_cred_handle */ 39c0b9f4feSDoug Rabson gss_OID_set *, /* actual_mechs */ 40c0b9f4feSDoug Rabson OM_uint32 * /* time_rec */ 41c0b9f4feSDoug Rabson ); 42c0b9f4feSDoug Rabson 43c0b9f4feSDoug Rabson typedef OM_uint32 _gss_release_cred_t 44c0b9f4feSDoug Rabson (OM_uint32 *, /* minor_status */ 45c0b9f4feSDoug Rabson gss_cred_id_t * /* cred_handle */ 46c0b9f4feSDoug Rabson ); 47c0b9f4feSDoug Rabson 48c0b9f4feSDoug Rabson typedef OM_uint32 _gss_init_sec_context_t 49c0b9f4feSDoug Rabson (OM_uint32 *, /* minor_status */ 50c0b9f4feSDoug Rabson const gss_cred_id_t, /* initiator_cred_handle */ 51c0b9f4feSDoug Rabson gss_ctx_id_t *, /* context_handle */ 52c0b9f4feSDoug Rabson const gss_name_t, /* target_name */ 53c0b9f4feSDoug Rabson const gss_OID, /* mech_type */ 54c0b9f4feSDoug Rabson OM_uint32, /* req_flags */ 55c0b9f4feSDoug Rabson OM_uint32, /* time_req */ 56c0b9f4feSDoug Rabson const gss_channel_bindings_t, 57c0b9f4feSDoug Rabson /* input_chan_bindings */ 58c0b9f4feSDoug Rabson const gss_buffer_t, /* input_token */ 59c0b9f4feSDoug Rabson gss_OID *, /* actual_mech_type */ 60c0b9f4feSDoug Rabson gss_buffer_t, /* output_token */ 61c0b9f4feSDoug Rabson OM_uint32 *, /* ret_flags */ 62c0b9f4feSDoug Rabson OM_uint32 * /* time_rec */ 63c0b9f4feSDoug Rabson ); 64c0b9f4feSDoug Rabson 65c0b9f4feSDoug Rabson typedef OM_uint32 _gss_accept_sec_context_t 66c0b9f4feSDoug Rabson (OM_uint32 *, /* minor_status */ 67c0b9f4feSDoug Rabson gss_ctx_id_t *, /* context_handle */ 68c0b9f4feSDoug Rabson const gss_cred_id_t, /* acceptor_cred_handle */ 69c0b9f4feSDoug Rabson const gss_buffer_t, /* input_token_buffer */ 70c0b9f4feSDoug Rabson const gss_channel_bindings_t, 71c0b9f4feSDoug Rabson /* input_chan_bindings */ 72c0b9f4feSDoug Rabson gss_name_t *, /* src_name */ 73c0b9f4feSDoug Rabson gss_OID *, /* mech_type */ 74c0b9f4feSDoug Rabson gss_buffer_t, /* output_token */ 75c0b9f4feSDoug Rabson OM_uint32 *, /* ret_flags */ 76c0b9f4feSDoug Rabson OM_uint32 *, /* time_rec */ 77c0b9f4feSDoug Rabson gss_cred_id_t * /* delegated_cred_handle */ 78c0b9f4feSDoug Rabson ); 79c0b9f4feSDoug Rabson 80c0b9f4feSDoug Rabson typedef OM_uint32 _gss_process_context_token_t 81c0b9f4feSDoug Rabson (OM_uint32 *, /* minor_status */ 82c0b9f4feSDoug Rabson const gss_ctx_id_t, /* context_handle */ 83c0b9f4feSDoug Rabson const gss_buffer_t /* token_buffer */ 84c0b9f4feSDoug Rabson ); 85c0b9f4feSDoug Rabson 86c0b9f4feSDoug Rabson typedef OM_uint32 _gss_delete_sec_context_t 87c0b9f4feSDoug Rabson (OM_uint32 *, /* minor_status */ 88c0b9f4feSDoug Rabson gss_ctx_id_t *, /* context_handle */ 89c0b9f4feSDoug Rabson gss_buffer_t /* output_token */ 90c0b9f4feSDoug Rabson ); 91c0b9f4feSDoug Rabson 92c0b9f4feSDoug Rabson typedef OM_uint32 _gss_context_time_t 93c0b9f4feSDoug Rabson (OM_uint32 *, /* minor_status */ 94c0b9f4feSDoug Rabson const gss_ctx_id_t, /* context_handle */ 95c0b9f4feSDoug Rabson OM_uint32 * /* time_rec */ 96c0b9f4feSDoug Rabson ); 97c0b9f4feSDoug Rabson 98c0b9f4feSDoug Rabson typedef OM_uint32 _gss_get_mic_t 99c0b9f4feSDoug Rabson (OM_uint32 *, /* minor_status */ 100c0b9f4feSDoug Rabson const gss_ctx_id_t, /* context_handle */ 101c0b9f4feSDoug Rabson gss_qop_t, /* qop_req */ 102c0b9f4feSDoug Rabson const gss_buffer_t, /* message_buffer */ 103c0b9f4feSDoug Rabson gss_buffer_t /* message_token */ 104c0b9f4feSDoug Rabson ); 105c0b9f4feSDoug Rabson 106c0b9f4feSDoug Rabson typedef OM_uint32 _gss_verify_mic_t 107c0b9f4feSDoug Rabson (OM_uint32 *, /* minor_status */ 108c0b9f4feSDoug Rabson const gss_ctx_id_t, /* context_handle */ 109c0b9f4feSDoug Rabson const gss_buffer_t, /* message_buffer */ 110c0b9f4feSDoug Rabson const gss_buffer_t, /* token_buffer */ 111c0b9f4feSDoug Rabson gss_qop_t * /* qop_state */ 112c0b9f4feSDoug Rabson ); 113c0b9f4feSDoug Rabson 114c0b9f4feSDoug Rabson typedef OM_uint32 _gss_wrap_t 115c0b9f4feSDoug Rabson (OM_uint32 *, /* minor_status */ 116c0b9f4feSDoug Rabson const gss_ctx_id_t, /* context_handle */ 117c0b9f4feSDoug Rabson int, /* conf_req_flag */ 118c0b9f4feSDoug Rabson gss_qop_t, /* qop_req */ 119c0b9f4feSDoug Rabson const gss_buffer_t, /* input_message_buffer */ 120c0b9f4feSDoug Rabson int *, /* conf_state */ 121c0b9f4feSDoug Rabson gss_buffer_t /* output_message_buffer */ 122c0b9f4feSDoug Rabson ); 123c0b9f4feSDoug Rabson 124c0b9f4feSDoug Rabson typedef OM_uint32 _gss_unwrap_t 125c0b9f4feSDoug Rabson (OM_uint32 *, /* minor_status */ 126c0b9f4feSDoug Rabson const gss_ctx_id_t, /* context_handle */ 127c0b9f4feSDoug Rabson const gss_buffer_t, /* input_message_buffer */ 128c0b9f4feSDoug Rabson gss_buffer_t, /* output_message_buffer */ 129c0b9f4feSDoug Rabson int *, /* conf_state */ 130c0b9f4feSDoug Rabson gss_qop_t * /* qop_state */ 131c0b9f4feSDoug Rabson ); 132c0b9f4feSDoug Rabson 133c0b9f4feSDoug Rabson typedef OM_uint32 _gss_display_status_t 134c0b9f4feSDoug Rabson (OM_uint32 *, /* minor_status */ 135c0b9f4feSDoug Rabson OM_uint32, /* status_value */ 136c0b9f4feSDoug Rabson int, /* status_type */ 137c0b9f4feSDoug Rabson const gss_OID, /* mech_type */ 138c0b9f4feSDoug Rabson OM_uint32 *, /* message_context */ 139c0b9f4feSDoug Rabson gss_buffer_t /* status_string */ 140c0b9f4feSDoug Rabson ); 141c0b9f4feSDoug Rabson 142c0b9f4feSDoug Rabson typedef OM_uint32 _gss_indicate_mechs_t 143c0b9f4feSDoug Rabson (OM_uint32 *, /* minor_status */ 144c0b9f4feSDoug Rabson gss_OID_set * /* mech_set */ 145c0b9f4feSDoug Rabson ); 146c0b9f4feSDoug Rabson 147c0b9f4feSDoug Rabson typedef OM_uint32 _gss_compare_name_t 148c0b9f4feSDoug Rabson (OM_uint32 *, /* minor_status */ 149c0b9f4feSDoug Rabson const gss_name_t, /* name1 */ 150c0b9f4feSDoug Rabson const gss_name_t, /* name2 */ 151c0b9f4feSDoug Rabson int * /* name_equal */ 152c0b9f4feSDoug Rabson ); 153c0b9f4feSDoug Rabson 154c0b9f4feSDoug Rabson typedef OM_uint32 _gss_display_name_t 155c0b9f4feSDoug Rabson (OM_uint32 *, /* minor_status */ 156c0b9f4feSDoug Rabson const gss_name_t, /* input_name */ 157c0b9f4feSDoug Rabson gss_buffer_t, /* output_name_buffer */ 158c0b9f4feSDoug Rabson gss_OID * /* output_name_type */ 159c0b9f4feSDoug Rabson ); 160c0b9f4feSDoug Rabson 161c0b9f4feSDoug Rabson typedef OM_uint32 _gss_import_name_t 162c0b9f4feSDoug Rabson (OM_uint32 *, /* minor_status */ 163c0b9f4feSDoug Rabson const gss_buffer_t, /* input_name_buffer */ 164c0b9f4feSDoug Rabson const gss_OID, /* input_name_type */ 165c0b9f4feSDoug Rabson gss_name_t * /* output_name */ 166c0b9f4feSDoug Rabson ); 167c0b9f4feSDoug Rabson 168c0b9f4feSDoug Rabson typedef OM_uint32 _gss_export_name_t 169c0b9f4feSDoug Rabson (OM_uint32 *, /* minor_status */ 170c0b9f4feSDoug Rabson const gss_name_t, /* input_name */ 171c0b9f4feSDoug Rabson gss_buffer_t /* exported_name */ 172c0b9f4feSDoug Rabson ); 173c0b9f4feSDoug Rabson 174c0b9f4feSDoug Rabson typedef OM_uint32 _gss_release_name_t 175c0b9f4feSDoug Rabson (OM_uint32 *, /* minor_status */ 176c0b9f4feSDoug Rabson gss_name_t * /* input_name */ 177c0b9f4feSDoug Rabson ); 178c0b9f4feSDoug Rabson 179c0b9f4feSDoug Rabson typedef OM_uint32 _gss_inquire_cred_t 180c0b9f4feSDoug Rabson (OM_uint32 *, /* minor_status */ 181c0b9f4feSDoug Rabson const gss_cred_id_t, /* cred_handle */ 182c0b9f4feSDoug Rabson gss_name_t *, /* name */ 183c0b9f4feSDoug Rabson OM_uint32 *, /* lifetime */ 184c0b9f4feSDoug Rabson gss_cred_usage_t *, /* cred_usage */ 185c0b9f4feSDoug Rabson gss_OID_set * /* mechanisms */ 186c0b9f4feSDoug Rabson ); 187c0b9f4feSDoug Rabson 188c0b9f4feSDoug Rabson typedef OM_uint32 _gss_inquire_context_t 189c0b9f4feSDoug Rabson (OM_uint32 *, /* minor_status */ 190c0b9f4feSDoug Rabson const gss_ctx_id_t, /* context_handle */ 191c0b9f4feSDoug Rabson gss_name_t *, /* src_name */ 192c0b9f4feSDoug Rabson gss_name_t *, /* targ_name */ 193c0b9f4feSDoug Rabson OM_uint32 *, /* lifetime_rec */ 194c0b9f4feSDoug Rabson gss_OID *, /* mech_type */ 195c0b9f4feSDoug Rabson OM_uint32 *, /* ctx_flags */ 196c0b9f4feSDoug Rabson int *, /* locally_initiated */ 197c0b9f4feSDoug Rabson int * /* open */ 198c0b9f4feSDoug Rabson ); 199c0b9f4feSDoug Rabson 200c0b9f4feSDoug Rabson typedef OM_uint32 _gss_wrap_size_limit_t 201c0b9f4feSDoug Rabson (OM_uint32 *, /* minor_status */ 202c0b9f4feSDoug Rabson const gss_ctx_id_t, /* context_handle */ 203c0b9f4feSDoug Rabson int, /* conf_req_flag */ 204c0b9f4feSDoug Rabson gss_qop_t, /* qop_req */ 205c0b9f4feSDoug Rabson OM_uint32, /* req_output_size */ 206c0b9f4feSDoug Rabson OM_uint32 * /* max_input_size */ 207c0b9f4feSDoug Rabson ); 208c0b9f4feSDoug Rabson 209c0b9f4feSDoug Rabson typedef OM_uint32 _gss_add_cred_t ( 210c0b9f4feSDoug Rabson OM_uint32 *, /* minor_status */ 211c0b9f4feSDoug Rabson const gss_cred_id_t, /* input_cred_handle */ 212c0b9f4feSDoug Rabson const gss_name_t, /* desired_name */ 213c0b9f4feSDoug Rabson const gss_OID, /* desired_mech */ 214c0b9f4feSDoug Rabson gss_cred_usage_t, /* cred_usage */ 215c0b9f4feSDoug Rabson OM_uint32, /* initiator_time_req */ 216c0b9f4feSDoug Rabson OM_uint32, /* acceptor_time_req */ 217c0b9f4feSDoug Rabson gss_cred_id_t *, /* output_cred_handle */ 218c0b9f4feSDoug Rabson gss_OID_set *, /* actual_mechs */ 219c0b9f4feSDoug Rabson OM_uint32 *, /* initiator_time_rec */ 220c0b9f4feSDoug Rabson OM_uint32 * /* acceptor_time_rec */ 221c0b9f4feSDoug Rabson ); 222c0b9f4feSDoug Rabson 223c0b9f4feSDoug Rabson typedef OM_uint32 _gss_inquire_cred_by_mech_t ( 224c0b9f4feSDoug Rabson OM_uint32 *, /* minor_status */ 225c0b9f4feSDoug Rabson const gss_cred_id_t, /* cred_handle */ 226c0b9f4feSDoug Rabson const gss_OID, /* mech_type */ 227c0b9f4feSDoug Rabson gss_name_t *, /* name */ 228c0b9f4feSDoug Rabson OM_uint32 *, /* initiator_lifetime */ 229c0b9f4feSDoug Rabson OM_uint32 *, /* acceptor_lifetime */ 230c0b9f4feSDoug Rabson gss_cred_usage_t * /* cred_usage */ 231c0b9f4feSDoug Rabson ); 232c0b9f4feSDoug Rabson 233c0b9f4feSDoug Rabson typedef OM_uint32 _gss_export_sec_context_t ( 234c0b9f4feSDoug Rabson OM_uint32 *, /* minor_status */ 235c0b9f4feSDoug Rabson gss_ctx_id_t *, /* context_handle */ 236c0b9f4feSDoug Rabson gss_buffer_t /* interprocess_token */ 237c0b9f4feSDoug Rabson ); 238c0b9f4feSDoug Rabson 239c0b9f4feSDoug Rabson typedef OM_uint32 _gss_import_sec_context_t ( 240c0b9f4feSDoug Rabson OM_uint32 *, /* minor_status */ 241c0b9f4feSDoug Rabson const gss_buffer_t, /* interprocess_token */ 242c0b9f4feSDoug Rabson gss_ctx_id_t * /* context_handle */ 243c0b9f4feSDoug Rabson ); 244c0b9f4feSDoug Rabson 245c0b9f4feSDoug Rabson typedef OM_uint32 _gss_inquire_names_for_mech_t ( 246c0b9f4feSDoug Rabson OM_uint32 *, /* minor_status */ 247c0b9f4feSDoug Rabson const gss_OID, /* mechanism */ 248c0b9f4feSDoug Rabson gss_OID_set * /* name_types */ 249c0b9f4feSDoug Rabson ); 250c0b9f4feSDoug Rabson 251c0b9f4feSDoug Rabson typedef OM_uint32 _gss_inquire_mechs_for_name_t ( 252c0b9f4feSDoug Rabson OM_uint32 *, /* minor_status */ 253c0b9f4feSDoug Rabson const gss_name_t, /* input_name */ 254c0b9f4feSDoug Rabson gss_OID_set * /* mech_types */ 255c0b9f4feSDoug Rabson ); 256c0b9f4feSDoug Rabson 257c0b9f4feSDoug Rabson typedef OM_uint32 _gss_canonicalize_name_t ( 258c0b9f4feSDoug Rabson OM_uint32 *, /* minor_status */ 259c0b9f4feSDoug Rabson const gss_name_t, /* input_name */ 260c0b9f4feSDoug Rabson const gss_OID, /* mech_type */ 261c0b9f4feSDoug Rabson gss_name_t * /* output_name */ 262c0b9f4feSDoug Rabson ); 263c0b9f4feSDoug Rabson 264c0b9f4feSDoug Rabson typedef OM_uint32 _gss_duplicate_name_t ( 265c0b9f4feSDoug Rabson OM_uint32 *, /* minor_status */ 266c0b9f4feSDoug Rabson const gss_name_t, /* src_name */ 267c0b9f4feSDoug Rabson gss_name_t * /* dest_name */ 268c0b9f4feSDoug Rabson ); 269c0b9f4feSDoug Rabson 27033f12199SDoug Rabson typedef OM_uint32 _gss_inquire_sec_context_by_oid 27133f12199SDoug Rabson (OM_uint32 *, /* minor_status */ 27233f12199SDoug Rabson const gss_ctx_id_t, /* context_handle */ 27333f12199SDoug Rabson const gss_OID, /* desired_object */ 27433f12199SDoug Rabson gss_buffer_set_t * /* result */ 275c0b9f4feSDoug Rabson ); 276c0b9f4feSDoug Rabson 27733f12199SDoug Rabson typedef OM_uint32 _gss_inquire_cred_by_oid 27833f12199SDoug Rabson (OM_uint32 *, /* bminor_status */ 27933f12199SDoug Rabson const gss_cred_id_t, /* cred_handle, */ 28033f12199SDoug Rabson const gss_OID, /* desired_object */ 28133f12199SDoug Rabson gss_buffer_set_t * /* data_set */ 282c0b9f4feSDoug Rabson ); 283c0b9f4feSDoug Rabson 28433f12199SDoug Rabson typedef OM_uint32 _gss_set_sec_context_option 28533f12199SDoug Rabson (OM_uint32 *, /* minor status */ 28633f12199SDoug Rabson gss_ctx_id_t *, /* context */ 28733f12199SDoug Rabson const gss_OID, /* option to set */ 28833f12199SDoug Rabson const gss_buffer_t /* option value */ 28933f12199SDoug Rabson ); 29033f12199SDoug Rabson 29133f12199SDoug Rabson typedef OM_uint32 _gss_set_cred_option 29233f12199SDoug Rabson (OM_uint32 *, /* minor status */ 29333f12199SDoug Rabson gss_cred_id_t *, /* cred */ 29433f12199SDoug Rabson const gss_OID, /* option to set */ 29533f12199SDoug Rabson const gss_buffer_t /* option value */ 29633f12199SDoug Rabson ); 29733f12199SDoug Rabson 29833f12199SDoug Rabson typedef OM_uint32 _gss_pseudo_random 29933f12199SDoug Rabson (OM_uint32 *, /* minor status */ 30033f12199SDoug Rabson gss_ctx_id_t, /* context */ 30133f12199SDoug Rabson int, /* PRF key */ 30233f12199SDoug Rabson const gss_buffer_t, /* PRF input */ 30333f12199SDoug Rabson ssize_t, /* desired output length */ 30433f12199SDoug Rabson gss_buffer_t /* PRF output */ 305c0b9f4feSDoug Rabson ); 306c0b9f4feSDoug Rabson 3078f55a568SDoug Rabson typedef OM_uint32 _gss_pname_to_uid 3088f55a568SDoug Rabson (OM_uint32 *, /* minor status */ 3098f55a568SDoug Rabson gss_name_t pname, /* principal name */ 3108f55a568SDoug Rabson gss_OID mech, /* mechanism to query */ 3118f55a568SDoug Rabson uid_t *uidp /* pointer to UID for result */ 3128f55a568SDoug Rabson ); 3138f55a568SDoug Rabson 314c0b9f4feSDoug Rabson struct _gss_mech_switch { 315c0b9f4feSDoug Rabson SLIST_ENTRY(_gss_mech_switch) gm_link; 31633f12199SDoug Rabson const char *gm_name_prefix; 317c0b9f4feSDoug Rabson gss_OID_desc gm_mech_oid; 318c0b9f4feSDoug Rabson void *gm_so; 319c0b9f4feSDoug Rabson _gss_acquire_cred_t *gm_acquire_cred; 320c0b9f4feSDoug Rabson _gss_release_cred_t *gm_release_cred; 321c0b9f4feSDoug Rabson _gss_init_sec_context_t *gm_init_sec_context; 322c0b9f4feSDoug Rabson _gss_accept_sec_context_t *gm_accept_sec_context; 323c0b9f4feSDoug Rabson _gss_process_context_token_t *gm_process_context_token; 324c0b9f4feSDoug Rabson _gss_delete_sec_context_t *gm_delete_sec_context; 325c0b9f4feSDoug Rabson _gss_context_time_t *gm_context_time; 326c0b9f4feSDoug Rabson _gss_get_mic_t *gm_get_mic; 327c0b9f4feSDoug Rabson _gss_verify_mic_t *gm_verify_mic; 328c0b9f4feSDoug Rabson _gss_wrap_t *gm_wrap; 329c0b9f4feSDoug Rabson _gss_unwrap_t *gm_unwrap; 330c0b9f4feSDoug Rabson _gss_display_status_t *gm_display_status; 331c0b9f4feSDoug Rabson _gss_indicate_mechs_t *gm_indicate_mechs; 332c0b9f4feSDoug Rabson _gss_compare_name_t *gm_compare_name; 333c0b9f4feSDoug Rabson _gss_display_name_t *gm_display_name; 334c0b9f4feSDoug Rabson _gss_import_name_t *gm_import_name; 335c0b9f4feSDoug Rabson _gss_export_name_t *gm_export_name; 336c0b9f4feSDoug Rabson _gss_release_name_t *gm_release_name; 337c0b9f4feSDoug Rabson _gss_inquire_cred_t *gm_inquire_cred; 338c0b9f4feSDoug Rabson _gss_inquire_context_t *gm_inquire_context; 339c0b9f4feSDoug Rabson _gss_wrap_size_limit_t *gm_wrap_size_limit; 340c0b9f4feSDoug Rabson _gss_add_cred_t *gm_add_cred; 341c0b9f4feSDoug Rabson _gss_inquire_cred_by_mech_t *gm_inquire_cred_by_mech; 342c0b9f4feSDoug Rabson _gss_export_sec_context_t *gm_export_sec_context; 343c0b9f4feSDoug Rabson _gss_import_sec_context_t *gm_import_sec_context; 344c0b9f4feSDoug Rabson _gss_inquire_names_for_mech_t *gm_inquire_names_for_mech; 345c0b9f4feSDoug Rabson _gss_inquire_mechs_for_name_t *gm_inquire_mechs_for_name; 346c0b9f4feSDoug Rabson _gss_canonicalize_name_t *gm_canonicalize_name; 347c0b9f4feSDoug Rabson _gss_duplicate_name_t *gm_duplicate_name; 34833f12199SDoug Rabson _gss_inquire_sec_context_by_oid *gm_inquire_sec_context_by_oid; 34933f12199SDoug Rabson _gss_inquire_cred_by_oid *gm_inquire_cred_by_oid; 35033f12199SDoug Rabson _gss_set_sec_context_option *gm_set_sec_context_option; 35133f12199SDoug Rabson _gss_set_cred_option *gm_set_cred_option; 35233f12199SDoug Rabson _gss_pseudo_random *gm_pseudo_random; 3538f55a568SDoug Rabson _gss_pname_to_uid *gm_pname_to_uid; 354c0b9f4feSDoug Rabson }; 355c0b9f4feSDoug Rabson SLIST_HEAD(_gss_mech_switch_list, _gss_mech_switch); 356c0b9f4feSDoug Rabson extern struct _gss_mech_switch_list _gss_mechs; 357c0b9f4feSDoug Rabson extern gss_OID_set _gss_mech_oids; 358c0b9f4feSDoug Rabson 359c0b9f4feSDoug Rabson extern void _gss_load_mech(void); 360c0b9f4feSDoug Rabson extern struct _gss_mech_switch *_gss_find_mech_switch(gss_OID); 36133f12199SDoug Rabson extern void _gss_mg_error(struct _gss_mech_switch *m, OM_uint32 maj, 36233f12199SDoug Rabson OM_uint32 min); 363ae771770SStanislav Sedov extern void _gss_mg_collect_error(gss_OID mech, OM_uint32 maj, OM_uint32 min); 364