#include <unistd.h>
#include <sys/queue.h>
typedef OM_uint32 _gss_acquire_cred_t
(OM_uint32 *,
const gss_name_t,
OM_uint32,
const gss_OID_set,
gss_cred_usage_t,
gss_cred_id_t *,
gss_OID_set *,
OM_uint32 *
);
typedef OM_uint32 _gss_release_cred_t
(OM_uint32 *,
gss_cred_id_t *
);
typedef OM_uint32 _gss_init_sec_context_t
(OM_uint32 *,
const gss_cred_id_t,
gss_ctx_id_t *,
const gss_name_t,
const gss_OID,
OM_uint32,
OM_uint32,
const gss_channel_bindings_t,
const gss_buffer_t,
gss_OID *,
gss_buffer_t,
OM_uint32 *,
OM_uint32 *
);
typedef OM_uint32 _gss_accept_sec_context_t
(OM_uint32 *,
gss_ctx_id_t *,
const gss_cred_id_t,
const gss_buffer_t,
const gss_channel_bindings_t,
gss_name_t *,
gss_OID *,
gss_buffer_t,
OM_uint32 *,
OM_uint32 *,
gss_cred_id_t *
);
typedef OM_uint32 _gss_process_context_token_t
(OM_uint32 *,
const gss_ctx_id_t,
const gss_buffer_t
);
typedef OM_uint32 _gss_delete_sec_context_t
(OM_uint32 *,
gss_ctx_id_t *,
gss_buffer_t
);
typedef OM_uint32 _gss_context_time_t
(OM_uint32 *,
const gss_ctx_id_t,
OM_uint32 *
);
typedef OM_uint32 _gss_get_mic_t
(OM_uint32 *,
const gss_ctx_id_t,
gss_qop_t,
const gss_buffer_t,
gss_buffer_t
);
typedef OM_uint32 _gss_verify_mic_t
(OM_uint32 *,
const gss_ctx_id_t,
const gss_buffer_t,
const gss_buffer_t,
gss_qop_t *
);
typedef OM_uint32 _gss_wrap_t
(OM_uint32 *,
const gss_ctx_id_t,
int,
gss_qop_t,
const gss_buffer_t,
int *,
gss_buffer_t
);
typedef OM_uint32 _gss_unwrap_t
(OM_uint32 *,
const gss_ctx_id_t,
const gss_buffer_t,
gss_buffer_t,
int *,
gss_qop_t *
);
typedef OM_uint32 _gss_display_status_t
(OM_uint32 *,
OM_uint32,
int,
const gss_OID,
OM_uint32 *,
gss_buffer_t
);
typedef OM_uint32 _gss_indicate_mechs_t
(OM_uint32 *,
gss_OID_set *
);
typedef OM_uint32 _gss_compare_name_t
(OM_uint32 *,
const gss_name_t,
const gss_name_t,
int *
);
typedef OM_uint32 _gss_display_name_t
(OM_uint32 *,
const gss_name_t,
gss_buffer_t,
gss_OID *
);
typedef OM_uint32 _gss_import_name_t
(OM_uint32 *,
const gss_buffer_t,
const gss_OID,
gss_name_t *
);
typedef OM_uint32 _gss_export_name_t
(OM_uint32 *,
const gss_name_t,
gss_buffer_t
);
typedef OM_uint32 _gss_release_name_t
(OM_uint32 *,
gss_name_t *
);
typedef OM_uint32 _gss_inquire_cred_t
(OM_uint32 *,
const gss_cred_id_t,
gss_name_t *,
OM_uint32 *,
gss_cred_usage_t *,
gss_OID_set *
);
typedef OM_uint32 _gss_inquire_context_t
(OM_uint32 *,
const gss_ctx_id_t,
gss_name_t *,
gss_name_t *,
OM_uint32 *,
gss_OID *,
OM_uint32 *,
int *,
int *
);
typedef OM_uint32 _gss_wrap_size_limit_t
(OM_uint32 *,
const gss_ctx_id_t,
int,
gss_qop_t,
OM_uint32,
OM_uint32 *
);
typedef OM_uint32 _gss_add_cred_t (
OM_uint32 *,
const gss_cred_id_t,
const gss_name_t,
const gss_OID,
gss_cred_usage_t,
OM_uint32,
OM_uint32,
gss_cred_id_t *,
gss_OID_set *,
OM_uint32 *,
OM_uint32 *
);
typedef OM_uint32 _gss_inquire_cred_by_mech_t (
OM_uint32 *,
const gss_cred_id_t,
const gss_OID,
gss_name_t *,
OM_uint32 *,
OM_uint32 *,
gss_cred_usage_t *
);
typedef OM_uint32 _gss_export_sec_context_t (
OM_uint32 *,
gss_ctx_id_t *,
gss_buffer_t
);
typedef OM_uint32 _gss_import_sec_context_t (
OM_uint32 *,
const gss_buffer_t,
gss_ctx_id_t *
);
typedef OM_uint32 _gss_inquire_names_for_mech_t (
OM_uint32 *,
const gss_OID,
gss_OID_set *
);
typedef OM_uint32 _gss_inquire_mechs_for_name_t (
OM_uint32 *,
const gss_name_t,
gss_OID_set *
);
typedef OM_uint32 _gss_canonicalize_name_t (
OM_uint32 *,
const gss_name_t,
const gss_OID,
gss_name_t *
);
typedef OM_uint32 _gss_duplicate_name_t (
OM_uint32 *,
const gss_name_t,
gss_name_t *
);
typedef OM_uint32 _gss_inquire_sec_context_by_oid
(OM_uint32 *,
const gss_ctx_id_t,
const gss_OID,
gss_buffer_set_t *
);
typedef OM_uint32 _gss_inquire_cred_by_oid
(OM_uint32 *,
const gss_cred_id_t,
const gss_OID,
gss_buffer_set_t *
);
typedef OM_uint32 _gss_set_sec_context_option
(OM_uint32 *,
gss_ctx_id_t *,
const gss_OID,
const gss_buffer_t
);
typedef OM_uint32 _gss_set_cred_option
(OM_uint32 *,
gss_cred_id_t *,
const gss_OID,
const gss_buffer_t
);
typedef OM_uint32 _gss_pseudo_random
(OM_uint32 *,
gss_ctx_id_t,
int,
const gss_buffer_t,
ssize_t,
gss_buffer_t
);
typedef OM_uint32 _gss_pname_to_uid
(OM_uint32 *,
gss_name_t pname,
gss_OID mech,
uid_t *uidp
);
struct _gss_mech_switch {
SLIST_ENTRY(_gss_mech_switch) gm_link;
const char *gm_name_prefix;
gss_OID_desc gm_mech_oid;
void *gm_so;
_gss_acquire_cred_t *gm_acquire_cred;
_gss_release_cred_t *gm_release_cred;
_gss_init_sec_context_t *gm_init_sec_context;
_gss_accept_sec_context_t *gm_accept_sec_context;
_gss_process_context_token_t *gm_process_context_token;
_gss_delete_sec_context_t *gm_delete_sec_context;
_gss_context_time_t *gm_context_time;
_gss_get_mic_t *gm_get_mic;
_gss_verify_mic_t *gm_verify_mic;
_gss_wrap_t *gm_wrap;
_gss_unwrap_t *gm_unwrap;
_gss_display_status_t *gm_display_status;
_gss_indicate_mechs_t *gm_indicate_mechs;
_gss_compare_name_t *gm_compare_name;
_gss_display_name_t *gm_display_name;
_gss_import_name_t *gm_import_name;
_gss_export_name_t *gm_export_name;
_gss_release_name_t *gm_release_name;
_gss_inquire_cred_t *gm_inquire_cred;
_gss_inquire_context_t *gm_inquire_context;
_gss_wrap_size_limit_t *gm_wrap_size_limit;
_gss_add_cred_t *gm_add_cred;
_gss_inquire_cred_by_mech_t *gm_inquire_cred_by_mech;
_gss_export_sec_context_t *gm_export_sec_context;
_gss_import_sec_context_t *gm_import_sec_context;
_gss_inquire_names_for_mech_t *gm_inquire_names_for_mech;
_gss_inquire_mechs_for_name_t *gm_inquire_mechs_for_name;
_gss_canonicalize_name_t *gm_canonicalize_name;
_gss_duplicate_name_t *gm_duplicate_name;
_gss_inquire_sec_context_by_oid *gm_inquire_sec_context_by_oid;
_gss_inquire_cred_by_oid *gm_inquire_cred_by_oid;
_gss_set_sec_context_option *gm_set_sec_context_option;
_gss_set_cred_option *gm_set_cred_option;
_gss_pseudo_random *gm_pseudo_random;
_gss_pname_to_uid *gm_pname_to_uid;
};
SLIST_HEAD(_gss_mech_switch_list, _gss_mech_switch);
extern struct _gss_mech_switch_list _gss_mechs;
extern gss_OID_set _gss_mech_oids;
extern void _gss_load_mech(void);
extern struct _gss_mech_switch *_gss_find_mech_switch(gss_OID);
extern void _gss_mg_error(struct _gss_mech_switch *m, OM_uint32 maj,
OM_uint32 min);
extern void _gss_mg_collect_error(gss_OID mech, OM_uint32 maj, OM_uint32 min);