1184588Sdfr/*- 2184588Sdfr * Copyright (c) 2008 Isilon Inc http://www.isilon.com/ 3184588Sdfr * Authors: Doug Rabson <dfr@rabson.org> 4184588Sdfr * Developed with Red Inc: Alfred Perlstein <alfred@freebsd.org> 5184588Sdfr * 6184588Sdfr * Redistribution and use in source and binary forms, with or without 7184588Sdfr * modification, are permitted provided that the following conditions 8184588Sdfr * are met: 9184588Sdfr * 1. Redistributions of source code must retain the above copyright 10184588Sdfr * notice, this list of conditions and the following disclaimer. 11184588Sdfr * 2. Redistributions in binary form must reproduce the above copyright 12184588Sdfr * notice, this list of conditions and the following disclaimer in the 13184588Sdfr * documentation and/or other materials provided with the distribution. 14184588Sdfr * 15184588Sdfr * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16184588Sdfr * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17184588Sdfr * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18184588Sdfr * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19184588Sdfr * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20184588Sdfr * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21184588Sdfr * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22184588Sdfr * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23184588Sdfr * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24184588Sdfr * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25184588Sdfr * SUCH DAMAGE. 26184588Sdfr */ 27184588Sdfr 28184588Sdfr/* $FreeBSD$ */ 29184588Sdfr 30184588Sdfr#ifdef RPC_HDR 31184588Sdfr 32184588Sdfr%#ifdef _KERNEL 33184588Sdfr%#include <kgssapi/gssapi.h> 34184588Sdfr%#else 35184588Sdfr%#include <gssapi/gssapi.h> 36184588Sdfr%#endif 37184588Sdfr 38184588Sdfr%extern bool_t xdr_gss_buffer_desc(XDR *xdrs, gss_buffer_desc *buf); 39184588Sdfr%extern bool_t xdr_gss_OID_desc(XDR *xdrs, gss_OID_desc *oid); 40184588Sdfr%extern bool_t xdr_gss_OID(XDR *xdrs, gss_OID *oidp); 41184588Sdfr%extern bool_t xdr_gss_OID_set_desc(XDR *xdrs, gss_OID_set_desc *set); 42184588Sdfr%extern bool_t xdr_gss_OID_set(XDR *xdrs, gss_OID_set *setp); 43184588Sdfr%extern bool_t xdr_gss_channel_bindings_t(XDR *xdrs, gss_channel_bindings_t *chp); 44184588Sdfr 45184588Sdfr#endif 46184588Sdfr 47184588Sdfrtypedef uint64_t gssd_ctx_id_t; 48184588Sdfrtypedef uint64_t gssd_cred_id_t; 49184588Sdfrtypedef uint64_t gssd_name_t; 50184588Sdfr 51184588Sdfrstruct init_sec_context_res { 52184588Sdfr uint32_t major_status; 53184588Sdfr uint32_t minor_status; 54184588Sdfr gssd_ctx_id_t ctx; 55184588Sdfr gss_OID actual_mech_type; 56184588Sdfr gss_buffer_desc output_token; 57184588Sdfr uint32_t ret_flags; 58184588Sdfr uint32_t time_rec; 59184588Sdfr}; 60184588Sdfr 61184588Sdfrstruct init_sec_context_args { 62184588Sdfr uint32_t uid; 63184588Sdfr gssd_cred_id_t cred; 64184588Sdfr gssd_ctx_id_t ctx; 65184588Sdfr gssd_name_t name; 66184588Sdfr gss_OID mech_type; 67184588Sdfr uint32_t req_flags; 68184588Sdfr uint32_t time_req; 69184588Sdfr gss_channel_bindings_t input_chan_bindings; 70184588Sdfr gss_buffer_desc input_token; 71184588Sdfr}; 72184588Sdfr 73184588Sdfrstruct accept_sec_context_res { 74184588Sdfr uint32_t major_status; 75184588Sdfr uint32_t minor_status; 76184588Sdfr gssd_ctx_id_t ctx; 77184588Sdfr gssd_name_t src_name; 78184588Sdfr gss_OID mech_type; 79184588Sdfr gss_buffer_desc output_token; 80184588Sdfr uint32_t ret_flags; 81184588Sdfr uint32_t time_rec; 82184588Sdfr gssd_cred_id_t delegated_cred_handle; 83184588Sdfr}; 84184588Sdfr 85184588Sdfrstruct accept_sec_context_args { 86184588Sdfr gssd_ctx_id_t ctx; 87184588Sdfr gssd_cred_id_t cred; 88184588Sdfr gss_buffer_desc input_token; 89184588Sdfr gss_channel_bindings_t input_chan_bindings; 90184588Sdfr}; 91184588Sdfr 92184588Sdfrstruct delete_sec_context_res { 93184588Sdfr uint32_t major_status; 94184588Sdfr uint32_t minor_status; 95184588Sdfr gss_buffer_desc output_token; 96184588Sdfr}; 97184588Sdfr 98184588Sdfrstruct delete_sec_context_args { 99184588Sdfr gssd_ctx_id_t ctx; 100184588Sdfr}; 101184588Sdfr 102184588Sdfrenum sec_context_format { 103184588Sdfr KGSS_HEIMDAL_0_6, 104184588Sdfr KGSS_HEIMDAL_1_1 105184588Sdfr}; 106184588Sdfr 107184588Sdfrstruct export_sec_context_res { 108184588Sdfr uint32_t major_status; 109184588Sdfr uint32_t minor_status; 110184588Sdfr enum sec_context_format format; 111184588Sdfr gss_buffer_desc interprocess_token; 112184588Sdfr}; 113184588Sdfr 114184588Sdfrstruct export_sec_context_args { 115184588Sdfr gssd_ctx_id_t ctx; 116184588Sdfr}; 117184588Sdfr 118184588Sdfrstruct import_name_res { 119184588Sdfr uint32_t major_status; 120184588Sdfr uint32_t minor_status; 121184588Sdfr gssd_name_t output_name; 122184588Sdfr}; 123184588Sdfr 124184588Sdfrstruct import_name_args { 125184588Sdfr gss_buffer_desc input_name_buffer; 126184588Sdfr gss_OID input_name_type; 127184588Sdfr}; 128184588Sdfr 129184588Sdfrstruct canonicalize_name_res { 130184588Sdfr uint32_t major_status; 131184588Sdfr uint32_t minor_status; 132184588Sdfr gssd_name_t output_name; 133184588Sdfr}; 134184588Sdfr 135184588Sdfrstruct canonicalize_name_args { 136184588Sdfr gssd_name_t input_name; 137184588Sdfr gss_OID mech_type; 138184588Sdfr}; 139184588Sdfr 140184588Sdfrstruct export_name_res { 141184588Sdfr uint32_t major_status; 142184588Sdfr uint32_t minor_status; 143184588Sdfr gss_buffer_desc exported_name; 144184588Sdfr}; 145184588Sdfr 146184588Sdfrstruct export_name_args { 147184588Sdfr gssd_name_t input_name; 148184588Sdfr}; 149184588Sdfr 150184588Sdfrstruct release_name_res { 151184588Sdfr uint32_t major_status; 152184588Sdfr uint32_t minor_status; 153184588Sdfr}; 154184588Sdfr 155184588Sdfrstruct release_name_args { 156184588Sdfr gssd_name_t input_name; 157184588Sdfr}; 158184588Sdfr 159184588Sdfrstruct pname_to_uid_res { 160184588Sdfr uint32_t major_status; 161184588Sdfr uint32_t minor_status; 162184588Sdfr uint32_t uid; 163184588Sdfr uint32_t gid; 164184588Sdfr uint32_t gidlist<>; 165184588Sdfr}; 166184588Sdfr 167184588Sdfrstruct pname_to_uid_args { 168184588Sdfr gssd_name_t pname; 169184588Sdfr gss_OID mech; 170184588Sdfr}; 171184588Sdfr 172184588Sdfrstruct acquire_cred_res { 173184588Sdfr uint32_t major_status; 174184588Sdfr uint32_t minor_status; 175184588Sdfr gssd_cred_id_t output_cred; 176184588Sdfr gss_OID_set actual_mechs; 177184588Sdfr uint32_t time_rec; 178184588Sdfr}; 179184588Sdfr 180184588Sdfrstruct acquire_cred_args { 181184588Sdfr uint32_t uid; 182184588Sdfr gssd_name_t desired_name; 183184588Sdfr uint32_t time_req; 184184588Sdfr gss_OID_set desired_mechs; 185184588Sdfr int cred_usage; 186184588Sdfr}; 187184588Sdfr 188184588Sdfrstruct set_cred_option_res { 189184588Sdfr uint32_t major_status; 190184588Sdfr uint32_t minor_status; 191184588Sdfr}; 192184588Sdfr 193184588Sdfrstruct set_cred_option_args { 194184588Sdfr gssd_cred_id_t cred; 195184588Sdfr gss_OID option_name; 196184588Sdfr gss_buffer_desc option_value; 197184588Sdfr}; 198184588Sdfr 199184588Sdfrstruct release_cred_res { 200184588Sdfr uint32_t major_status; 201184588Sdfr uint32_t minor_status; 202184588Sdfr}; 203184588Sdfr 204184588Sdfrstruct release_cred_args { 205184588Sdfr gssd_cred_id_t cred; 206184588Sdfr}; 207184588Sdfr 208184588Sdfrstruct display_status_res { 209184588Sdfr uint32_t major_status; 210184588Sdfr uint32_t minor_status; 211184588Sdfr uint32_t message_context; 212184588Sdfr gss_buffer_desc status_string; 213184588Sdfr}; 214184588Sdfr 215184588Sdfrstruct display_status_args { 216184588Sdfr uint32_t status_value; 217184588Sdfr int status_type; 218184588Sdfr gss_OID mech_type; 219184588Sdfr uint32_t message_context; 220184588Sdfr}; 221184588Sdfr 222184588Sdfrprogram GSSD { 223184588Sdfr version GSSDVERS { 224184588Sdfr void GSSD_NULL(void) = 0; 225184588Sdfr 226184588Sdfr init_sec_context_res 227184588Sdfr GSSD_INIT_SEC_CONTEXT(init_sec_context_args) = 1; 228184588Sdfr 229184588Sdfr accept_sec_context_res 230184588Sdfr GSSD_ACCEPT_SEC_CONTEXT(accept_sec_context_args) = 2; 231184588Sdfr 232184588Sdfr delete_sec_context_res 233184588Sdfr GSSD_DELETE_SEC_CONTEXT(delete_sec_context_args) = 3; 234184588Sdfr 235184588Sdfr export_sec_context_res 236184588Sdfr GSSD_EXPORT_SEC_CONTEXT(export_sec_context_args) = 4; 237184588Sdfr 238184588Sdfr import_name_res 239184588Sdfr GSSD_IMPORT_NAME(import_name_args) = 5; 240184588Sdfr 241184588Sdfr canonicalize_name_res 242184588Sdfr GSSD_CANONICALIZE_NAME(canonicalize_name_args) = 6; 243184588Sdfr 244184588Sdfr export_name_res 245184588Sdfr GSSD_EXPORT_NAME(export_name_args) = 7; 246184588Sdfr 247184588Sdfr release_name_res 248184588Sdfr GSSD_RELEASE_NAME(release_name_args) = 8; 249184588Sdfr 250184588Sdfr pname_to_uid_res 251184588Sdfr GSSD_PNAME_TO_UID(pname_to_uid_args) = 9; 252184588Sdfr 253184588Sdfr acquire_cred_res 254184588Sdfr GSSD_ACQUIRE_CRED(acquire_cred_args) = 10; 255184588Sdfr 256184588Sdfr set_cred_option_res 257184588Sdfr GSSD_SET_CRED_OPTION(set_cred_option_args) = 11; 258184588Sdfr 259184588Sdfr release_cred_res 260184588Sdfr GSSD_RELEASE_CRED(release_cred_args) = 12; 261184588Sdfr 262184588Sdfr display_status_res 263184588Sdfr GSSD_DISPLAY_STATUS(display_status_args) = 13; 264184588Sdfr } = 1; 265184588Sdfr} = 0x40677373; 266