diff options
Diffstat (limited to 'sys/kgssapi/gssd.x')
-rw-r--r-- | sys/kgssapi/gssd.x | 265 |
1 files changed, 265 insertions, 0 deletions
diff --git a/sys/kgssapi/gssd.x b/sys/kgssapi/gssd.x new file mode 100644 index 0000000..f5682a0 --- /dev/null +++ b/sys/kgssapi/gssd.x @@ -0,0 +1,265 @@ +/*- + * Copyright (c) 2008 Isilon Inc http://www.isilon.com/ + * Authors: Doug Rabson <dfr@rabson.org> + * Developed with Red Inc: Alfred Perlstein <alfred@freebsd.org> + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* $FreeBSD$ */ + +#ifdef RPC_HDR + +%#ifdef _KERNEL +%#include <kgssapi/gssapi.h> +%#else +%#include <gssapi/gssapi.h> +%#endif + +%extern bool_t xdr_gss_buffer_desc(XDR *xdrs, gss_buffer_desc *buf); +%extern bool_t xdr_gss_OID_desc(XDR *xdrs, gss_OID_desc *oid); +%extern bool_t xdr_gss_OID(XDR *xdrs, gss_OID *oidp); +%extern bool_t xdr_gss_OID_set_desc(XDR *xdrs, gss_OID_set_desc *set); +%extern bool_t xdr_gss_OID_set(XDR *xdrs, gss_OID_set *setp); +%extern bool_t xdr_gss_channel_bindings_t(XDR *xdrs, gss_channel_bindings_t *chp); + +#endif + +typedef uint64_t gssd_ctx_id_t; +typedef uint64_t gssd_cred_id_t; +typedef uint64_t gssd_name_t; + +struct init_sec_context_res { + uint32_t major_status; + uint32_t minor_status; + gssd_ctx_id_t ctx; + gss_OID actual_mech_type; + gss_buffer_desc output_token; + uint32_t ret_flags; + uint32_t time_rec; +}; + +struct init_sec_context_args { + uint32_t uid; + gssd_cred_id_t cred; + gssd_ctx_id_t ctx; + gssd_name_t name; + gss_OID mech_type; + uint32_t req_flags; + uint32_t time_req; + gss_channel_bindings_t input_chan_bindings; + gss_buffer_desc input_token; +}; + +struct accept_sec_context_res { + uint32_t major_status; + uint32_t minor_status; + gssd_ctx_id_t ctx; + gssd_name_t src_name; + gss_OID mech_type; + gss_buffer_desc output_token; + uint32_t ret_flags; + uint32_t time_rec; + gssd_cred_id_t delegated_cred_handle; +}; + +struct accept_sec_context_args { + gssd_ctx_id_t ctx; + gssd_cred_id_t cred; + gss_buffer_desc input_token; + gss_channel_bindings_t input_chan_bindings; +}; + +struct delete_sec_context_res { + uint32_t major_status; + uint32_t minor_status; + gss_buffer_desc output_token; +}; + +struct delete_sec_context_args { + gssd_ctx_id_t ctx; +}; + +enum sec_context_format { + KGSS_HEIMDAL_0_6, + KGSS_HEIMDAL_1_1 +}; + +struct export_sec_context_res { + uint32_t major_status; + uint32_t minor_status; + enum sec_context_format format; + gss_buffer_desc interprocess_token; +}; + +struct export_sec_context_args { + gssd_ctx_id_t ctx; +}; + +struct import_name_res { + uint32_t major_status; + uint32_t minor_status; + gssd_name_t output_name; +}; + +struct import_name_args { + gss_buffer_desc input_name_buffer; + gss_OID input_name_type; +}; + +struct canonicalize_name_res { + uint32_t major_status; + uint32_t minor_status; + gssd_name_t output_name; +}; + +struct canonicalize_name_args { + gssd_name_t input_name; + gss_OID mech_type; +}; + +struct export_name_res { + uint32_t major_status; + uint32_t minor_status; + gss_buffer_desc exported_name; +}; + +struct export_name_args { + gssd_name_t input_name; +}; + +struct release_name_res { + uint32_t major_status; + uint32_t minor_status; +}; + +struct release_name_args { + gssd_name_t input_name; +}; + +struct pname_to_uid_res { + uint32_t major_status; + uint32_t minor_status; + uint32_t uid; + uint32_t gid; + uint32_t gidlist<>; +}; + +struct pname_to_uid_args { + gssd_name_t pname; + gss_OID mech; +}; + +struct acquire_cred_res { + uint32_t major_status; + uint32_t minor_status; + gssd_cred_id_t output_cred; + gss_OID_set actual_mechs; + uint32_t time_rec; +}; + +struct acquire_cred_args { + uint32_t uid; + gssd_name_t desired_name; + uint32_t time_req; + gss_OID_set desired_mechs; + int cred_usage; +}; + +struct set_cred_option_res { + uint32_t major_status; + uint32_t minor_status; +}; + +struct set_cred_option_args { + gssd_cred_id_t cred; + gss_OID option_name; + gss_buffer_desc option_value; +}; + +struct release_cred_res { + uint32_t major_status; + uint32_t minor_status; +}; + +struct release_cred_args { + gssd_cred_id_t cred; +}; + +struct display_status_res { + uint32_t major_status; + uint32_t minor_status; + uint32_t message_context; + gss_buffer_desc status_string; +}; + +struct display_status_args { + uint32_t status_value; + int status_type; + gss_OID mech_type; + uint32_t message_context; +}; + +program GSSD { + version GSSDVERS { + void GSSD_NULL(void) = 0; + + init_sec_context_res + GSSD_INIT_SEC_CONTEXT(init_sec_context_args) = 1; + + accept_sec_context_res + GSSD_ACCEPT_SEC_CONTEXT(accept_sec_context_args) = 2; + + delete_sec_context_res + GSSD_DELETE_SEC_CONTEXT(delete_sec_context_args) = 3; + + export_sec_context_res + GSSD_EXPORT_SEC_CONTEXT(export_sec_context_args) = 4; + + import_name_res + GSSD_IMPORT_NAME(import_name_args) = 5; + + canonicalize_name_res + GSSD_CANONICALIZE_NAME(canonicalize_name_args) = 6; + + export_name_res + GSSD_EXPORT_NAME(export_name_args) = 7; + + release_name_res + GSSD_RELEASE_NAME(release_name_args) = 8; + + pname_to_uid_res + GSSD_PNAME_TO_UID(pname_to_uid_args) = 9; + + acquire_cred_res + GSSD_ACQUIRE_CRED(acquire_cred_args) = 10; + + set_cred_option_res + GSSD_SET_CRED_OPTION(set_cred_option_args) = 11; + + release_cred_res + GSSD_RELEASE_CRED(release_cred_args) = 12; + + display_status_res + GSSD_DISPLAY_STATUS(display_status_args) = 13; + } = 1; +} = 0x40677373; |