1c19800e8SDoug Rabson /*- 2c19800e8SDoug Rabson * Copyright (c) 2005 Doug Rabson 3c19800e8SDoug Rabson * All rights reserved. 4c19800e8SDoug Rabson * 5c19800e8SDoug Rabson * Redistribution and use in source and binary forms, with or without 6c19800e8SDoug Rabson * modification, are permitted provided that the following conditions 7c19800e8SDoug Rabson * are met: 8c19800e8SDoug Rabson * 1. Redistributions of source code must retain the above copyright 9c19800e8SDoug Rabson * notice, this list of conditions and the following disclaimer. 10c19800e8SDoug Rabson * 2. Redistributions in binary form must reproduce the above copyright 11c19800e8SDoug Rabson * notice, this list of conditions and the following disclaimer in the 12c19800e8SDoug Rabson * documentation and/or other materials provided with the distribution. 13c19800e8SDoug Rabson * 14c19800e8SDoug Rabson * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15c19800e8SDoug Rabson * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16c19800e8SDoug Rabson * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17c19800e8SDoug Rabson * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18c19800e8SDoug Rabson * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19c19800e8SDoug Rabson * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20c19800e8SDoug Rabson * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21c19800e8SDoug Rabson * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22c19800e8SDoug Rabson * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23c19800e8SDoug Rabson * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24c19800e8SDoug Rabson * SUCH DAMAGE. 25c19800e8SDoug Rabson * 26c19800e8SDoug Rabson * $FreeBSD$ 27c19800e8SDoug Rabson */ 28c19800e8SDoug Rabson 29c19800e8SDoug Rabson #ifndef GSSAPI_MECH_H 30c19800e8SDoug Rabson #define GSSAPI_MECH_H 1 31c19800e8SDoug Rabson 32c19800e8SDoug Rabson #include <gssapi.h> 33c19800e8SDoug Rabson 34*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_acquire_cred_t 35c19800e8SDoug Rabson (OM_uint32 *, /* minor_status */ 36c19800e8SDoug Rabson const gss_name_t, /* desired_name */ 37c19800e8SDoug Rabson OM_uint32, /* time_req */ 38c19800e8SDoug Rabson const gss_OID_set, /* desired_mechs */ 39c19800e8SDoug Rabson gss_cred_usage_t, /* cred_usage */ 40c19800e8SDoug Rabson gss_cred_id_t *, /* output_cred_handle */ 41c19800e8SDoug Rabson gss_OID_set *, /* actual_mechs */ 42c19800e8SDoug Rabson OM_uint32 * /* time_rec */ 43c19800e8SDoug Rabson ); 44c19800e8SDoug Rabson 45*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_release_cred_t 46c19800e8SDoug Rabson (OM_uint32 *, /* minor_status */ 47c19800e8SDoug Rabson gss_cred_id_t * /* cred_handle */ 48c19800e8SDoug Rabson ); 49c19800e8SDoug Rabson 50*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_init_sec_context_t 51c19800e8SDoug Rabson (OM_uint32 *, /* minor_status */ 52c19800e8SDoug Rabson const gss_cred_id_t, /* initiator_cred_handle */ 53c19800e8SDoug Rabson gss_ctx_id_t *, /* context_handle */ 54c19800e8SDoug Rabson const gss_name_t, /* target_name */ 55c19800e8SDoug Rabson const gss_OID, /* mech_type */ 56c19800e8SDoug Rabson OM_uint32, /* req_flags */ 57c19800e8SDoug Rabson OM_uint32, /* time_req */ 58c19800e8SDoug Rabson const gss_channel_bindings_t, 59c19800e8SDoug Rabson /* input_chan_bindings */ 60c19800e8SDoug Rabson const gss_buffer_t, /* input_token */ 61c19800e8SDoug Rabson gss_OID *, /* actual_mech_type */ 62c19800e8SDoug Rabson gss_buffer_t, /* output_token */ 63c19800e8SDoug Rabson OM_uint32 *, /* ret_flags */ 64c19800e8SDoug Rabson OM_uint32 * /* time_rec */ 65c19800e8SDoug Rabson ); 66c19800e8SDoug Rabson 67*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_accept_sec_context_t 68c19800e8SDoug Rabson (OM_uint32 *, /* minor_status */ 69c19800e8SDoug Rabson gss_ctx_id_t *, /* context_handle */ 70c19800e8SDoug Rabson const gss_cred_id_t, /* acceptor_cred_handle */ 71c19800e8SDoug Rabson const gss_buffer_t, /* input_token_buffer */ 72c19800e8SDoug Rabson const gss_channel_bindings_t, 73c19800e8SDoug Rabson /* input_chan_bindings */ 74c19800e8SDoug Rabson gss_name_t *, /* src_name */ 75c19800e8SDoug Rabson gss_OID *, /* mech_type */ 76c19800e8SDoug Rabson gss_buffer_t, /* output_token */ 77c19800e8SDoug Rabson OM_uint32 *, /* ret_flags */ 78c19800e8SDoug Rabson OM_uint32 *, /* time_rec */ 79c19800e8SDoug Rabson gss_cred_id_t * /* delegated_cred_handle */ 80c19800e8SDoug Rabson ); 81c19800e8SDoug Rabson 82*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_process_context_token_t 83c19800e8SDoug Rabson (OM_uint32 *, /* minor_status */ 84c19800e8SDoug Rabson const gss_ctx_id_t, /* context_handle */ 85c19800e8SDoug Rabson const gss_buffer_t /* token_buffer */ 86c19800e8SDoug Rabson ); 87c19800e8SDoug Rabson 88*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_delete_sec_context_t 89c19800e8SDoug Rabson (OM_uint32 *, /* minor_status */ 90c19800e8SDoug Rabson gss_ctx_id_t *, /* context_handle */ 91c19800e8SDoug Rabson gss_buffer_t /* output_token */ 92c19800e8SDoug Rabson ); 93c19800e8SDoug Rabson 94*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_context_time_t 95c19800e8SDoug Rabson (OM_uint32 *, /* minor_status */ 96c19800e8SDoug Rabson const gss_ctx_id_t, /* context_handle */ 97c19800e8SDoug Rabson OM_uint32 * /* time_rec */ 98c19800e8SDoug Rabson ); 99c19800e8SDoug Rabson 100*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_get_mic_t 101c19800e8SDoug Rabson (OM_uint32 *, /* minor_status */ 102c19800e8SDoug Rabson const gss_ctx_id_t, /* context_handle */ 103c19800e8SDoug Rabson gss_qop_t, /* qop_req */ 104c19800e8SDoug Rabson const gss_buffer_t, /* message_buffer */ 105c19800e8SDoug Rabson gss_buffer_t /* message_token */ 106c19800e8SDoug Rabson ); 107c19800e8SDoug Rabson 108*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_verify_mic_t 109c19800e8SDoug Rabson (OM_uint32 *, /* minor_status */ 110c19800e8SDoug Rabson const gss_ctx_id_t, /* context_handle */ 111c19800e8SDoug Rabson const gss_buffer_t, /* message_buffer */ 112c19800e8SDoug Rabson const gss_buffer_t, /* token_buffer */ 113c19800e8SDoug Rabson gss_qop_t * /* qop_state */ 114c19800e8SDoug Rabson ); 115c19800e8SDoug Rabson 116*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_wrap_t 117c19800e8SDoug Rabson (OM_uint32 *, /* minor_status */ 118c19800e8SDoug Rabson const gss_ctx_id_t, /* context_handle */ 119c19800e8SDoug Rabson int, /* conf_req_flag */ 120c19800e8SDoug Rabson gss_qop_t, /* qop_req */ 121c19800e8SDoug Rabson const gss_buffer_t, /* input_message_buffer */ 122c19800e8SDoug Rabson int *, /* conf_state */ 123c19800e8SDoug Rabson gss_buffer_t /* output_message_buffer */ 124c19800e8SDoug Rabson ); 125c19800e8SDoug Rabson 126*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_unwrap_t 127c19800e8SDoug Rabson (OM_uint32 *, /* minor_status */ 128c19800e8SDoug Rabson const gss_ctx_id_t, /* context_handle */ 129c19800e8SDoug Rabson const gss_buffer_t, /* input_message_buffer */ 130c19800e8SDoug Rabson gss_buffer_t, /* output_message_buffer */ 131c19800e8SDoug Rabson int *, /* conf_state */ 132c19800e8SDoug Rabson gss_qop_t * /* qop_state */ 133c19800e8SDoug Rabson ); 134c19800e8SDoug Rabson 135*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_display_status_t 136c19800e8SDoug Rabson (OM_uint32 *, /* minor_status */ 137c19800e8SDoug Rabson OM_uint32, /* status_value */ 138c19800e8SDoug Rabson int, /* status_type */ 139c19800e8SDoug Rabson const gss_OID, /* mech_type */ 140c19800e8SDoug Rabson OM_uint32 *, /* message_context */ 141c19800e8SDoug Rabson gss_buffer_t /* status_string */ 142c19800e8SDoug Rabson ); 143c19800e8SDoug Rabson 144*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_indicate_mechs_t 145c19800e8SDoug Rabson (OM_uint32 *, /* minor_status */ 146c19800e8SDoug Rabson gss_OID_set * /* mech_set */ 147c19800e8SDoug Rabson ); 148c19800e8SDoug Rabson 149*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_compare_name_t 150c19800e8SDoug Rabson (OM_uint32 *, /* minor_status */ 151c19800e8SDoug Rabson const gss_name_t, /* name1 */ 152c19800e8SDoug Rabson const gss_name_t, /* name2 */ 153c19800e8SDoug Rabson int * /* name_equal */ 154c19800e8SDoug Rabson ); 155c19800e8SDoug Rabson 156*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_display_name_t 157c19800e8SDoug Rabson (OM_uint32 *, /* minor_status */ 158c19800e8SDoug Rabson const gss_name_t, /* input_name */ 159c19800e8SDoug Rabson gss_buffer_t, /* output_name_buffer */ 160c19800e8SDoug Rabson gss_OID * /* output_name_type */ 161c19800e8SDoug Rabson ); 162c19800e8SDoug Rabson 163*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_import_name_t 164c19800e8SDoug Rabson (OM_uint32 *, /* minor_status */ 165c19800e8SDoug Rabson const gss_buffer_t, /* input_name_buffer */ 166c19800e8SDoug Rabson const gss_OID, /* input_name_type */ 167c19800e8SDoug Rabson gss_name_t * /* output_name */ 168c19800e8SDoug Rabson ); 169c19800e8SDoug Rabson 170*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_export_name_t 171c19800e8SDoug Rabson (OM_uint32 *, /* minor_status */ 172c19800e8SDoug Rabson const gss_name_t, /* input_name */ 173c19800e8SDoug Rabson gss_buffer_t /* exported_name */ 174c19800e8SDoug Rabson ); 175c19800e8SDoug Rabson 176*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_release_name_t 177c19800e8SDoug Rabson (OM_uint32 *, /* minor_status */ 178c19800e8SDoug Rabson gss_name_t * /* input_name */ 179c19800e8SDoug Rabson ); 180c19800e8SDoug Rabson 181*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_inquire_cred_t 182c19800e8SDoug Rabson (OM_uint32 *, /* minor_status */ 183c19800e8SDoug Rabson const gss_cred_id_t, /* cred_handle */ 184c19800e8SDoug Rabson gss_name_t *, /* name */ 185c19800e8SDoug Rabson OM_uint32 *, /* lifetime */ 186c19800e8SDoug Rabson gss_cred_usage_t *, /* cred_usage */ 187c19800e8SDoug Rabson gss_OID_set * /* mechanisms */ 188c19800e8SDoug Rabson ); 189c19800e8SDoug Rabson 190*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_inquire_context_t 191c19800e8SDoug Rabson (OM_uint32 *, /* minor_status */ 192c19800e8SDoug Rabson const gss_ctx_id_t, /* context_handle */ 193c19800e8SDoug Rabson gss_name_t *, /* src_name */ 194c19800e8SDoug Rabson gss_name_t *, /* targ_name */ 195c19800e8SDoug Rabson OM_uint32 *, /* lifetime_rec */ 196c19800e8SDoug Rabson gss_OID *, /* mech_type */ 197c19800e8SDoug Rabson OM_uint32 *, /* ctx_flags */ 198c19800e8SDoug Rabson int *, /* locally_initiated */ 199c19800e8SDoug Rabson int * /* open */ 200c19800e8SDoug Rabson ); 201c19800e8SDoug Rabson 202*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_wrap_size_limit_t 203c19800e8SDoug Rabson (OM_uint32 *, /* minor_status */ 204c19800e8SDoug Rabson const gss_ctx_id_t, /* context_handle */ 205c19800e8SDoug Rabson int, /* conf_req_flag */ 206c19800e8SDoug Rabson gss_qop_t, /* qop_req */ 207c19800e8SDoug Rabson OM_uint32, /* req_output_size */ 208c19800e8SDoug Rabson OM_uint32 * /* max_input_size */ 209c19800e8SDoug Rabson ); 210c19800e8SDoug Rabson 211*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_add_cred_t ( 212c19800e8SDoug Rabson OM_uint32 *, /* minor_status */ 213c19800e8SDoug Rabson const gss_cred_id_t, /* input_cred_handle */ 214c19800e8SDoug Rabson const gss_name_t, /* desired_name */ 215c19800e8SDoug Rabson const gss_OID, /* desired_mech */ 216c19800e8SDoug Rabson gss_cred_usage_t, /* cred_usage */ 217c19800e8SDoug Rabson OM_uint32, /* initiator_time_req */ 218c19800e8SDoug Rabson OM_uint32, /* acceptor_time_req */ 219c19800e8SDoug Rabson gss_cred_id_t *, /* output_cred_handle */ 220c19800e8SDoug Rabson gss_OID_set *, /* actual_mechs */ 221c19800e8SDoug Rabson OM_uint32 *, /* initiator_time_rec */ 222c19800e8SDoug Rabson OM_uint32 * /* acceptor_time_rec */ 223c19800e8SDoug Rabson ); 224c19800e8SDoug Rabson 225*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_inquire_cred_by_mech_t ( 226c19800e8SDoug Rabson OM_uint32 *, /* minor_status */ 227c19800e8SDoug Rabson const gss_cred_id_t, /* cred_handle */ 228c19800e8SDoug Rabson const gss_OID, /* mech_type */ 229c19800e8SDoug Rabson gss_name_t *, /* name */ 230c19800e8SDoug Rabson OM_uint32 *, /* initiator_lifetime */ 231c19800e8SDoug Rabson OM_uint32 *, /* acceptor_lifetime */ 232c19800e8SDoug Rabson gss_cred_usage_t * /* cred_usage */ 233c19800e8SDoug Rabson ); 234c19800e8SDoug Rabson 235*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_export_sec_context_t ( 236c19800e8SDoug Rabson OM_uint32 *, /* minor_status */ 237c19800e8SDoug Rabson gss_ctx_id_t *, /* context_handle */ 238c19800e8SDoug Rabson gss_buffer_t /* interprocess_token */ 239c19800e8SDoug Rabson ); 240c19800e8SDoug Rabson 241*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_import_sec_context_t ( 242c19800e8SDoug Rabson OM_uint32 *, /* minor_status */ 243c19800e8SDoug Rabson const gss_buffer_t, /* interprocess_token */ 244c19800e8SDoug Rabson gss_ctx_id_t * /* context_handle */ 245c19800e8SDoug Rabson ); 246c19800e8SDoug Rabson 247*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_inquire_names_for_mech_t ( 248c19800e8SDoug Rabson OM_uint32 *, /* minor_status */ 249c19800e8SDoug Rabson const gss_OID, /* mechanism */ 250c19800e8SDoug Rabson gss_OID_set * /* name_types */ 251c19800e8SDoug Rabson ); 252c19800e8SDoug Rabson 253*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_inquire_mechs_for_name_t ( 254c19800e8SDoug Rabson OM_uint32 *, /* minor_status */ 255c19800e8SDoug Rabson const gss_name_t, /* input_name */ 256c19800e8SDoug Rabson gss_OID_set * /* mech_types */ 257c19800e8SDoug Rabson ); 258c19800e8SDoug Rabson 259*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_canonicalize_name_t ( 260c19800e8SDoug Rabson OM_uint32 *, /* minor_status */ 261c19800e8SDoug Rabson const gss_name_t, /* input_name */ 262c19800e8SDoug Rabson const gss_OID, /* mech_type */ 263c19800e8SDoug Rabson gss_name_t * /* output_name */ 264c19800e8SDoug Rabson ); 265c19800e8SDoug Rabson 266*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_duplicate_name_t ( 267c19800e8SDoug Rabson OM_uint32 *, /* minor_status */ 268c19800e8SDoug Rabson const gss_name_t, /* src_name */ 269c19800e8SDoug Rabson gss_name_t * /* dest_name */ 270c19800e8SDoug Rabson ); 271c19800e8SDoug Rabson 272*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_inquire_sec_context_by_oid ( 273c19800e8SDoug Rabson OM_uint32 *minor_status, 274c19800e8SDoug Rabson const gss_ctx_id_t context_handle, 275c19800e8SDoug Rabson const gss_OID desired_object, 276c19800e8SDoug Rabson gss_buffer_set_t *data_set 277c19800e8SDoug Rabson ); 278c19800e8SDoug Rabson 279*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_inquire_cred_by_oid ( 280c19800e8SDoug Rabson OM_uint32 *minor_status, 281c19800e8SDoug Rabson const gss_cred_id_t cred, 282c19800e8SDoug Rabson const gss_OID desired_object, 283c19800e8SDoug Rabson gss_buffer_set_t *data_set 284c19800e8SDoug Rabson ); 285c19800e8SDoug Rabson 286*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_set_sec_context_option ( 287c19800e8SDoug Rabson OM_uint32 *minor_status, 288c19800e8SDoug Rabson gss_ctx_id_t *cred_handle, 289c19800e8SDoug Rabson const gss_OID desired_object, 290c19800e8SDoug Rabson const gss_buffer_t value 291c19800e8SDoug Rabson ); 292c19800e8SDoug Rabson 293*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_set_cred_option ( 294c19800e8SDoug Rabson OM_uint32 *minor_status, 295c19800e8SDoug Rabson gss_cred_id_t *cred_handle, 296c19800e8SDoug Rabson const gss_OID desired_object, 297c19800e8SDoug Rabson const gss_buffer_t value 298c19800e8SDoug Rabson ); 299c19800e8SDoug Rabson 300c19800e8SDoug Rabson 301*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_pseudo_random( 302c19800e8SDoug Rabson OM_uint32 *minor_status, 303c19800e8SDoug Rabson gss_ctx_id_t context, 304c19800e8SDoug Rabson int prf_key, 305c19800e8SDoug Rabson const gss_buffer_t prf_in, 306c19800e8SDoug Rabson ssize_t desired_output_len, 307c19800e8SDoug Rabson gss_buffer_t prf_out 308c19800e8SDoug Rabson ); 309c19800e8SDoug Rabson 310*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV 311*ae771770SStanislav Sedov _gss_wrap_iov_t(OM_uint32 *minor_status, 312*ae771770SStanislav Sedov gss_ctx_id_t context_handle, 313*ae771770SStanislav Sedov int conf_req_flag, 314*ae771770SStanislav Sedov gss_qop_t qop_req, 315*ae771770SStanislav Sedov int * conf_state, 316*ae771770SStanislav Sedov gss_iov_buffer_desc *iov, 317*ae771770SStanislav Sedov int iov_count); 318*ae771770SStanislav Sedov 319*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV 320*ae771770SStanislav Sedov _gss_unwrap_iov_t(OM_uint32 *minor_status, 321*ae771770SStanislav Sedov gss_ctx_id_t context_handle, 322*ae771770SStanislav Sedov int *conf_state, 323*ae771770SStanislav Sedov gss_qop_t *qop_state, 324*ae771770SStanislav Sedov gss_iov_buffer_desc *iov, 325*ae771770SStanislav Sedov int iov_count); 326*ae771770SStanislav Sedov 327*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV 328*ae771770SStanislav Sedov _gss_wrap_iov_length_t(OM_uint32 * minor_status, 329*ae771770SStanislav Sedov gss_ctx_id_t context_handle, 330*ae771770SStanislav Sedov int conf_req_flag, 331*ae771770SStanislav Sedov gss_qop_t qop_req, 332*ae771770SStanislav Sedov int *conf_state, 333*ae771770SStanislav Sedov gss_iov_buffer_desc *iov, 334*ae771770SStanislav Sedov int iov_count); 335*ae771770SStanislav Sedov 336*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV 337*ae771770SStanislav Sedov _gss_store_cred_t(OM_uint32 *minor_status, 338*ae771770SStanislav Sedov gss_cred_id_t input_cred_handle, 339*ae771770SStanislav Sedov gss_cred_usage_t cred_usage, 340*ae771770SStanislav Sedov const gss_OID desired_mech, 341*ae771770SStanislav Sedov OM_uint32 overwrite_cred, 342*ae771770SStanislav Sedov OM_uint32 default_cred, 343*ae771770SStanislav Sedov gss_OID_set *elements_stored, 344*ae771770SStanislav Sedov gss_cred_usage_t *cred_usage_stored); 345*ae771770SStanislav Sedov 346*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV 347*ae771770SStanislav Sedov _gss_export_cred_t(OM_uint32 *minor_status, 348*ae771770SStanislav Sedov gss_cred_id_t cred_handle, 349*ae771770SStanislav Sedov gss_buffer_t cred_token); 350*ae771770SStanislav Sedov 351*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV 352*ae771770SStanislav Sedov _gss_import_cred_t(OM_uint32 * minor_status, 353*ae771770SStanislav Sedov gss_buffer_t cred_token, 354*ae771770SStanislav Sedov gss_cred_id_t * cred_handle); 355*ae771770SStanislav Sedov 356*ae771770SStanislav Sedov 357*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV 358*ae771770SStanislav Sedov _gss_acquire_cred_ext_t(OM_uint32 * /*minor_status */, 359*ae771770SStanislav Sedov const gss_name_t /* desired_name */, 360*ae771770SStanislav Sedov gss_const_OID /* credential_type */, 361*ae771770SStanislav Sedov const void * /* credential_data */, 362*ae771770SStanislav Sedov OM_uint32 /* time_req */, 363*ae771770SStanislav Sedov gss_const_OID /* desired_mech */, 364*ae771770SStanislav Sedov gss_cred_usage_t /* cred_usage */, 365*ae771770SStanislav Sedov gss_cred_id_t * /* output_cred_handle */); 366*ae771770SStanislav Sedov 367*ae771770SStanislav Sedov typedef void GSSAPI_CALLCONV 368*ae771770SStanislav Sedov _gss_iter_creds_t(OM_uint32 /* flags */, 369*ae771770SStanislav Sedov void * /* userctx */, 370*ae771770SStanislav Sedov void (* /*cred_iter */ )(void *, gss_OID, gss_cred_id_t)); 371*ae771770SStanislav Sedov 372*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV 373*ae771770SStanislav Sedov _gss_destroy_cred_t(OM_uint32 * /* minor_status */, 374*ae771770SStanislav Sedov gss_cred_id_t * /* cred */); 375*ae771770SStanislav Sedov 376*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV 377*ae771770SStanislav Sedov _gss_cred_hold_t(OM_uint32 * /* minor_status */, 378*ae771770SStanislav Sedov gss_cred_id_t /* cred */); 379*ae771770SStanislav Sedov 380*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV 381*ae771770SStanislav Sedov _gss_cred_unhold_t(OM_uint32 * /* minor_status */, 382*ae771770SStanislav Sedov gss_cred_id_t /* cred */); 383*ae771770SStanislav Sedov 384*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV 385*ae771770SStanislav Sedov _gss_cred_label_set_t(OM_uint32 * /* minor_status */, 386*ae771770SStanislav Sedov gss_cred_id_t /* cred */, 387*ae771770SStanislav Sedov const char * /* label */, 388*ae771770SStanislav Sedov gss_buffer_t /* value */); 389*ae771770SStanislav Sedov 390*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV 391*ae771770SStanislav Sedov _gss_cred_label_get_t(OM_uint32 * /* minor_status */, 392*ae771770SStanislav Sedov gss_cred_id_t /* cred */, 393*ae771770SStanislav Sedov const char * /* label */, 394*ae771770SStanislav Sedov gss_buffer_t /* value */); 395*ae771770SStanislav Sedov 396*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_display_name_ext_t ( 397*ae771770SStanislav Sedov OM_uint32 *, /* minor_status */ 398*ae771770SStanislav Sedov gss_name_t, /* name */ 399*ae771770SStanislav Sedov gss_OID, /* display_as_name_type */ 400*ae771770SStanislav Sedov gss_buffer_t /* display_name */ 401*ae771770SStanislav Sedov ); 402*ae771770SStanislav Sedov 403*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_inquire_name_t ( 404*ae771770SStanislav Sedov OM_uint32 *, /* minor_status */ 405*ae771770SStanislav Sedov gss_name_t, /* name */ 406*ae771770SStanislav Sedov int *, /* name_is_MN */ 407*ae771770SStanislav Sedov gss_OID *, /* MN_mech */ 408*ae771770SStanislav Sedov gss_buffer_set_t * /* attrs */ 409*ae771770SStanislav Sedov ); 410*ae771770SStanislav Sedov 411*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_get_name_attribute_t ( 412*ae771770SStanislav Sedov OM_uint32 *, /* minor_status */ 413*ae771770SStanislav Sedov gss_name_t, /* name */ 414*ae771770SStanislav Sedov gss_buffer_t, /* attr */ 415*ae771770SStanislav Sedov int *, /* authenticated */ 416*ae771770SStanislav Sedov int *, /* complete */ 417*ae771770SStanislav Sedov gss_buffer_t, /* value */ 418*ae771770SStanislav Sedov gss_buffer_t, /* display_value */ 419*ae771770SStanislav Sedov int * /* more */ 420*ae771770SStanislav Sedov ); 421*ae771770SStanislav Sedov 422*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_set_name_attribute_t ( 423*ae771770SStanislav Sedov OM_uint32 *, /* minor_status */ 424*ae771770SStanislav Sedov gss_name_t, /* name */ 425*ae771770SStanislav Sedov int, /* complete */ 426*ae771770SStanislav Sedov gss_buffer_t, /* attr */ 427*ae771770SStanislav Sedov gss_buffer_t /* value */ 428*ae771770SStanislav Sedov ); 429*ae771770SStanislav Sedov 430*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_delete_name_attribute_t ( 431*ae771770SStanislav Sedov OM_uint32 *, /* minor_status */ 432*ae771770SStanislav Sedov gss_name_t, /* name */ 433*ae771770SStanislav Sedov gss_buffer_t /* attr */ 434*ae771770SStanislav Sedov ); 435*ae771770SStanislav Sedov 436*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_export_name_composite_t ( 437*ae771770SStanislav Sedov OM_uint32 *, /* minor_status */ 438*ae771770SStanislav Sedov gss_name_t, /* name */ 439*ae771770SStanislav Sedov gss_buffer_t /* exp_composite_name */ 440*ae771770SStanislav Sedov ); 441*ae771770SStanislav Sedov 442*ae771770SStanislav Sedov /* 443*ae771770SStanislav Sedov * 444*ae771770SStanislav Sedov */ 445*ae771770SStanislav Sedov 446*ae771770SStanislav Sedov typedef struct gss_mo_desc_struct gss_mo_desc; 447*ae771770SStanislav Sedov 448*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV 449*ae771770SStanislav Sedov _gss_mo_init (OM_uint32 *, gss_OID, gss_mo_desc **, size_t *); 450*ae771770SStanislav Sedov 451*ae771770SStanislav Sedov 452*ae771770SStanislav Sedov struct gss_mo_desc_struct { 453*ae771770SStanislav Sedov gss_OID option; 454*ae771770SStanislav Sedov OM_uint32 flags; 455*ae771770SStanislav Sedov #define GSS_MO_MA 1 456*ae771770SStanislav Sedov #define GSS_MO_MA_CRITICAL 2 457*ae771770SStanislav Sedov const char *name; 458*ae771770SStanislav Sedov void *ctx; 459*ae771770SStanislav Sedov int (*get)(gss_const_OID, gss_mo_desc *, gss_buffer_t); 460*ae771770SStanislav Sedov int (*set)(gss_const_OID, gss_mo_desc *, int, gss_buffer_t); 461*ae771770SStanislav Sedov }; 462*ae771770SStanislav Sedov 463*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_pname_to_uid_t ( 464*ae771770SStanislav Sedov OM_uint32 *, /* minor_status */ 465*ae771770SStanislav Sedov const gss_name_t, /* name */ 466*ae771770SStanislav Sedov const gss_OID, /* mech_type */ 467*ae771770SStanislav Sedov uid_t * /* uidOut */ 468*ae771770SStanislav Sedov ); 469*ae771770SStanislav Sedov 470*ae771770SStanislav Sedov typedef OM_uint32 GSSAPI_CALLCONV _gss_authorize_localname_t ( 471*ae771770SStanislav Sedov OM_uint32 *, /* minor_status */ 472*ae771770SStanislav Sedov const gss_name_t, /* name */ 473*ae771770SStanislav Sedov gss_const_buffer_t, /* user */ 474*ae771770SStanislav Sedov gss_const_OID /* user_name_type */ 475*ae771770SStanislav Sedov ); 476*ae771770SStanislav Sedov 477*ae771770SStanislav Sedov /* mechglue internal */ 478*ae771770SStanislav Sedov struct gss_mech_compat_desc_struct; 479*ae771770SStanislav Sedov 480*ae771770SStanislav Sedov #define GMI_VERSION 5 481*ae771770SStanislav Sedov 482*ae771770SStanislav Sedov /* gm_flags */ 483*ae771770SStanislav Sedov #define GM_USE_MG_CRED 1 /* uses mech glue credentials */ 484c19800e8SDoug Rabson 485c19800e8SDoug Rabson typedef struct gssapi_mech_interface_desc { 486c19800e8SDoug Rabson unsigned gm_version; 487c19800e8SDoug Rabson const char *gm_name; 488c19800e8SDoug Rabson gss_OID_desc gm_mech_oid; 489*ae771770SStanislav Sedov unsigned gm_flags; 490c19800e8SDoug Rabson _gss_acquire_cred_t *gm_acquire_cred; 491c19800e8SDoug Rabson _gss_release_cred_t *gm_release_cred; 492c19800e8SDoug Rabson _gss_init_sec_context_t *gm_init_sec_context; 493c19800e8SDoug Rabson _gss_accept_sec_context_t *gm_accept_sec_context; 494c19800e8SDoug Rabson _gss_process_context_token_t *gm_process_context_token; 495c19800e8SDoug Rabson _gss_delete_sec_context_t *gm_delete_sec_context; 496c19800e8SDoug Rabson _gss_context_time_t *gm_context_time; 497c19800e8SDoug Rabson _gss_get_mic_t *gm_get_mic; 498c19800e8SDoug Rabson _gss_verify_mic_t *gm_verify_mic; 499c19800e8SDoug Rabson _gss_wrap_t *gm_wrap; 500c19800e8SDoug Rabson _gss_unwrap_t *gm_unwrap; 501c19800e8SDoug Rabson _gss_display_status_t *gm_display_status; 502c19800e8SDoug Rabson _gss_indicate_mechs_t *gm_indicate_mechs; 503c19800e8SDoug Rabson _gss_compare_name_t *gm_compare_name; 504c19800e8SDoug Rabson _gss_display_name_t *gm_display_name; 505c19800e8SDoug Rabson _gss_import_name_t *gm_import_name; 506c19800e8SDoug Rabson _gss_export_name_t *gm_export_name; 507c19800e8SDoug Rabson _gss_release_name_t *gm_release_name; 508c19800e8SDoug Rabson _gss_inquire_cred_t *gm_inquire_cred; 509c19800e8SDoug Rabson _gss_inquire_context_t *gm_inquire_context; 510c19800e8SDoug Rabson _gss_wrap_size_limit_t *gm_wrap_size_limit; 511c19800e8SDoug Rabson _gss_add_cred_t *gm_add_cred; 512c19800e8SDoug Rabson _gss_inquire_cred_by_mech_t *gm_inquire_cred_by_mech; 513c19800e8SDoug Rabson _gss_export_sec_context_t *gm_export_sec_context; 514c19800e8SDoug Rabson _gss_import_sec_context_t *gm_import_sec_context; 515c19800e8SDoug Rabson _gss_inquire_names_for_mech_t *gm_inquire_names_for_mech; 516c19800e8SDoug Rabson _gss_inquire_mechs_for_name_t *gm_inquire_mechs_for_name; 517c19800e8SDoug Rabson _gss_canonicalize_name_t *gm_canonicalize_name; 518c19800e8SDoug Rabson _gss_duplicate_name_t *gm_duplicate_name; 519c19800e8SDoug Rabson _gss_inquire_sec_context_by_oid *gm_inquire_sec_context_by_oid; 520c19800e8SDoug Rabson _gss_inquire_cred_by_oid *gm_inquire_cred_by_oid; 521c19800e8SDoug Rabson _gss_set_sec_context_option *gm_set_sec_context_option; 522c19800e8SDoug Rabson _gss_set_cred_option *gm_set_cred_option; 523c19800e8SDoug Rabson _gss_pseudo_random *gm_pseudo_random; 524*ae771770SStanislav Sedov _gss_wrap_iov_t *gm_wrap_iov; 525*ae771770SStanislav Sedov _gss_unwrap_iov_t *gm_unwrap_iov; 526*ae771770SStanislav Sedov _gss_wrap_iov_length_t *gm_wrap_iov_length; 527*ae771770SStanislav Sedov _gss_store_cred_t *gm_store_cred; 528*ae771770SStanislav Sedov _gss_export_cred_t *gm_export_cred; 529*ae771770SStanislav Sedov _gss_import_cred_t *gm_import_cred; 530*ae771770SStanislav Sedov _gss_acquire_cred_ext_t *gm_acquire_cred_ext; 531*ae771770SStanislav Sedov _gss_iter_creds_t *gm_iter_creds; 532*ae771770SStanislav Sedov _gss_destroy_cred_t *gm_destroy_cred; 533*ae771770SStanislav Sedov _gss_cred_hold_t *gm_cred_hold; 534*ae771770SStanislav Sedov _gss_cred_unhold_t *gm_cred_unhold; 535*ae771770SStanislav Sedov _gss_cred_label_get_t *gm_cred_label_get; 536*ae771770SStanislav Sedov _gss_cred_label_set_t *gm_cred_label_set; 537*ae771770SStanislav Sedov gss_mo_desc *gm_mo; 538*ae771770SStanislav Sedov size_t gm_mo_num; 539*ae771770SStanislav Sedov _gss_pname_to_uid_t *gm_pname_to_uid; 540*ae771770SStanislav Sedov _gss_authorize_localname_t *gm_authorize_localname; 541*ae771770SStanislav Sedov _gss_display_name_ext_t *gm_display_name_ext; 542*ae771770SStanislav Sedov _gss_inquire_name_t *gm_inquire_name; 543*ae771770SStanislav Sedov _gss_get_name_attribute_t *gm_get_name_attribute; 544*ae771770SStanislav Sedov _gss_set_name_attribute_t *gm_set_name_attribute; 545*ae771770SStanislav Sedov _gss_delete_name_attribute_t *gm_delete_name_attribute; 546*ae771770SStanislav Sedov _gss_export_name_composite_t *gm_export_name_composite; 547*ae771770SStanislav Sedov struct gss_mech_compat_desc_struct *gm_compat; 548c19800e8SDoug Rabson } gssapi_mech_interface_desc, *gssapi_mech_interface; 549c19800e8SDoug Rabson 550c19800e8SDoug Rabson gssapi_mech_interface 551*ae771770SStanislav Sedov __gss_get_mechanism(gss_const_OID /* oid */); 552c19800e8SDoug Rabson 553c19800e8SDoug Rabson gssapi_mech_interface __gss_spnego_initialize(void); 554c19800e8SDoug Rabson gssapi_mech_interface __gss_krb5_initialize(void); 555c19800e8SDoug Rabson gssapi_mech_interface __gss_ntlm_initialize(void); 556c19800e8SDoug Rabson 557*ae771770SStanislav Sedov void gss_mg_collect_error(gss_OID, OM_uint32, OM_uint32); 558*ae771770SStanislav Sedov 559*ae771770SStanislav Sedov int _gss_mo_get_option_1(gss_const_OID, gss_mo_desc *, gss_buffer_t); 560*ae771770SStanislav Sedov int _gss_mo_get_option_0(gss_const_OID, gss_mo_desc *, gss_buffer_t); 561*ae771770SStanislav Sedov int _gss_mo_get_ctx_as_string(gss_const_OID, gss_mo_desc *, gss_buffer_t); 562*ae771770SStanislav Sedov 563*ae771770SStanislav Sedov struct _gss_oid_name_table { 564*ae771770SStanislav Sedov gss_OID oid; 565*ae771770SStanislav Sedov const char *name; 566*ae771770SStanislav Sedov const char *short_desc; 567*ae771770SStanislav Sedov const char *long_desc; 568*ae771770SStanislav Sedov }; 569*ae771770SStanislav Sedov 570*ae771770SStanislav Sedov extern struct _gss_oid_name_table _gss_ont_mech[]; 571*ae771770SStanislav Sedov extern struct _gss_oid_name_table _gss_ont_ma[]; 572*ae771770SStanislav Sedov 573*ae771770SStanislav Sedov /* 574*ae771770SStanislav Sedov * Extended credentials acqusition API, not to be exported until 575*ae771770SStanislav Sedov * it or something equivalent has been standardised. 576*ae771770SStanislav Sedov */ 577*ae771770SStanislav Sedov extern gss_OID_desc GSSAPI_LIB_VARIABLE __gss_c_cred_password_oid_desc; 578*ae771770SStanislav Sedov #define GSS_C_CRED_PASSWORD (&__gss_c_cred_password_oid_desc) 579*ae771770SStanislav Sedov 580*ae771770SStanislav Sedov extern gss_OID_desc GSSAPI_LIB_VARIABLE __gss_c_cred_certificate_oid_desc; 581*ae771770SStanislav Sedov #define GSS_C_CRED_CERTIFICATE (&__gss_c_cred_certificate_oid_desc) 582*ae771770SStanislav Sedov 583*ae771770SStanislav Sedov OM_uint32 _gss_acquire_cred_ext 584*ae771770SStanislav Sedov (OM_uint32 * /*minor_status*/, 585*ae771770SStanislav Sedov const gss_name_t /*desired_name*/, 586*ae771770SStanislav Sedov gss_const_OID /*credential_type*/, 587*ae771770SStanislav Sedov const void * /*credential_data*/, 588*ae771770SStanislav Sedov OM_uint32 /*time_req*/, 589*ae771770SStanislav Sedov gss_const_OID /*desired_mech*/, 590*ae771770SStanislav Sedov gss_cred_usage_t /*cred_usage*/, 591*ae771770SStanislav Sedov gss_cred_id_t * /*output_cred_handle*/ 592*ae771770SStanislav Sedov ); 593*ae771770SStanislav Sedov 594c19800e8SDoug Rabson #endif /* GSSAPI_MECH_H */ 595