diff options
Diffstat (limited to 'proxy')
-rw-r--r-- | proxy/Makefile.am | 5 | ||||
-rw-r--r-- | proxy/configure.ac | 2 | ||||
-rw-r--r-- | proxy/rpcgen/README | 7 | ||||
-rw-r--r-- | proxy/rpcgen/gp_rpc.h | 188 | ||||
-rw-r--r-- | proxy/rpcgen/gp_rpc_xdr.c | 271 | ||||
-rw-r--r-- | proxy/rpcgen/gss_proxy.h | 797 | ||||
-rw-r--r-- | proxy/rpcgen/gss_proxy_xdr.c | 928 |
7 files changed, 2198 insertions, 0 deletions
diff --git a/proxy/Makefile.am b/proxy/Makefile.am index 29ecfa1..37ef362 100644 --- a/proxy/Makefile.am +++ b/proxy/Makefile.am @@ -76,17 +76,22 @@ if BUILD_SELINUX GSS_PROXY_LIBS += $(SELINUX_LIBS) endif +GP_RPCGEN_OBJ = rpcgen/gp_rpc_xdr.c rpcgen/gss_proxy_xdr.c + dist_noinst_HEADERS = #################### # Program Binaries # #################### + gssproxy_SOURCES = \ src/gp_config.c \ src/gp_init.c \ src/gp_socket.c \ src/gp_workers.c \ + $(GP_RPCGEN_OBJ) \ src/gssproxy.c + gssproxy_LDADD = \ $(GSS_PROXY_LIBS) diff --git a/proxy/configure.ac b/proxy/configure.ac index 009a5ea..6c13df2 100644 --- a/proxy/configure.ac +++ b/proxy/configure.ac @@ -95,6 +95,8 @@ LIBS="$PTHREAD_LIBS $LIBS" LIBS="$PTHREAD_CFLAGS $CFLAGS" CC="$PTHREAD_CC" +AC_CHECK_HEADERS([rpc/rpc.h],,[AC_MSG_ERROR([Could not find rpc headers])]) + WITH_INITSCRIPT if test x$initscript = xsystemd; then WITH_SYSTEMD_UNIT_DIR diff --git a/proxy/rpcgen/README b/proxy/rpcgen/README new file mode 100644 index 0000000..26bb95c --- /dev/null +++ b/proxy/rpcgen/README @@ -0,0 +1,7 @@ + +This file have been generated from .x files in ../../x-files/ +Please do not directly edit these .c/.h files. +Instead please edit the original .x files and then use rpcgen to re-generate +the .c/.h files. + +Also note that gp_rpc.x must conform to RFC1831 diff --git a/proxy/rpcgen/gp_rpc.h b/proxy/rpcgen/gp_rpc.h new file mode 100644 index 0000000..a21a60f --- /dev/null +++ b/proxy/rpcgen/gp_rpc.h @@ -0,0 +1,188 @@ +/* + * Please do not edit this file. + * It was generated using rpcgen. + */ + +#ifndef _GP_RPC_H_RPCGEN +#define _GP_RPC_H_RPCGEN + +#include <rpc/rpc.h> + + +#ifdef __cplusplus +extern "C" { +#endif + + +enum gp_rpc_auth_flavor { + GP_RPC_AUTH_NONE = 0, + GP_RPC_AUTH_SYS = 1, + GP_RPC_AUTH_SHORT = 2, + GP_RPC_AUTH_DH = 3, + GP_RPC_RPCSEC_GSS = 6, +}; +typedef enum gp_rpc_auth_flavor gp_rpc_auth_flavor; + +struct gp_rpc_opaque_auth { + gp_rpc_auth_flavor flavor; + struct { + u_int body_len; + char *body_val; + } body; +}; +typedef struct gp_rpc_opaque_auth gp_rpc_opaque_auth; + +enum gp_rpc_msg_type { + GP_RPC_CALL = 0, + GP_RPC_REPLY = 1, +}; +typedef enum gp_rpc_msg_type gp_rpc_msg_type; + +enum gp_rpc_reply_status { + GP_RPC_MSG_ACCEPTED = 0, + GP_RPC_MSG_DENIED = 1, +}; +typedef enum gp_rpc_reply_status gp_rpc_reply_status; + +enum gp_rpc_accept_status { + GP_RPC_SUCCESS = 0, + GP_RPC_PROG_UNAVAIL = 1, + GP_RPC_PROG_MISMATCH = 2, + GP_RPC_PROC_UNAVAIL = 3, + GP_RPC_GARBAGE_ARGS = 4, + GP_RPC_SYSTEM_ERR = 5, +}; +typedef enum gp_rpc_accept_status gp_rpc_accept_status; + +enum gp_rpc_reject_status { + GP_RPC_RPC_MISMATCH = 0, + GP_RPC_AUTH_ERROR = 1, +}; +typedef enum gp_rpc_reject_status gp_rpc_reject_status; + +enum gp_rpc_auth_status { + GP_RPC_AUTH_OK = 0, + GP_RPC_AUTH_BADCRED = 1, + GP_RPC_AUTH_REJECTEDCRED = 2, + GP_RPC_AUTH_BADVERF = 3, + GP_RPC_AUTH_REJECTEDVERF = 4, + GP_RPC_AUTH_TOOWEAK = 5, + GP_RPC_AUTH_INVALIDRESP = 6, + GP_RPC_AUTH_FAILED = 7, + GP_RPC_AUTH_KERB_GENERIC = 8, + GP_RPC_AUTH_TIMEEXPIRE = 9, + GP_RPC_AUTH_TKT_FILE = 10, + GP_RPC_AUTH_DECODE = 11, + GP_RPC_AUTH_NET_ADDR = 12, + GP_RPC_RPCSEC_GSS_CREDPROBLEM = 13, + GP_RPC_RPCSEC_GSS_CTXPROBLEM = 14, +}; +typedef enum gp_rpc_auth_status gp_rpc_auth_status; + +struct gp_rpc_mismatch_info { + u_int low; + u_int high; +}; +typedef struct gp_rpc_mismatch_info gp_rpc_mismatch_info; + +struct gp_rpc_reply_union { + gp_rpc_accept_status status; + union { + char results[0]; + gp_rpc_mismatch_info mismatch_info; + } gp_rpc_reply_union_u; +}; +typedef struct gp_rpc_reply_union gp_rpc_reply_union; + +struct gp_rpc_accepted_reply { + gp_rpc_opaque_auth verf; + gp_rpc_reply_union reply_data; +}; +typedef struct gp_rpc_accepted_reply gp_rpc_accepted_reply; + +struct gp_rpc_rejected_reply { + gp_rpc_reject_status status; + union { + gp_rpc_mismatch_info mismatch_info; + gp_rpc_auth_status status; + } gp_rpc_rejected_reply_u; +}; +typedef struct gp_rpc_rejected_reply gp_rpc_rejected_reply; + +struct gp_rpc_call_header { + u_int rpcvers; + u_int prog; + u_int vers; + u_int proc; + gp_rpc_opaque_auth cred; + gp_rpc_opaque_auth verf; +}; +typedef struct gp_rpc_call_header gp_rpc_call_header; + +struct gp_rpc_reply_header { + gp_rpc_reply_status status; + union { + gp_rpc_accepted_reply accepted; + gp_rpc_rejected_reply rejected; + } gp_rpc_reply_header_u; +}; +typedef struct gp_rpc_reply_header gp_rpc_reply_header; + +struct gp_rpc_msg_union { + gp_rpc_msg_type type; + union { + gp_rpc_call_header chdr; + gp_rpc_reply_header rhdr; + } gp_rpc_msg_union_u; +}; +typedef struct gp_rpc_msg_union gp_rpc_msg_union; + +struct gp_rpc_msg { + u_int xid; + gp_rpc_msg_union header; +}; +typedef struct gp_rpc_msg gp_rpc_msg; + +/* the xdr functions */ + +#if defined(__STDC__) || defined(__cplusplus) +extern bool_t xdr_gp_rpc_auth_flavor (XDR *, gp_rpc_auth_flavor*); +extern bool_t xdr_gp_rpc_opaque_auth (XDR *, gp_rpc_opaque_auth*); +extern bool_t xdr_gp_rpc_msg_type (XDR *, gp_rpc_msg_type*); +extern bool_t xdr_gp_rpc_reply_status (XDR *, gp_rpc_reply_status*); +extern bool_t xdr_gp_rpc_accept_status (XDR *, gp_rpc_accept_status*); +extern bool_t xdr_gp_rpc_reject_status (XDR *, gp_rpc_reject_status*); +extern bool_t xdr_gp_rpc_auth_status (XDR *, gp_rpc_auth_status*); +extern bool_t xdr_gp_rpc_mismatch_info (XDR *, gp_rpc_mismatch_info*); +extern bool_t xdr_gp_rpc_reply_union (XDR *, gp_rpc_reply_union*); +extern bool_t xdr_gp_rpc_accepted_reply (XDR *, gp_rpc_accepted_reply*); +extern bool_t xdr_gp_rpc_rejected_reply (XDR *, gp_rpc_rejected_reply*); +extern bool_t xdr_gp_rpc_call_header (XDR *, gp_rpc_call_header*); +extern bool_t xdr_gp_rpc_reply_header (XDR *, gp_rpc_reply_header*); +extern bool_t xdr_gp_rpc_msg_union (XDR *, gp_rpc_msg_union*); +extern bool_t xdr_gp_rpc_msg (XDR *, gp_rpc_msg*); + +#else /* K&R C */ +extern bool_t xdr_gp_rpc_auth_flavor (); +extern bool_t xdr_gp_rpc_opaque_auth (); +extern bool_t xdr_gp_rpc_msg_type (); +extern bool_t xdr_gp_rpc_reply_status (); +extern bool_t xdr_gp_rpc_accept_status (); +extern bool_t xdr_gp_rpc_reject_status (); +extern bool_t xdr_gp_rpc_auth_status (); +extern bool_t xdr_gp_rpc_mismatch_info (); +extern bool_t xdr_gp_rpc_reply_union (); +extern bool_t xdr_gp_rpc_accepted_reply (); +extern bool_t xdr_gp_rpc_rejected_reply (); +extern bool_t xdr_gp_rpc_call_header (); +extern bool_t xdr_gp_rpc_reply_header (); +extern bool_t xdr_gp_rpc_msg_union (); +extern bool_t xdr_gp_rpc_msg (); + +#endif /* K&R C */ + +#ifdef __cplusplus +} +#endif + +#endif /* !_GP_RPC_H_RPCGEN */ diff --git a/proxy/rpcgen/gp_rpc_xdr.c b/proxy/rpcgen/gp_rpc_xdr.c new file mode 100644 index 0000000..9cdf542 --- /dev/null +++ b/proxy/rpcgen/gp_rpc_xdr.c @@ -0,0 +1,271 @@ +/* + * Please do not edit this file. + * It was generated using rpcgen. + */ + +#include "rpcgen/gp_rpc.h" + +bool_t +xdr_gp_rpc_auth_flavor (XDR *xdrs, gp_rpc_auth_flavor *objp) +{ + register int32_t *buf; + + if (!xdr_enum (xdrs, (enum_t *) objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gp_rpc_opaque_auth (XDR *xdrs, gp_rpc_opaque_auth *objp) +{ + register int32_t *buf; + + if (!xdr_gp_rpc_auth_flavor (xdrs, &objp->flavor)) + return FALSE; + if (!xdr_bytes (xdrs, (char **)&objp->body.body_val, (u_int *) &objp->body.body_len, 400)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gp_rpc_msg_type (XDR *xdrs, gp_rpc_msg_type *objp) +{ + register int32_t *buf; + + if (!xdr_enum (xdrs, (enum_t *) objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gp_rpc_reply_status (XDR *xdrs, gp_rpc_reply_status *objp) +{ + register int32_t *buf; + + if (!xdr_enum (xdrs, (enum_t *) objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gp_rpc_accept_status (XDR *xdrs, gp_rpc_accept_status *objp) +{ + register int32_t *buf; + + if (!xdr_enum (xdrs, (enum_t *) objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gp_rpc_reject_status (XDR *xdrs, gp_rpc_reject_status *objp) +{ + register int32_t *buf; + + if (!xdr_enum (xdrs, (enum_t *) objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gp_rpc_auth_status (XDR *xdrs, gp_rpc_auth_status *objp) +{ + register int32_t *buf; + + if (!xdr_enum (xdrs, (enum_t *) objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gp_rpc_mismatch_info (XDR *xdrs, gp_rpc_mismatch_info *objp) +{ + register int32_t *buf; + + if (!xdr_u_int (xdrs, &objp->low)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->high)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gp_rpc_reply_union (XDR *xdrs, gp_rpc_reply_union *objp) +{ + register int32_t *buf; + + if (!xdr_gp_rpc_accept_status (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case GP_RPC_SUCCESS: + if (!xdr_opaque (xdrs, objp->gp_rpc_reply_union_u.results, 0)) + return FALSE; + break; + case GP_RPC_PROG_MISMATCH: + if (!xdr_gp_rpc_mismatch_info (xdrs, &objp->gp_rpc_reply_union_u.mismatch_info)) + return FALSE; + break; + default: + break; + } + return TRUE; +} + +bool_t +xdr_gp_rpc_accepted_reply (XDR *xdrs, gp_rpc_accepted_reply *objp) +{ + register int32_t *buf; + + if (!xdr_gp_rpc_opaque_auth (xdrs, &objp->verf)) + return FALSE; + if (!xdr_gp_rpc_reply_union (xdrs, &objp->reply_data)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gp_rpc_rejected_reply (XDR *xdrs, gp_rpc_rejected_reply *objp) +{ + register int32_t *buf; + + if (!xdr_gp_rpc_reject_status (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case GP_RPC_RPC_MISMATCH: + if (!xdr_gp_rpc_mismatch_info (xdrs, &objp->gp_rpc_rejected_reply_u.mismatch_info)) + return FALSE; + break; + case GP_RPC_AUTH_ERROR: + if (!xdr_gp_rpc_auth_status (xdrs, &objp->gp_rpc_rejected_reply_u.status)) + return FALSE; + break; + default: + return FALSE; + } + return TRUE; +} + +bool_t +xdr_gp_rpc_call_header (XDR *xdrs, gp_rpc_call_header *objp) +{ + register int32_t *buf; + + + if (xdrs->x_op == XDR_ENCODE) { + buf = XDR_INLINE (xdrs, 4 * BYTES_PER_XDR_UNIT); + if (buf == NULL) { + if (!xdr_u_int (xdrs, &objp->rpcvers)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->prog)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->vers)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->proc)) + return FALSE; + + } else { + IXDR_PUT_U_LONG(buf, objp->rpcvers); + IXDR_PUT_U_LONG(buf, objp->prog); + IXDR_PUT_U_LONG(buf, objp->vers); + IXDR_PUT_U_LONG(buf, objp->proc); + } + if (!xdr_gp_rpc_opaque_auth (xdrs, &objp->cred)) + return FALSE; + if (!xdr_gp_rpc_opaque_auth (xdrs, &objp->verf)) + return FALSE; + return TRUE; + } else if (xdrs->x_op == XDR_DECODE) { + buf = XDR_INLINE (xdrs, 4 * BYTES_PER_XDR_UNIT); + if (buf == NULL) { + if (!xdr_u_int (xdrs, &objp->rpcvers)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->prog)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->vers)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->proc)) + return FALSE; + + } else { + objp->rpcvers = IXDR_GET_U_LONG(buf); + objp->prog = IXDR_GET_U_LONG(buf); + objp->vers = IXDR_GET_U_LONG(buf); + objp->proc = IXDR_GET_U_LONG(buf); + } + if (!xdr_gp_rpc_opaque_auth (xdrs, &objp->cred)) + return FALSE; + if (!xdr_gp_rpc_opaque_auth (xdrs, &objp->verf)) + return FALSE; + return TRUE; + } + + if (!xdr_u_int (xdrs, &objp->rpcvers)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->prog)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->vers)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->proc)) + return FALSE; + if (!xdr_gp_rpc_opaque_auth (xdrs, &objp->cred)) + return FALSE; + if (!xdr_gp_rpc_opaque_auth (xdrs, &objp->verf)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gp_rpc_reply_header (XDR *xdrs, gp_rpc_reply_header *objp) +{ + register int32_t *buf; + + if (!xdr_gp_rpc_reply_status (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case GP_RPC_MSG_ACCEPTED: + if (!xdr_gp_rpc_accepted_reply (xdrs, &objp->gp_rpc_reply_header_u.accepted)) + return FALSE; + break; + case GP_RPC_MSG_DENIED: + if (!xdr_gp_rpc_rejected_reply (xdrs, &objp->gp_rpc_reply_header_u.rejected)) + return FALSE; + break; + default: + return FALSE; + } + return TRUE; +} + +bool_t +xdr_gp_rpc_msg_union (XDR *xdrs, gp_rpc_msg_union *objp) +{ + register int32_t *buf; + + if (!xdr_gp_rpc_msg_type (xdrs, &objp->type)) + return FALSE; + switch (objp->type) { + case GP_RPC_CALL: + if (!xdr_gp_rpc_call_header (xdrs, &objp->gp_rpc_msg_union_u.chdr)) + return FALSE; + break; + case GP_RPC_REPLY: + if (!xdr_gp_rpc_reply_header (xdrs, &objp->gp_rpc_msg_union_u.rhdr)) + return FALSE; + break; + default: + return FALSE; + } + return TRUE; +} + +bool_t +xdr_gp_rpc_msg (XDR *xdrs, gp_rpc_msg *objp) +{ + register int32_t *buf; + + if (!xdr_u_int (xdrs, &objp->xid)) + return FALSE; + if (!xdr_gp_rpc_msg_union (xdrs, &objp->header)) + return FALSE; + return TRUE; +} diff --git a/proxy/rpcgen/gss_proxy.h b/proxy/rpcgen/gss_proxy.h new file mode 100644 index 0000000..f700c13 --- /dev/null +++ b/proxy/rpcgen/gss_proxy.h @@ -0,0 +1,797 @@ +/* + * Please do not edit this file. + * It was generated using rpcgen. + */ + +#ifndef _GSS_PROXY_H_RPCGEN +#define _GSS_PROXY_H_RPCGEN + +#include <rpc/rpc.h> + + +#ifdef __cplusplus +extern "C" { +#endif + + +typedef struct { + u_int utf8string_len; + char *utf8string_val; +} utf8string; + +typedef struct { + u_int octet_string_len; + char *octet_string_val; +} octet_string; + +typedef u_quad_t gssx_uint64; + +typedef u_quad_t gssx_qop; + +typedef octet_string gssx_buffer; + +typedef octet_string gssx_OID; + +typedef struct { + u_int gssx_OID_set_len; + gssx_OID *gssx_OID_set_val; +} gssx_OID_set; + +enum gssx_cred_usage { + GSSX_C_INITIATE = 1, + GSSX_C_ACCEPT = 2, + GSSX_C_BOTH = 3, +}; +typedef enum gssx_cred_usage gssx_cred_usage; + +typedef u_quad_t gssx_time; + +enum gssx_ext_id { + GSSX_EXT_NONE = 0, +}; +typedef enum gssx_ext_id gssx_ext_id; + +struct gssx_typed_hole { + gssx_ext_id ext_type; + octet_string ext_data; +}; +typedef struct gssx_typed_hole gssx_typed_hole; + +struct gssx_mech_attr { + gssx_OID attr; + gssx_buffer name; + gssx_buffer short_desc; + gssx_buffer long_desc; + struct { + u_int extensions_len; + gssx_typed_hole *extensions_val; + } extensions; +}; +typedef struct gssx_mech_attr gssx_mech_attr; + +struct gssx_mech_info { + gssx_OID mech; + gssx_OID_set name_types; + gssx_OID_set mech_attrs; + gssx_OID_set known_mech_attrs; + gssx_OID_set cred_options; + gssx_OID_set sec_ctx_options; + struct { + u_int provider_names_len; + utf8string *provider_names_val; + } provider_names; + struct { + u_int provider_paths_len; + utf8string *provider_paths_val; + } provider_paths; + struct { + u_int extensions_len; + gssx_typed_hole *extensions_val; + } extensions; +}; +typedef struct gssx_mech_info gssx_mech_info; + +struct gssx_name_attr { + gssx_buffer attr; + gssx_buffer value; + struct { + u_int extensions_len; + gssx_typed_hole *extensions_val; + } extensions; +}; +typedef struct gssx_name_attr gssx_name_attr; + +struct gssx_option { + gssx_OID option; + gssx_buffer value; + struct { + u_int extensions_len; + gssx_typed_hole *extensions_val; + } extensions; +}; +typedef struct gssx_option gssx_option; + +struct gssx_status { + gssx_uint64 major_status; + gssx_OID mech; + gssx_uint64 minor_status; + utf8string major_status_string; + utf8string minor_status_string; + octet_string server_ctx; + struct { + u_int extensions_len; + gssx_typed_hole *extensions_val; + } extensions; +}; +typedef struct gssx_status gssx_status; + +struct gssx_call_ctx { + utf8string locale; + octet_string server_ctx; + struct { + u_int extensions_len; + gssx_typed_hole *extensions_val; + } extensions; +}; +typedef struct gssx_call_ctx gssx_call_ctx; + +struct gssx_name { + gssx_buffer *display_name; + gssx_OID name_type; + struct { + u_int exported_name_len; + gssx_buffer *exported_name_val; + } exported_name; + struct { + u_int exported_composite_name_len; + gssx_buffer *exported_composite_name_val; + } exported_composite_name; + struct { + u_int name_attributes_len; + gssx_name_attr *name_attributes_val; + } name_attributes; + struct { + u_int extensions_len; + gssx_typed_hole *extensions_val; + } extensions; +}; +typedef struct gssx_name gssx_name; + +struct gssx_cred_info { + gssx_name MN; + gssx_OID mech; + gssx_cred_usage cred_usage; + gssx_time initiator_time_rec; + gssx_time acceptor_time_rec; + struct { + u_int cred_options_len; + gssx_option *cred_options_val; + } cred_options; + octet_string cred_handle_reference; + struct { + u_int extensions_len; + gssx_typed_hole *extensions_val; + } extensions; +}; +typedef struct gssx_cred_info gssx_cred_info; + +struct gssx_ctx_info { + octet_string *exported_context_token; + octet_string *state; + gssx_OID mech; + gssx_name src_name; + gssx_name targ_name; + gssx_time lifetime; + gssx_uint64 ctx_flags; + bool_t locally_initiated; + bool_t open; + struct { + u_int context_options_len; + gssx_option *context_options_val; + } context_options; + struct { + u_int extensions_len; + gssx_typed_hole *extensions_val; + } extensions; +}; +typedef struct gssx_ctx_info gssx_ctx_info; + +enum gssx_handle_type { + GSSX_C_HANDLE_SEC_CTX = 0, + GSSX_C_HANDLE_CRED = 1, +}; +typedef enum gssx_handle_type gssx_handle_type; + +struct gssx_handle_info { + gssx_handle_type handle_type; + union { + struct { + u_int cred_info_len; + gssx_cred_info *cred_info_val; + } cred_info; + gssx_ctx_info sec_ctx_info; + octet_string extensions; + } gssx_handle_info_u; +}; +typedef struct gssx_handle_info gssx_handle_info; + +struct gssx_handle { + gssx_handle_info handle_info; + bool_t needs_release; +}; +typedef struct gssx_handle gssx_handle; + +typedef gssx_handle gssx_ctx; + +typedef gssx_handle gssx_cred; + +struct gssx_cb { + gssx_uint64 initiator_addrtype; + gssx_buffer initiator_address; + gssx_uint64 acceptor_addrtype; + gssx_buffer acceptor_address; + gssx_buffer application_data; +}; +typedef struct gssx_cb gssx_cb; + + +struct gssx_arg_release_handle { + gssx_call_ctx call_ctx; + gssx_handle cred_handle; +}; +typedef struct gssx_arg_release_handle gssx_arg_release_handle; + +struct gssx_res_release_handle { + gssx_status status; +}; +typedef struct gssx_res_release_handle gssx_res_release_handle; + +struct gssx_arg_indicate_mechs { + gssx_call_ctx call_ctx; +}; +typedef struct gssx_arg_indicate_mechs gssx_arg_indicate_mechs; + +struct gssx_res_indicate_mechs { + gssx_status status; + struct { + u_int mechs_len; + gssx_mech_info *mechs_val; + } mechs; + struct { + u_int mech_attr_descs_len; + gssx_mech_attr *mech_attr_descs_val; + } mech_attr_descs; + struct { + u_int supported_extensions_len; + gssx_ext_id *supported_extensions_val; + } supported_extensions; + struct { + u_int extensions_len; + gssx_typed_hole *extensions_val; + } extensions; +}; +typedef struct gssx_res_indicate_mechs gssx_res_indicate_mechs; + +struct gssx_arg_import_and_canon_name { + gssx_call_ctx call_ctx; + gssx_name input_name; + gssx_OID mech; + struct { + u_int name_attributes_len; + gssx_name_attr *name_attributes_val; + } name_attributes; + struct { + u_int extensions_len; + gssx_typed_hole *extensions_val; + } extensions; +}; +typedef struct gssx_arg_import_and_canon_name gssx_arg_import_and_canon_name; + +struct gssx_res_import_and_canon_name { + gssx_status status; + gssx_name *output_name; + struct { + u_int extensions_len; + gssx_typed_hole *extensions_val; + } extensions; +}; +typedef struct gssx_res_import_and_canon_name gssx_res_import_and_canon_name; + +struct gssx_arg_get_call_context { + gssx_call_ctx call_ctx; + struct { + u_int extensions_len; + gssx_typed_hole *extensions_val; + } extensions; +}; +typedef struct gssx_arg_get_call_context gssx_arg_get_call_context; + +struct gssx_res_get_call_context { + gssx_status status; + octet_string server_call_ctx; + struct { + u_int extensions_len; + gssx_typed_hole *extensions_val; + } extensions; +}; +typedef struct gssx_res_get_call_context gssx_res_get_call_context; + +struct gssx_arg_acquire_cred { + gssx_call_ctx call_ctx; + struct { + u_int cred_options_len; + gssx_option *cred_options_val; + } cred_options; + gssx_cred *input_cred_handle; + bool_t add_cred_to_input_handle; + gssx_name *desired_name; + gssx_time time_req; + gssx_OID_set desired_mechs; + gssx_cred_usage cred_usage; + gssx_time initiator_time_req; + gssx_time acceptor_time_req; + struct { + u_int extensions_len; + gssx_typed_hole *extensions_val; + } extensions; +}; +typedef struct gssx_arg_acquire_cred gssx_arg_acquire_cred; + +struct gssx_res_acquire_cred { + gssx_status status; + gssx_cred *output_cred_handle; + struct { + u_int extensions_len; + gssx_typed_hole *extensions_val; + } extensions; +}; +typedef struct gssx_res_acquire_cred gssx_res_acquire_cred; + +struct gssx_arg_export_cred { + gssx_call_ctx call_ctx; + gssx_cred input_cred_handle; + gssx_cred_usage cred_usage; + struct { + u_int extensions_len; + gssx_typed_hole *extensions_val; + } extensions; +}; +typedef struct gssx_arg_export_cred gssx_arg_export_cred; + +struct gssx_res_export_cred { + gssx_status status; + gssx_cred_usage usage_exported; + octet_string *exported_handle; + struct { + u_int extensions_len; + gssx_typed_hole *extensions_val; + } extensions; +}; +typedef struct gssx_res_export_cred gssx_res_export_cred; + +struct gssx_arg_import_cred { + gssx_call_ctx call_ctx; + octet_string exported_handle; + struct { + u_int extensions_len; + gssx_typed_hole *extensions_val; + } extensions; +}; +typedef struct gssx_arg_import_cred gssx_arg_import_cred; + +struct gssx_res_import_cred { + gssx_status status; + gssx_cred *output_cred_handle; + struct { + u_int extensions_len; + gssx_typed_hole *extensions_val; + } extensions; +}; +typedef struct gssx_res_import_cred gssx_res_import_cred; + +struct gssx_arg_store_cred { + gssx_call_ctx call_ctx; + gssx_cred input_cred_handle; + gssx_cred_usage cred_usage; + gssx_OID desired_mech; + bool_t overwrite_cred; + bool_t default_cred; + struct { + u_int extensions_len; + gssx_typed_hole *extensions_val; + } extensions; +}; +typedef struct gssx_arg_store_cred gssx_arg_store_cred; + +struct gssx_res_store_cred { + gssx_status status; + gssx_OID_set elements_stored; + gssx_cred_usage cred_usage_stored; + struct { + u_int extensions_len; + gssx_typed_hole *extensions_val; + } extensions; +}; +typedef struct gssx_res_store_cred gssx_res_store_cred; + +struct gssx_arg_init_sec_context { + gssx_call_ctx call_ctx; + struct { + u_int context_options_len; + gssx_option *context_options_val; + } context_options; + gssx_ctx *context_handle; + gssx_cred *cred_handle; + gssx_name *target_name; + gssx_OID mech_type; + gssx_uint64 req_flags; + gssx_time time_req; + gssx_cb *input_cb; + gssx_buffer *input_token; + struct { + u_int extensions_len; + gssx_typed_hole *extensions_val; + } extensions; +}; +typedef struct gssx_arg_init_sec_context gssx_arg_init_sec_context; + +struct gssx_res_init_sec_context { + gssx_status status; + gssx_ctx *context_handle; + gssx_buffer *output_token; + struct { + u_int extensions_len; + gssx_typed_hole *extensions_val; + } extensions; +}; +typedef struct gssx_res_init_sec_context gssx_res_init_sec_context; + +struct gssx_arg_accept_sec_context { + gssx_call_ctx call_ctx; + struct { + u_int context_options_len; + gssx_option *context_options_val; + } context_options; + gssx_ctx *context_handle; + gssx_cred *cred_handle; + gssx_buffer input_token; + gssx_cb *input_cb; + struct { + u_int extensions_len; + gssx_typed_hole *extensions_val; + } extensions; +}; +typedef struct gssx_arg_accept_sec_context gssx_arg_accept_sec_context; + +struct gssx_res_accept_sec_context { + gssx_status status; + gssx_ctx *context_handle; + gssx_buffer *output_token; + gssx_cred *delegated_cred_handle; + struct { + u_int extensions_len; + gssx_typed_hole *extensions_val; + } extensions; +}; +typedef struct gssx_res_accept_sec_context gssx_res_accept_sec_context; + +struct gssx_arg_get_mic { + gssx_call_ctx call_ctx; + gssx_ctx context_handle; + gssx_qop qop_req; + gssx_buffer message_buffer; +}; +typedef struct gssx_arg_get_mic gssx_arg_get_mic; + +struct gssx_res_get_mic { + gssx_status status; + gssx_ctx *context_handle; + gssx_buffer token_buffer; + gssx_qop *qop_state; +}; +typedef struct gssx_res_get_mic gssx_res_get_mic; + +struct gssx_arg_verify_mic { + gssx_call_ctx call_ctx; + gssx_ctx context_handle; + gssx_buffer message_buffer; + gssx_buffer token_buffer; +}; +typedef struct gssx_arg_verify_mic gssx_arg_verify_mic; + +struct gssx_res_verify_mic { + gssx_status status; + gssx_ctx *context_handle; + gssx_qop *qop_state; +}; +typedef struct gssx_res_verify_mic gssx_res_verify_mic; + +struct gssx_arg_wrap { + gssx_call_ctx call_ctx; + gssx_ctx context_handle; + bool_t conf_req; + struct { + u_int message_buffer_len; + gssx_buffer *message_buffer_val; + } message_buffer; + gssx_qop qop_state; +}; +typedef struct gssx_arg_wrap gssx_arg_wrap; + +struct gssx_res_wrap { + gssx_status status; + gssx_ctx *context_handle; + struct { + u_int token_buffer_len; + gssx_buffer *token_buffer_val; + } token_buffer; + bool_t *conf_state; + gssx_qop *qop_state; +}; +typedef struct gssx_res_wrap gssx_res_wrap; + +struct gssx_arg_unwrap { + gssx_call_ctx call_ctx; + gssx_ctx context_handle; + struct { + u_int token_buffer_len; + gssx_buffer *token_buffer_val; + } token_buffer; + gssx_qop qop_state; +}; +typedef struct gssx_arg_unwrap gssx_arg_unwrap; + +struct gssx_res_unwrap { + gssx_status status; + gssx_ctx *context_handle; + struct { + u_int message_buffer_len; + gssx_buffer *message_buffer_val; + } message_buffer; + bool_t *conf_state; + gssx_qop *qop_state; +}; +typedef struct gssx_res_unwrap gssx_res_unwrap; + +struct gssx_arg_wrap_size_limit { + gssx_call_ctx call_ctx; + gssx_ctx context_handle; + bool_t conf_req; + gssx_qop qop_state; + gssx_uint64 req_output_size; +}; +typedef struct gssx_arg_wrap_size_limit gssx_arg_wrap_size_limit; + +struct gssx_res_wrap_size_limit { + gssx_status status; + gssx_uint64 max_input_size; +}; +typedef struct gssx_res_wrap_size_limit gssx_res_wrap_size_limit; + +#define GSSPROXY 412345 +#define GSSPROXYVERS 1 + +#if defined(__STDC__) || defined(__cplusplus) +#define GSSX_INDICATE_MECHS 1 +extern gssx_res_indicate_mechs * gssx_indicate_mechs_1(gssx_arg_indicate_mechs *, CLIENT *); +extern gssx_res_indicate_mechs * gssx_indicate_mechs_1_svc(gssx_arg_indicate_mechs *, struct svc_req *); +#define GSSX_GET_CALL_CONTEXT 2 +extern gssx_res_get_call_context * gssx_get_call_context_1(gssx_arg_get_call_context *, CLIENT *); +extern gssx_res_get_call_context * gssx_get_call_context_1_svc(gssx_arg_get_call_context *, struct svc_req *); +#define GSSX_IMPORT_AND_CANON_NAME 3 +extern gssx_res_import_and_canon_name * gssx_import_and_canon_name_1(gssx_arg_import_and_canon_name *, CLIENT *); +extern gssx_res_import_and_canon_name * gssx_import_and_canon_name_1_svc(gssx_arg_import_and_canon_name *, struct svc_req *); +#define GSSX_EXPORT_CRED 4 +extern gssx_res_export_cred * gssx_export_cred_1(gssx_arg_export_cred *, CLIENT *); +extern gssx_res_export_cred * gssx_export_cred_1_svc(gssx_arg_export_cred *, struct svc_req *); +#define GSSX_IMPORT_CRED 5 +extern gssx_res_import_cred * gssx_import_cred_1(gssx_arg_import_cred *, CLIENT *); +extern gssx_res_import_cred * gssx_import_cred_1_svc(gssx_arg_import_cred *, struct svc_req *); +#define GSSX_ACQUIRE_CRED 6 +extern gssx_res_acquire_cred * gssx_acquire_cred_1(gssx_arg_acquire_cred *, CLIENT *); +extern gssx_res_acquire_cred * gssx_acquire_cred_1_svc(gssx_arg_acquire_cred *, struct svc_req *); +#define GSSX_STORE_CRED 7 +extern gssx_res_store_cred * gssx_store_cred_1(gssx_arg_store_cred *, CLIENT *); +extern gssx_res_store_cred * gssx_store_cred_1_svc(gssx_arg_store_cred *, struct svc_req *); +#define GSSX_INIT_SEC_CONTEXT 8 +extern gssx_res_init_sec_context * gssx_init_sec_context_1(gssx_arg_init_sec_context *, CLIENT *); +extern gssx_res_init_sec_context * gssx_init_sec_context_1_svc(gssx_arg_init_sec_context *, struct svc_req *); +#define GSSX_ACCEPT_SEC_CONTEXT 9 +extern gssx_res_accept_sec_context * gssx_accept_sec_context_1(gssx_arg_accept_sec_context *, CLIENT *); +extern gssx_res_accept_sec_context * gssx_accept_sec_context_1_svc(gssx_arg_accept_sec_context *, struct svc_req *); +#define GSSX_RELEASE_HANDLE 10 +extern gssx_res_release_handle * gssx_release_handle_1(gssx_arg_release_handle *, CLIENT *); +extern gssx_res_release_handle * gssx_release_handle_1_svc(gssx_arg_release_handle *, struct svc_req *); +#define GSSX_GET_MIC 11 +extern gssx_res_get_mic * gssx_get_mic_1(gssx_arg_get_mic *, CLIENT *); +extern gssx_res_get_mic * gssx_get_mic_1_svc(gssx_arg_get_mic *, struct svc_req *); +#define GSSX_VERIFY 12 +extern gssx_res_verify_mic * gssx_verify_1(gssx_arg_verify_mic *, CLIENT *); +extern gssx_res_verify_mic * gssx_verify_1_svc(gssx_arg_verify_mic *, struct svc_req *); +#define GSSX_WRAP 13 +extern gssx_res_wrap * gssx_wrap_1(gssx_arg_wrap *, CLIENT *); +extern gssx_res_wrap * gssx_wrap_1_svc(gssx_arg_wrap *, struct svc_req *); +#define GSSX_UNWRAP 14 +extern gssx_res_unwrap * gssx_unwrap_1(gssx_arg_unwrap *, CLIENT *); +extern gssx_res_unwrap * gssx_unwrap_1_svc(gssx_arg_unwrap *, struct svc_req *); +#define GSSX_WRAP_SIZE_LIMIT 15 +extern gssx_res_wrap_size_limit * gssx_wrap_size_limit_1(gssx_arg_wrap_size_limit *, CLIENT *); +extern gssx_res_wrap_size_limit * gssx_wrap_size_limit_1_svc(gssx_arg_wrap_size_limit *, struct svc_req *); +extern int gssproxy_1_freeresult (SVCXPRT *, xdrproc_t, caddr_t); + +#else /* K&R C */ +#define GSSX_INDICATE_MECHS 1 +extern gssx_res_indicate_mechs * gssx_indicate_mechs_1(); +extern gssx_res_indicate_mechs * gssx_indicate_mechs_1_svc(); +#define GSSX_GET_CALL_CONTEXT 2 +extern gssx_res_get_call_context * gssx_get_call_context_1(); +extern gssx_res_get_call_context * gssx_get_call_context_1_svc(); +#define GSSX_IMPORT_AND_CANON_NAME 3 +extern gssx_res_import_and_canon_name * gssx_import_and_canon_name_1(); +extern gssx_res_import_and_canon_name * gssx_import_and_canon_name_1_svc(); +#define GSSX_EXPORT_CRED 4 +extern gssx_res_export_cred * gssx_export_cred_1(); +extern gssx_res_export_cred * gssx_export_cred_1_svc(); +#define GSSX_IMPORT_CRED 5 +extern gssx_res_import_cred * gssx_import_cred_1(); +extern gssx_res_import_cred * gssx_import_cred_1_svc(); +#define GSSX_ACQUIRE_CRED 6 +extern gssx_res_acquire_cred * gssx_acquire_cred_1(); +extern gssx_res_acquire_cred * gssx_acquire_cred_1_svc(); +#define GSSX_STORE_CRED 7 +extern gssx_res_store_cred * gssx_store_cred_1(); +extern gssx_res_store_cred * gssx_store_cred_1_svc(); +#define GSSX_INIT_SEC_CONTEXT 8 +extern gssx_res_init_sec_context * gssx_init_sec_context_1(); +extern gssx_res_init_sec_context * gssx_init_sec_context_1_svc(); +#define GSSX_ACCEPT_SEC_CONTEXT 9 +extern gssx_res_accept_sec_context * gssx_accept_sec_context_1(); +extern gssx_res_accept_sec_context * gssx_accept_sec_context_1_svc(); +#define GSSX_RELEASE_HANDLE 10 +extern gssx_res_release_handle * gssx_release_handle_1(); +extern gssx_res_release_handle * gssx_release_handle_1_svc(); +#define GSSX_GET_MIC 11 +extern gssx_res_get_mic * gssx_get_mic_1(); +extern gssx_res_get_mic * gssx_get_mic_1_svc(); +#define GSSX_VERIFY 12 +extern gssx_res_verify_mic * gssx_verify_1(); +extern gssx_res_verify_mic * gssx_verify_1_svc(); +#define GSSX_WRAP 13 +extern gssx_res_wrap * gssx_wrap_1(); +extern gssx_res_wrap * gssx_wrap_1_svc(); +#define GSSX_UNWRAP 14 +extern gssx_res_unwrap * gssx_unwrap_1(); +extern gssx_res_unwrap * gssx_unwrap_1_svc(); +#define GSSX_WRAP_SIZE_LIMIT 15 +extern gssx_res_wrap_size_limit * gssx_wrap_size_limit_1(); +extern gssx_res_wrap_size_limit * gssx_wrap_size_limit_1_svc(); +extern int gssproxy_1_freeresult (); +#endif /* K&R C */ + +/* the xdr functions */ + +#if defined(__STDC__) || defined(__cplusplus) +extern bool_t xdr_utf8string (XDR *, utf8string*); +extern bool_t xdr_octet_string (XDR *, octet_string*); +extern bool_t xdr_gssx_uint64 (XDR *, gssx_uint64*); +extern bool_t xdr_gssx_qop (XDR *, gssx_qop*); +extern bool_t xdr_gssx_buffer (XDR *, gssx_buffer*); +extern bool_t xdr_gssx_OID (XDR *, gssx_OID*); +extern bool_t xdr_gssx_OID_set (XDR *, gssx_OID_set*); +extern bool_t xdr_gssx_cred_usage (XDR *, gssx_cred_usage*); +extern bool_t xdr_gssx_time (XDR *, gssx_time*); +extern bool_t xdr_gssx_ext_id (XDR *, gssx_ext_id*); +extern bool_t xdr_gssx_typed_hole (XDR *, gssx_typed_hole*); +extern bool_t xdr_gssx_mech_attr (XDR *, gssx_mech_attr*); +extern bool_t xdr_gssx_mech_info (XDR *, gssx_mech_info*); +extern bool_t xdr_gssx_name_attr (XDR *, gssx_name_attr*); +extern bool_t xdr_gssx_option (XDR *, gssx_option*); +extern bool_t xdr_gssx_status (XDR *, gssx_status*); +extern bool_t xdr_gssx_call_ctx (XDR *, gssx_call_ctx*); +extern bool_t xdr_gssx_name (XDR *, gssx_name*); +extern bool_t xdr_gssx_cred_info (XDR *, gssx_cred_info*); +extern bool_t xdr_gssx_ctx_info (XDR *, gssx_ctx_info*); +extern bool_t xdr_gssx_handle_type (XDR *, gssx_handle_type*); +extern bool_t xdr_gssx_handle_info (XDR *, gssx_handle_info*); +extern bool_t xdr_gssx_handle (XDR *, gssx_handle*); +extern bool_t xdr_gssx_ctx (XDR *, gssx_ctx*); +extern bool_t xdr_gssx_cred (XDR *, gssx_cred*); +extern bool_t xdr_gssx_cb (XDR *, gssx_cb*); +extern bool_t xdr_gssx_cb (XDR *, gssx_cb*); +extern bool_t xdr_gssx_arg_release_handle (XDR *, gssx_arg_release_handle*); +extern bool_t xdr_gssx_res_release_handle (XDR *, gssx_res_release_handle*); +extern bool_t xdr_gssx_arg_indicate_mechs (XDR *, gssx_arg_indicate_mechs*); +extern bool_t xdr_gssx_res_indicate_mechs (XDR *, gssx_res_indicate_mechs*); +extern bool_t xdr_gssx_arg_import_and_canon_name (XDR *, gssx_arg_import_and_canon_name*); +extern bool_t xdr_gssx_res_import_and_canon_name (XDR *, gssx_res_import_and_canon_name*); +extern bool_t xdr_gssx_arg_get_call_context (XDR *, gssx_arg_get_call_context*); +extern bool_t xdr_gssx_res_get_call_context (XDR *, gssx_res_get_call_context*); +extern bool_t xdr_gssx_arg_acquire_cred (XDR *, gssx_arg_acquire_cred*); +extern bool_t xdr_gssx_res_acquire_cred (XDR *, gssx_res_acquire_cred*); +extern bool_t xdr_gssx_arg_export_cred (XDR *, gssx_arg_export_cred*); +extern bool_t xdr_gssx_res_export_cred (XDR *, gssx_res_export_cred*); +extern bool_t xdr_gssx_arg_import_cred (XDR *, gssx_arg_import_cred*); +extern bool_t xdr_gssx_res_import_cred (XDR *, gssx_res_import_cred*); +extern bool_t xdr_gssx_arg_store_cred (XDR *, gssx_arg_store_cred*); +extern bool_t xdr_gssx_res_store_cred (XDR *, gssx_res_store_cred*); +extern bool_t xdr_gssx_arg_init_sec_context (XDR *, gssx_arg_init_sec_context*); +extern bool_t xdr_gssx_res_init_sec_context (XDR *, gssx_res_init_sec_context*); +extern bool_t xdr_gssx_arg_accept_sec_context (XDR *, gssx_arg_accept_sec_context*); +extern bool_t xdr_gssx_res_accept_sec_context (XDR *, gssx_res_accept_sec_context*); +extern bool_t xdr_gssx_arg_get_mic (XDR *, gssx_arg_get_mic*); +extern bool_t xdr_gssx_res_get_mic (XDR *, gssx_res_get_mic*); +extern bool_t xdr_gssx_arg_verify_mic (XDR *, gssx_arg_verify_mic*); +extern bool_t xdr_gssx_res_verify_mic (XDR *, gssx_res_verify_mic*); +extern bool_t xdr_gssx_arg_wrap (XDR *, gssx_arg_wrap*); +extern bool_t xdr_gssx_res_wrap (XDR *, gssx_res_wrap*); +extern bool_t xdr_gssx_arg_unwrap (XDR *, gssx_arg_unwrap*); +extern bool_t xdr_gssx_res_unwrap (XDR *, gssx_res_unwrap*); +extern bool_t xdr_gssx_arg_wrap_size_limit (XDR *, gssx_arg_wrap_size_limit*); +extern bool_t xdr_gssx_res_wrap_size_limit (XDR *, gssx_res_wrap_size_limit*); + +#else /* K&R C */ +extern bool_t xdr_utf8string (); +extern bool_t xdr_octet_string (); +extern bool_t xdr_gssx_uint64 (); +extern bool_t xdr_gssx_qop (); +extern bool_t xdr_gssx_buffer (); +extern bool_t xdr_gssx_OID (); +extern bool_t xdr_gssx_OID_set (); +extern bool_t xdr_gssx_cred_usage (); +extern bool_t xdr_gssx_time (); +extern bool_t xdr_gssx_ext_id (); +extern bool_t xdr_gssx_typed_hole (); +extern bool_t xdr_gssx_mech_attr (); +extern bool_t xdr_gssx_mech_info (); +extern bool_t xdr_gssx_name_attr (); +extern bool_t xdr_gssx_option (); +extern bool_t xdr_gssx_status (); +extern bool_t xdr_gssx_call_ctx (); +extern bool_t xdr_gssx_name (); +extern bool_t xdr_gssx_cred_info (); +extern bool_t xdr_gssx_ctx_info (); +extern bool_t xdr_gssx_handle_type (); +extern bool_t xdr_gssx_handle_info (); +extern bool_t xdr_gssx_handle (); +extern bool_t xdr_gssx_ctx (); +extern bool_t xdr_gssx_cred (); +extern bool_t xdr_gssx_cb (); +extern bool_t xdr_gssx_cb (); +extern bool_t xdr_gssx_arg_release_handle (); +extern bool_t xdr_gssx_res_release_handle (); +extern bool_t xdr_gssx_arg_indicate_mechs (); +extern bool_t xdr_gssx_res_indicate_mechs (); +extern bool_t xdr_gssx_arg_import_and_canon_name (); +extern bool_t xdr_gssx_res_import_and_canon_name (); +extern bool_t xdr_gssx_arg_get_call_context (); +extern bool_t xdr_gssx_res_get_call_context (); +extern bool_t xdr_gssx_arg_acquire_cred (); +extern bool_t xdr_gssx_res_acquire_cred (); +extern bool_t xdr_gssx_arg_export_cred (); +extern bool_t xdr_gssx_res_export_cred (); +extern bool_t xdr_gssx_arg_import_cred (); +extern bool_t xdr_gssx_res_import_cred (); +extern bool_t xdr_gssx_arg_store_cred (); +extern bool_t xdr_gssx_res_store_cred (); +extern bool_t xdr_gssx_arg_init_sec_context (); +extern bool_t xdr_gssx_res_init_sec_context (); +extern bool_t xdr_gssx_arg_accept_sec_context (); +extern bool_t xdr_gssx_res_accept_sec_context (); +extern bool_t xdr_gssx_arg_get_mic (); +extern bool_t xdr_gssx_res_get_mic (); +extern bool_t xdr_gssx_arg_verify_mic (); +extern bool_t xdr_gssx_res_verify_mic (); +extern bool_t xdr_gssx_arg_wrap (); +extern bool_t xdr_gssx_res_wrap (); +extern bool_t xdr_gssx_arg_unwrap (); +extern bool_t xdr_gssx_res_unwrap (); +extern bool_t xdr_gssx_arg_wrap_size_limit (); +extern bool_t xdr_gssx_res_wrap_size_limit (); + +#endif /* K&R C */ + +#ifdef __cplusplus +} +#endif + +#endif /* !_GSS_PROXY_H_RPCGEN */ diff --git a/proxy/rpcgen/gss_proxy_xdr.c b/proxy/rpcgen/gss_proxy_xdr.c new file mode 100644 index 0000000..e15b984 --- /dev/null +++ b/proxy/rpcgen/gss_proxy_xdr.c @@ -0,0 +1,928 @@ +/* + * Please do not edit this file. + * It was generated using rpcgen. + */ + +#include "rpcgen/gss_proxy.h" + +bool_t +xdr_utf8string (XDR *xdrs, utf8string *objp) +{ + register int32_t *buf; + + if (!xdr_bytes (xdrs, (char **)&objp->utf8string_val, (u_int *) &objp->utf8string_len, ~0)) + return FALSE; + return TRUE; +} + +bool_t +xdr_octet_string (XDR *xdrs, octet_string *objp) +{ + register int32_t *buf; + + if (!xdr_bytes (xdrs, (char **)&objp->octet_string_val, (u_int *) &objp->octet_string_len, ~0)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_uint64 (XDR *xdrs, gssx_uint64 *objp) +{ + register int32_t *buf; + + if (!xdr_u_quad_t (xdrs, objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_qop (XDR *xdrs, gssx_qop *objp) +{ + register int32_t *buf; + + if (!xdr_u_quad_t (xdrs, objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_buffer (XDR *xdrs, gssx_buffer *objp) +{ + register int32_t *buf; + + if (!xdr_octet_string (xdrs, objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_OID (XDR *xdrs, gssx_OID *objp) +{ + register int32_t *buf; + + if (!xdr_octet_string (xdrs, objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_OID_set (XDR *xdrs, gssx_OID_set *objp) +{ + register int32_t *buf; + + if (!xdr_array (xdrs, (char **)&objp->gssx_OID_set_val, (u_int *) &objp->gssx_OID_set_len, ~0, + sizeof (gssx_OID), (xdrproc_t) xdr_gssx_OID)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_cred_usage (XDR *xdrs, gssx_cred_usage *objp) +{ + register int32_t *buf; + + if (!xdr_enum (xdrs, (enum_t *) objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_time (XDR *xdrs, gssx_time *objp) +{ + register int32_t *buf; + + if (!xdr_u_quad_t (xdrs, objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_ext_id (XDR *xdrs, gssx_ext_id *objp) +{ + register int32_t *buf; + + if (!xdr_enum (xdrs, (enum_t *) objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_typed_hole (XDR *xdrs, gssx_typed_hole *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_ext_id (xdrs, &objp->ext_type)) + return FALSE; + if (!xdr_octet_string (xdrs, &objp->ext_data)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_mech_attr (XDR *xdrs, gssx_mech_attr *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_OID (xdrs, &objp->attr)) + return FALSE; + if (!xdr_gssx_buffer (xdrs, &objp->name)) + return FALSE; + if (!xdr_gssx_buffer (xdrs, &objp->short_desc)) + return FALSE; + if (!xdr_gssx_buffer (xdrs, &objp->long_desc)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0, + sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_mech_info (XDR *xdrs, gssx_mech_info *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_OID (xdrs, &objp->mech)) + return FALSE; + if (!xdr_gssx_OID_set (xdrs, &objp->name_types)) + return FALSE; + if (!xdr_gssx_OID_set (xdrs, &objp->mech_attrs)) + return FALSE; + if (!xdr_gssx_OID_set (xdrs, &objp->known_mech_attrs)) + return FALSE; + if (!xdr_gssx_OID_set (xdrs, &objp->cred_options)) + return FALSE; + if (!xdr_gssx_OID_set (xdrs, &objp->sec_ctx_options)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->provider_names.provider_names_val, (u_int *) &objp->provider_names.provider_names_len, ~0, + sizeof (utf8string), (xdrproc_t) xdr_utf8string)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->provider_paths.provider_paths_val, (u_int *) &objp->provider_paths.provider_paths_len, ~0, + sizeof (utf8string), (xdrproc_t) xdr_utf8string)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0, + sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_name_attr (XDR *xdrs, gssx_name_attr *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_buffer (xdrs, &objp->attr)) + return FALSE; + if (!xdr_gssx_buffer (xdrs, &objp->value)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0, + sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_option (XDR *xdrs, gssx_option *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_OID (xdrs, &objp->option)) + return FALSE; + if (!xdr_gssx_buffer (xdrs, &objp->value)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0, + sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_status (XDR *xdrs, gssx_status *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_uint64 (xdrs, &objp->major_status)) + return FALSE; + if (!xdr_gssx_OID (xdrs, &objp->mech)) + return FALSE; + if (!xdr_gssx_uint64 (xdrs, &objp->minor_status)) + return FALSE; + if (!xdr_utf8string (xdrs, &objp->major_status_string)) + return FALSE; + if (!xdr_utf8string (xdrs, &objp->minor_status_string)) + return FALSE; + if (!xdr_octet_string (xdrs, &objp->server_ctx)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0, + sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_call_ctx (XDR *xdrs, gssx_call_ctx *objp) +{ + register int32_t *buf; + + if (!xdr_utf8string (xdrs, &objp->locale)) + return FALSE; + if (!xdr_octet_string (xdrs, &objp->server_ctx)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0, + sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_name (XDR *xdrs, gssx_name *objp) +{ + register int32_t *buf; + + if (!xdr_pointer (xdrs, (char **)&objp->display_name, sizeof (gssx_buffer), (xdrproc_t) xdr_gssx_buffer)) + return FALSE; + if (!xdr_gssx_OID (xdrs, &objp->name_type)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->exported_name.exported_name_val, (u_int *) &objp->exported_name.exported_name_len, ~0, + sizeof (gssx_buffer), (xdrproc_t) xdr_gssx_buffer)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->exported_composite_name.exported_composite_name_val, (u_int *) &objp->exported_composite_name.exported_composite_name_len, ~0, + sizeof (gssx_buffer), (xdrproc_t) xdr_gssx_buffer)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->name_attributes.name_attributes_val, (u_int *) &objp->name_attributes.name_attributes_len, ~0, + sizeof (gssx_name_attr), (xdrproc_t) xdr_gssx_name_attr)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0, + sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_cred_info (XDR *xdrs, gssx_cred_info *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_name (xdrs, &objp->MN)) + return FALSE; + if (!xdr_gssx_OID (xdrs, &objp->mech)) + return FALSE; + if (!xdr_gssx_cred_usage (xdrs, &objp->cred_usage)) + return FALSE; + if (!xdr_gssx_time (xdrs, &objp->initiator_time_rec)) + return FALSE; + if (!xdr_gssx_time (xdrs, &objp->acceptor_time_rec)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->cred_options.cred_options_val, (u_int *) &objp->cred_options.cred_options_len, ~0, + sizeof (gssx_option), (xdrproc_t) xdr_gssx_option)) + return FALSE; + if (!xdr_octet_string (xdrs, &objp->cred_handle_reference)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0, + sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_ctx_info (XDR *xdrs, gssx_ctx_info *objp) +{ + register int32_t *buf; + + if (!xdr_pointer (xdrs, (char **)&objp->exported_context_token, sizeof (octet_string), (xdrproc_t) xdr_octet_string)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->state, sizeof (octet_string), (xdrproc_t) xdr_octet_string)) + return FALSE; + if (!xdr_gssx_OID (xdrs, &objp->mech)) + return FALSE; + if (!xdr_gssx_name (xdrs, &objp->src_name)) + return FALSE; + if (!xdr_gssx_name (xdrs, &objp->targ_name)) + return FALSE; + if (!xdr_gssx_time (xdrs, &objp->lifetime)) + return FALSE; + if (!xdr_gssx_uint64 (xdrs, &objp->ctx_flags)) + return FALSE; + if (!xdr_bool (xdrs, &objp->locally_initiated)) + return FALSE; + if (!xdr_bool (xdrs, &objp->open)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->context_options.context_options_val, (u_int *) &objp->context_options.context_options_len, ~0, + sizeof (gssx_option), (xdrproc_t) xdr_gssx_option)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0, + sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_handle_type (XDR *xdrs, gssx_handle_type *objp) +{ + register int32_t *buf; + + if (!xdr_enum (xdrs, (enum_t *) objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_handle_info (XDR *xdrs, gssx_handle_info *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_handle_type (xdrs, &objp->handle_type)) + return FALSE; + switch (objp->handle_type) { + case GSSX_C_HANDLE_CRED: + if (!xdr_array (xdrs, (char **)&objp->gssx_handle_info_u.cred_info.cred_info_val, (u_int *) &objp->gssx_handle_info_u.cred_info.cred_info_len, ~0, + sizeof (gssx_cred_info), (xdrproc_t) xdr_gssx_cred_info)) + return FALSE; + break; + case GSSX_C_HANDLE_SEC_CTX: + if (!xdr_gssx_ctx_info (xdrs, &objp->gssx_handle_info_u.sec_ctx_info)) + return FALSE; + break; + default: + if (!xdr_octet_string (xdrs, &objp->gssx_handle_info_u.extensions)) + return FALSE; + break; + } + return TRUE; +} + +bool_t +xdr_gssx_handle (XDR *xdrs, gssx_handle *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_handle_info (xdrs, &objp->handle_info)) + return FALSE; + if (!xdr_bool (xdrs, &objp->needs_release)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_ctx (XDR *xdrs, gssx_ctx *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_handle (xdrs, objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_cred (XDR *xdrs, gssx_cred *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_handle (xdrs, objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_cb (XDR *xdrs, gssx_cb *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_uint64 (xdrs, &objp->initiator_addrtype)) + return FALSE; + if (!xdr_gssx_buffer (xdrs, &objp->initiator_address)) + return FALSE; + if (!xdr_gssx_uint64 (xdrs, &objp->acceptor_addrtype)) + return FALSE; + if (!xdr_gssx_buffer (xdrs, &objp->acceptor_address)) + return FALSE; + if (!xdr_gssx_buffer (xdrs, &objp->application_data)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_arg_release_handle (XDR *xdrs, gssx_arg_release_handle *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx)) + return FALSE; + if (!xdr_gssx_handle (xdrs, &objp->cred_handle)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_res_release_handle (XDR *xdrs, gssx_res_release_handle *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_status (xdrs, &objp->status)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_arg_indicate_mechs (XDR *xdrs, gssx_arg_indicate_mechs *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_res_indicate_mechs (XDR *xdrs, gssx_res_indicate_mechs *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_status (xdrs, &objp->status)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->mechs.mechs_val, (u_int *) &objp->mechs.mechs_len, ~0, + sizeof (gssx_mech_info), (xdrproc_t) xdr_gssx_mech_info)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->mech_attr_descs.mech_attr_descs_val, (u_int *) &objp->mech_attr_descs.mech_attr_descs_len, ~0, + sizeof (gssx_mech_attr), (xdrproc_t) xdr_gssx_mech_attr)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->supported_extensions.supported_extensions_val, (u_int *) &objp->supported_extensions.supported_extensions_len, ~0, + sizeof (gssx_ext_id), (xdrproc_t) xdr_gssx_ext_id)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0, + sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_arg_import_and_canon_name (XDR *xdrs, gssx_arg_import_and_canon_name *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx)) + return FALSE; + if (!xdr_gssx_name (xdrs, &objp->input_name)) + return FALSE; + if (!xdr_gssx_OID (xdrs, &objp->mech)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->name_attributes.name_attributes_val, (u_int *) &objp->name_attributes.name_attributes_len, ~0, + sizeof (gssx_name_attr), (xdrproc_t) xdr_gssx_name_attr)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0, + sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_res_import_and_canon_name (XDR *xdrs, gssx_res_import_and_canon_name *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_status (xdrs, &objp->status)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->output_name, sizeof (gssx_name), (xdrproc_t) xdr_gssx_name)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0, + sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_arg_get_call_context (XDR *xdrs, gssx_arg_get_call_context *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0, + sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_res_get_call_context (XDR *xdrs, gssx_res_get_call_context *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_status (xdrs, &objp->status)) + return FALSE; + if (!xdr_octet_string (xdrs, &objp->server_call_ctx)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0, + sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_arg_acquire_cred (XDR *xdrs, gssx_arg_acquire_cred *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->cred_options.cred_options_val, (u_int *) &objp->cred_options.cred_options_len, ~0, + sizeof (gssx_option), (xdrproc_t) xdr_gssx_option)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->input_cred_handle, sizeof (gssx_cred), (xdrproc_t) xdr_gssx_cred)) + return FALSE; + if (!xdr_bool (xdrs, &objp->add_cred_to_input_handle)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->desired_name, sizeof (gssx_name), (xdrproc_t) xdr_gssx_name)) + return FALSE; + if (!xdr_gssx_time (xdrs, &objp->time_req)) + return FALSE; + if (!xdr_gssx_OID_set (xdrs, &objp->desired_mechs)) + return FALSE; + if (!xdr_gssx_cred_usage (xdrs, &objp->cred_usage)) + return FALSE; + if (!xdr_gssx_time (xdrs, &objp->initiator_time_req)) + return FALSE; + if (!xdr_gssx_time (xdrs, &objp->acceptor_time_req)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0, + sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_res_acquire_cred (XDR *xdrs, gssx_res_acquire_cred *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_status (xdrs, &objp->status)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->output_cred_handle, sizeof (gssx_cred), (xdrproc_t) xdr_gssx_cred)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0, + sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_arg_export_cred (XDR *xdrs, gssx_arg_export_cred *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx)) + return FALSE; + if (!xdr_gssx_cred (xdrs, &objp->input_cred_handle)) + return FALSE; + if (!xdr_gssx_cred_usage (xdrs, &objp->cred_usage)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0, + sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_res_export_cred (XDR *xdrs, gssx_res_export_cred *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_status (xdrs, &objp->status)) + return FALSE; + if (!xdr_gssx_cred_usage (xdrs, &objp->usage_exported)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->exported_handle, sizeof (octet_string), (xdrproc_t) xdr_octet_string)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0, + sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_arg_import_cred (XDR *xdrs, gssx_arg_import_cred *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx)) + return FALSE; + if (!xdr_octet_string (xdrs, &objp->exported_handle)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0, + sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_res_import_cred (XDR *xdrs, gssx_res_import_cred *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_status (xdrs, &objp->status)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->output_cred_handle, sizeof (gssx_cred), (xdrproc_t) xdr_gssx_cred)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0, + sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_arg_store_cred (XDR *xdrs, gssx_arg_store_cred *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx)) + return FALSE; + if (!xdr_gssx_cred (xdrs, &objp->input_cred_handle)) + return FALSE; + if (!xdr_gssx_cred_usage (xdrs, &objp->cred_usage)) + return FALSE; + if (!xdr_gssx_OID (xdrs, &objp->desired_mech)) + return FALSE; + if (!xdr_bool (xdrs, &objp->overwrite_cred)) + return FALSE; + if (!xdr_bool (xdrs, &objp->default_cred)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0, + sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_res_store_cred (XDR *xdrs, gssx_res_store_cred *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_status (xdrs, &objp->status)) + return FALSE; + if (!xdr_gssx_OID_set (xdrs, &objp->elements_stored)) + return FALSE; + if (!xdr_gssx_cred_usage (xdrs, &objp->cred_usage_stored)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0, + sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_arg_init_sec_context (XDR *xdrs, gssx_arg_init_sec_context *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->context_options.context_options_val, (u_int *) &objp->context_options.context_options_len, ~0, + sizeof (gssx_option), (xdrproc_t) xdr_gssx_option)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->context_handle, sizeof (gssx_ctx), (xdrproc_t) xdr_gssx_ctx)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->cred_handle, sizeof (gssx_cred), (xdrproc_t) xdr_gssx_cred)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->target_name, sizeof (gssx_name), (xdrproc_t) xdr_gssx_name)) + return FALSE; + if (!xdr_gssx_OID (xdrs, &objp->mech_type)) + return FALSE; + if (!xdr_gssx_uint64 (xdrs, &objp->req_flags)) + return FALSE; + if (!xdr_gssx_time (xdrs, &objp->time_req)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->input_cb, sizeof (gssx_cb), (xdrproc_t) xdr_gssx_cb)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->input_token, sizeof (gssx_buffer), (xdrproc_t) xdr_gssx_buffer)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0, + sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_res_init_sec_context (XDR *xdrs, gssx_res_init_sec_context *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_status (xdrs, &objp->status)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->context_handle, sizeof (gssx_ctx), (xdrproc_t) xdr_gssx_ctx)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->output_token, sizeof (gssx_buffer), (xdrproc_t) xdr_gssx_buffer)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0, + sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_arg_accept_sec_context (XDR *xdrs, gssx_arg_accept_sec_context *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->context_options.context_options_val, (u_int *) &objp->context_options.context_options_len, ~0, + sizeof (gssx_option), (xdrproc_t) xdr_gssx_option)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->context_handle, sizeof (gssx_ctx), (xdrproc_t) xdr_gssx_ctx)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->cred_handle, sizeof (gssx_cred), (xdrproc_t) xdr_gssx_cred)) + return FALSE; + if (!xdr_gssx_buffer (xdrs, &objp->input_token)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->input_cb, sizeof (gssx_cb), (xdrproc_t) xdr_gssx_cb)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0, + sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_res_accept_sec_context (XDR *xdrs, gssx_res_accept_sec_context *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_status (xdrs, &objp->status)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->context_handle, sizeof (gssx_ctx), (xdrproc_t) xdr_gssx_ctx)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->output_token, sizeof (gssx_buffer), (xdrproc_t) xdr_gssx_buffer)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->delegated_cred_handle, sizeof (gssx_cred), (xdrproc_t) xdr_gssx_cred)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0, + sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_arg_get_mic (XDR *xdrs, gssx_arg_get_mic *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx)) + return FALSE; + if (!xdr_gssx_ctx (xdrs, &objp->context_handle)) + return FALSE; + if (!xdr_gssx_qop (xdrs, &objp->qop_req)) + return FALSE; + if (!xdr_gssx_buffer (xdrs, &objp->message_buffer)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_res_get_mic (XDR *xdrs, gssx_res_get_mic *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_status (xdrs, &objp->status)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->context_handle, sizeof (gssx_ctx), (xdrproc_t) xdr_gssx_ctx)) + return FALSE; + if (!xdr_gssx_buffer (xdrs, &objp->token_buffer)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->qop_state, sizeof (gssx_qop), (xdrproc_t) xdr_gssx_qop)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_arg_verify_mic (XDR *xdrs, gssx_arg_verify_mic *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx)) + return FALSE; + if (!xdr_gssx_ctx (xdrs, &objp->context_handle)) + return FALSE; + if (!xdr_gssx_buffer (xdrs, &objp->message_buffer)) + return FALSE; + if (!xdr_gssx_buffer (xdrs, &objp->token_buffer)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_res_verify_mic (XDR *xdrs, gssx_res_verify_mic *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_status (xdrs, &objp->status)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->context_handle, sizeof (gssx_ctx), (xdrproc_t) xdr_gssx_ctx)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->qop_state, sizeof (gssx_qop), (xdrproc_t) xdr_gssx_qop)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_arg_wrap (XDR *xdrs, gssx_arg_wrap *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx)) + return FALSE; + if (!xdr_gssx_ctx (xdrs, &objp->context_handle)) + return FALSE; + if (!xdr_bool (xdrs, &objp->conf_req)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->message_buffer.message_buffer_val, (u_int *) &objp->message_buffer.message_buffer_len, ~0, + sizeof (gssx_buffer), (xdrproc_t) xdr_gssx_buffer)) + return FALSE; + if (!xdr_gssx_qop (xdrs, &objp->qop_state)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_res_wrap (XDR *xdrs, gssx_res_wrap *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_status (xdrs, &objp->status)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->context_handle, sizeof (gssx_ctx), (xdrproc_t) xdr_gssx_ctx)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->token_buffer.token_buffer_val, (u_int *) &objp->token_buffer.token_buffer_len, ~0, + sizeof (gssx_buffer), (xdrproc_t) xdr_gssx_buffer)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->conf_state, sizeof (bool_t), (xdrproc_t) xdr_bool)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->qop_state, sizeof (gssx_qop), (xdrproc_t) xdr_gssx_qop)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_arg_unwrap (XDR *xdrs, gssx_arg_unwrap *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx)) + return FALSE; + if (!xdr_gssx_ctx (xdrs, &objp->context_handle)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->token_buffer.token_buffer_val, (u_int *) &objp->token_buffer.token_buffer_len, ~0, + sizeof (gssx_buffer), (xdrproc_t) xdr_gssx_buffer)) + return FALSE; + if (!xdr_gssx_qop (xdrs, &objp->qop_state)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_res_unwrap (XDR *xdrs, gssx_res_unwrap *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_status (xdrs, &objp->status)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->context_handle, sizeof (gssx_ctx), (xdrproc_t) xdr_gssx_ctx)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->message_buffer.message_buffer_val, (u_int *) &objp->message_buffer.message_buffer_len, ~0, + sizeof (gssx_buffer), (xdrproc_t) xdr_gssx_buffer)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->conf_state, sizeof (bool_t), (xdrproc_t) xdr_bool)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->qop_state, sizeof (gssx_qop), (xdrproc_t) xdr_gssx_qop)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_arg_wrap_size_limit (XDR *xdrs, gssx_arg_wrap_size_limit *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx)) + return FALSE; + if (!xdr_gssx_ctx (xdrs, &objp->context_handle)) + return FALSE; + if (!xdr_bool (xdrs, &objp->conf_req)) + return FALSE; + if (!xdr_gssx_qop (xdrs, &objp->qop_state)) + return FALSE; + if (!xdr_gssx_uint64 (xdrs, &objp->req_output_size)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gssx_res_wrap_size_limit (XDR *xdrs, gssx_res_wrap_size_limit *objp) +{ + register int32_t *buf; + + if (!xdr_gssx_status (xdrs, &objp->status)) + return FALSE; + if (!xdr_gssx_uint64 (xdrs, &objp->max_input_size)) + return FALSE; + return TRUE; +} |