#ifndef _GSSAPI_H_
#define _GSSAPI_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <sys/types.h>
#ifdef HAVE_XOM_H
#include <xom.h>
#endif
struct gss_ctx_id;
struct gss_cred_id;
struct gss_name;
typedef struct gss_ctx_id *gss_ctx_id_t;
typedef struct gss_cred_id *gss_cred_id_t;
typedef struct gss_name *gss_name_t;
typedef unsigned int gss_uint32;
typedef int gss_int32;
#ifdef OM_STRING
#if sizeof (gss_uint32) != sizeof (OM_uint32)
#error Incompatible definition of OM_uint32 from xom.h
#endif
typedef OM_object_identifier gss_OID_desc, *gss_OID;
#else
typedef gss_uint32 OM_uint32;
typedef struct gss_OID_desc_struct {
OM_uint32 length;
void*elements;
} gss_OID_desc, *gss_OID;
#endif
typedef struct gss_OID_set_desc_struct {
size_t count;
gss_OID elements;
} gss_OID_set_desc, *gss_OID_set;
#ifdef _SYSCALL32
typedef struct gss_OID_desc_struct32 {
OM_uint32 length;
caddr32_t elements;
} gss_OID_desc32, *gss_OID32;
#endif
typedef struct gss_buffer_desc_struct {
size_t length;
void *value;
} gss_buffer_desc, *gss_buffer_t;
typedef struct gss_channel_bindings_struct {
OM_uint32 initiator_addrtype;
gss_buffer_desc initiator_address;
OM_uint32 acceptor_addrtype;
gss_buffer_desc acceptor_address;
gss_buffer_desc application_data;
} *gss_channel_bindings_t;
typedef OM_uint32 gss_qop_t;
typedef int gss_cred_usage_t;
#define GSS_C_DELEG_FLAG 1
#define GSS_C_MUTUAL_FLAG 2
#define GSS_C_REPLAY_FLAG 4
#define GSS_C_SEQUENCE_FLAG 8
#define GSS_C_CONF_FLAG 16
#define GSS_C_INTEG_FLAG 32
#define GSS_C_ANON_FLAG 64
#define GSS_C_PROT_READY_FLAG 128
#define GSS_C_TRANS_FLAG 256
#define GSS_C_BOTH 0
#define GSS_C_INITIATE 1
#define GSS_C_ACCEPT 2
#define GSS_C_GSS_CODE 1
#define GSS_C_MECH_CODE 2
#define GSS_C_AF_UNSPEC 0
#define GSS_C_AF_LOCAL 1
#define GSS_C_AF_INET 2
#define GSS_C_AF_IMPLINK 3
#define GSS_C_AF_PUP 4
#define GSS_C_AF_CHAOS 5
#define GSS_C_AF_NS 6
#define GSS_C_AF_NBS 7
#define GSS_C_AF_ECMA 8
#define GSS_C_AF_DATAKIT 9
#define GSS_C_AF_CCITT 10
#define GSS_C_AF_SNA 11
#define GSS_C_AF_DECnet 12
#define GSS_C_AF_DLI 13
#define GSS_C_AF_LAT 14
#define GSS_C_AF_HYLINK 15
#define GSS_C_AF_APPLETALK 16
#define GSS_C_AF_BSC 17
#define GSS_C_AF_DSS 18
#define GSS_C_AF_OSI 19
#define GSS_C_AF_X25 21
#define GSS_C_AF_NULLADDR 255
#define GSS_C_NO_NAME ((gss_name_t) 0)
#define GSS_C_NO_BUFFER ((gss_buffer_t) 0)
#define GSS_C_NO_OID ((gss_OID) 0)
#define GSS_C_NO_OID_SET ((gss_OID_set) 0)
#define GSS_C_NO_CONTEXT ((gss_ctx_id_t) 0)
#define GSS_C_NO_CREDENTIAL ((gss_cred_id_t) 0)
#define GSS_C_NO_CHANNEL_BINDINGS ((gss_channel_bindings_t) 0)
#define GSS_C_EMPTY_BUFFER {0, NULL}
#define GSS_C_NULL_OID GSS_C_NO_OID
#define GSS_C_NULL_OID_SET GSS_C_NO_OID_SET
#define GSS_C_QOP_DEFAULT 0
#define GSS_C_INDEFINITE ((OM_uint32) 0xfffffffful)
extern const gss_OID GSS_C_NT_USER_NAME;
extern const gss_OID GSS_C_NT_MACHINE_UID_NAME;
extern const gss_OID GSS_C_NT_STRING_UID_NAME;
extern const gss_OID GSS_C_NT_HOSTBASED_SERVICE;
extern const gss_OID GSS_C_NT_ANONYMOUS;
extern const gss_OID GSS_C_NT_EXPORT_NAME;
#define GSS_S_COMPLETE 0
#define GSS_C_CALLING_ERROR_OFFSET 24
#define GSS_C_ROUTINE_ERROR_OFFSET 16
#define GSS_C_SUPPLEMENTARY_OFFSET 0
#define GSS_C_CALLING_ERROR_MASK ((OM_uint32) 0377ul)
#define GSS_C_ROUTINE_ERROR_MASK ((OM_uint32) 0377ul)
#define GSS_C_SUPPLEMENTARY_MASK ((OM_uint32) 0177777ul)
#define GSS_CALLING_ERROR(x) \
((x) & (GSS_C_CALLING_ERROR_MASK << GSS_C_CALLING_ERROR_OFFSET))
#define GSS_ROUTINE_ERROR(x) \
((x) & (GSS_C_ROUTINE_ERROR_MASK << GSS_C_ROUTINE_ERROR_OFFSET))
#define GSS_SUPPLEMENTARY_INFO(x) \
((x) & (GSS_C_SUPPLEMENTARY_MASK << GSS_C_SUPPLEMENTARY_OFFSET))
#define GSS_ERROR(x) \
((x) & ((GSS_C_CALLING_ERROR_MASK << GSS_C_CALLING_ERROR_OFFSET) | \
(GSS_C_ROUTINE_ERROR_MASK << GSS_C_ROUTINE_ERROR_OFFSET)))
#define GSS_S_CALL_INACCESSIBLE_READ \
(((OM_uint32) 1ul) << GSS_C_CALLING_ERROR_OFFSET)
#define GSS_S_CALL_INACCESSIBLE_WRITE \
(((OM_uint32) 2ul) << GSS_C_CALLING_ERROR_OFFSET)
#define GSS_S_CALL_BAD_STRUCTURE \
(((OM_uint32) 3ul) << GSS_C_CALLING_ERROR_OFFSET)
#define GSS_S_BAD_MECH (((OM_uint32) 1ul) << GSS_C_ROUTINE_ERROR_OFFSET)
#define GSS_S_BAD_NAME (((OM_uint32) 2ul) << GSS_C_ROUTINE_ERROR_OFFSET)
#define GSS_S_BAD_NAMETYPE (((OM_uint32) 3ul) << GSS_C_ROUTINE_ERROR_OFFSET)
#define GSS_S_BAD_BINDINGS (((OM_uint32) 4ul) << GSS_C_ROUTINE_ERROR_OFFSET)
#define GSS_S_BAD_STATUS (((OM_uint32) 5ul) << GSS_C_ROUTINE_ERROR_OFFSET)
#define GSS_S_BAD_SIG (((OM_uint32) 6ul) << GSS_C_ROUTINE_ERROR_OFFSET)
#define GSS_S_BAD_MIC GSS_S_BAD_SIG
#define GSS_S_NO_CRED (((OM_uint32) 7ul) << GSS_C_ROUTINE_ERROR_OFFSET)
#define GSS_S_NO_CONTEXT (((OM_uint32) 8ul) << GSS_C_ROUTINE_ERROR_OFFSET)
#define GSS_S_DEFECTIVE_TOKEN (((OM_uint32) 9ul) << GSS_C_ROUTINE_ERROR_OFFSET)
#define GSS_S_DEFECTIVE_CREDENTIAL \
(((OM_uint32) 10ul) << GSS_C_ROUTINE_ERROR_OFFSET)
#define GSS_S_CREDENTIALS_EXPIRED \
(((OM_uint32) 11ul) << GSS_C_ROUTINE_ERROR_OFFSET)
#define GSS_S_CONTEXT_EXPIRED \
(((OM_uint32) 12ul) << GSS_C_ROUTINE_ERROR_OFFSET)
#define GSS_S_FAILURE (((OM_uint32) 13ul) << GSS_C_ROUTINE_ERROR_OFFSET)
#define GSS_S_BAD_QOP (((OM_uint32) 14ul) << GSS_C_ROUTINE_ERROR_OFFSET)
#define GSS_S_UNAUTHORIZED (((OM_uint32) 15ul) << GSS_C_ROUTINE_ERROR_OFFSET)
#define GSS_S_UNAVAILABLE (((OM_uint32) 16ul) << GSS_C_ROUTINE_ERROR_OFFSET)
#define GSS_S_DUPLICATE_ELEMENT \
(((OM_uint32) 17ul) << GSS_C_ROUTINE_ERROR_OFFSET)
#define GSS_S_NAME_NOT_MN (((OM_uint32) 18ul) << GSS_C_ROUTINE_ERROR_OFFSET)
#define GSS_S_CONTINUE_NEEDED (1 << (GSS_C_SUPPLEMENTARY_OFFSET + 0))
#define GSS_S_DUPLICATE_TOKEN (1 << (GSS_C_SUPPLEMENTARY_OFFSET + 1))
#define GSS_S_OLD_TOKEN (1 << (GSS_C_SUPPLEMENTARY_OFFSET + 2))
#define GSS_S_UNSEQ_TOKEN (1 << (GSS_C_SUPPLEMENTARY_OFFSET + 3))
#define GSS_S_GAP_TOKEN (1 << (GSS_C_SUPPLEMENTARY_OFFSET + 4))
OM_uint32 gss_acquire_cred(
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 *
);
OM_uint32 gss_release_cred(
OM_uint32 *,
gss_cred_id_t *
);
OM_uint32 gss_init_sec_context(
OM_uint32 *,
const gss_cred_id_t,
gss_ctx_id_t *,
const gss_name_t,
const gss_OID,
OM_uint32,
OM_uint32,
gss_channel_bindings_t,
const gss_buffer_t,
gss_OID *,
gss_buffer_t,
OM_uint32 *,
OM_uint32 *
);
OM_uint32 gss_accept_sec_context(
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 *
);
OM_uint32 gss_process_context_token(
OM_uint32 *,
const gss_ctx_id_t,
const gss_buffer_t
);
OM_uint32 gss_delete_sec_context(
OM_uint32 *,
gss_ctx_id_t *,
gss_buffer_t
);
OM_uint32 gss_context_time(
OM_uint32 *,
const gss_ctx_id_t,
OM_uint32 *
);
OM_uint32 gss_get_mic(
OM_uint32 *,
const gss_ctx_id_t,
gss_qop_t,
const gss_buffer_t,
gss_buffer_t
);
OM_uint32 gss_verify_mic(
OM_uint32 *,
const gss_ctx_id_t,
const gss_buffer_t,
const gss_buffer_t,
gss_qop_t *
);
OM_uint32 gss_wrap(
OM_uint32 *,
const gss_ctx_id_t,
int,
gss_qop_t,
const gss_buffer_t,
int *,
gss_buffer_t
);
OM_uint32 gss_unwrap(
OM_uint32 *,
const gss_ctx_id_t,
const gss_buffer_t,
gss_buffer_t,
int *,
gss_qop_t *
);
OM_uint32 gss_display_status(
OM_uint32 *,
OM_uint32,
int,
const gss_OID,
OM_uint32 *,
gss_buffer_t
);
OM_uint32 gss_indicate_mechs(
OM_uint32 *,
gss_OID_set *
);
OM_uint32 gss_compare_name(
OM_uint32 *,
const gss_name_t,
const gss_name_t,
int *
);
OM_uint32 gss_display_name(
OM_uint32 *,
const gss_name_t,
gss_buffer_t,
gss_OID *
);
OM_uint32 gss_import_name(
OM_uint32 *,
const gss_buffer_t,
const gss_OID,
gss_name_t *
);
OM_uint32 gss_export_name(
OM_uint32 *,
const gss_name_t,
gss_buffer_t
);
OM_uint32 gss_release_name(
OM_uint32 *,
gss_name_t *
);
OM_uint32 gss_release_buffer(
OM_uint32 *,
gss_buffer_t
);
OM_uint32 gss_release_oid_set(
OM_uint32 *,
gss_OID_set *
);
OM_uint32 gss_inquire_cred(
OM_uint32 *,
const gss_cred_id_t,
gss_name_t *,
OM_uint32 *,
gss_cred_usage_t *,
gss_OID_set *
);
OM_uint32 gss_inquire_context(
OM_uint32 *,
const gss_ctx_id_t,
gss_name_t *,
gss_name_t *,
OM_uint32 *,
gss_OID *,
OM_uint32 *,
int *,
int *
);
OM_uint32 gss_wrap_size_limit(
OM_uint32 *,
const gss_ctx_id_t,
int,
gss_qop_t,
OM_uint32,
OM_uint32 *
);
OM_uint32 gss_add_cred(
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 *
);
OM_uint32 gss_store_cred(
OM_uint32 *,
const gss_cred_id_t,
gss_cred_usage_t,
const gss_OID,
OM_uint32,
OM_uint32,
gss_OID_set *,
gss_cred_usage_t *
);
OM_uint32 gss_inquire_cred_by_mech(
OM_uint32 *,
const gss_cred_id_t,
const gss_OID,
gss_name_t *,
OM_uint32 *,
OM_uint32 *,
gss_cred_usage_t *
);
OM_uint32 gss_export_sec_context(
OM_uint32 *,
gss_ctx_id_t *,
gss_buffer_t
);
OM_uint32 gss_import_sec_context(
OM_uint32 *,
const gss_buffer_t,
gss_ctx_id_t *
);
OM_uint32 gss_create_empty_oid_set(
OM_uint32 *,
gss_OID_set *
);
OM_uint32 gss_add_oid_set_member(
OM_uint32 *,
const gss_OID,
gss_OID_set *
);
OM_uint32 gss_test_oid_set_member(
OM_uint32 *,
const gss_OID,
const gss_OID_set,
int *
);
OM_uint32 gss_inquire_names_for_mech(
OM_uint32 *,
const gss_OID,
gss_OID_set *
);
OM_uint32 gss_inquire_mechs_for_name(
OM_uint32 *,
const gss_name_t,
gss_OID_set *
);
OM_uint32 gss_canonicalize_name(
OM_uint32 *,
const gss_name_t,
const gss_OID,
gss_name_t *
);
OM_uint32 gss_duplicate_name(
OM_uint32 *,
const gss_name_t,
gss_name_t *
);
OM_uint32 gss_release_oid(
OM_uint32 *,
gss_OID *
);
OM_uint32 gss_str_to_oid(
OM_uint32 *,
const gss_buffer_t,
gss_OID *
);
OM_uint32 gss_oid_to_str(
OM_uint32 *,
const gss_OID,
gss_buffer_t
);
OM_uint32 gss_sign(
OM_uint32 *,
gss_ctx_id_t,
int,
gss_buffer_t,
gss_buffer_t
);
OM_uint32 gss_verify(
OM_uint32 *,
gss_ctx_id_t,
gss_buffer_t,
gss_buffer_t,
int *
);
OM_uint32 gss_seal(
OM_uint32 *,
gss_ctx_id_t,
int,
int,
gss_buffer_t,
int *,
gss_buffer_t
);
OM_uint32 gss_unseal(
OM_uint32 *,
gss_ctx_id_t,
gss_buffer_t,
gss_buffer_t,
int *,
int *
);
#ifdef _KERNEL
#include <rpc/types.h>
void kgss_free_oid(gss_OID oid);
OM_uint32 kgss_acquire_cred(
OM_uint32 *,
const gss_name_t,
OM_uint32,
const gss_OID_set,
int,
gss_cred_id_t *,
gss_OID_set *,
OM_uint32 *,
uid_t);
OM_uint32 kgss_add_cred(
OM_uint32 *,
gss_cred_id_t,
gss_name_t,
gss_OID,
int,
int,
int,
gss_OID_set *,
OM_uint32 *,
OM_uint32 *,
uid_t);
OM_uint32 kgss_release_cred(
OM_uint32 *,
gss_cred_id_t *,
uid_t);
OM_uint32 kgss_init_sec_context(
OM_uint32 *,
const gss_cred_id_t,
gss_ctx_id_t *,
const gss_name_t,
const gss_OID,
int,
OM_uint32,
const gss_channel_bindings_t,
const gss_buffer_t,
gss_OID *,
gss_buffer_t,
int *,
OM_uint32 *,
uid_t);
OM_uint32 kgss_accept_sec_context(
OM_uint32 *,
gss_ctx_id_t *,
const gss_cred_id_t,
const gss_buffer_t,
const gss_channel_bindings_t,
const gss_buffer_t,
gss_OID *,
gss_buffer_t,
int *,
OM_uint32 *,
gss_cred_id_t *,
uid_t);
OM_uint32 kgss_process_context_token(
OM_uint32 *,
const gss_ctx_id_t,
const gss_buffer_t,
uid_t);
OM_uint32 kgss_delete_sec_context(
OM_uint32 *,
gss_ctx_id_t *,
gss_buffer_t);
OM_uint32 kgss_export_sec_context(
OM_uint32 *,
const gss_ctx_id_t,
gss_buffer_t);
OM_uint32 kgss_import_sec_context(
OM_uint32 *,
const gss_buffer_t,
gss_ctx_id_t);
OM_uint32 kgss_context_time(
OM_uint32 *,
const gss_ctx_id_t,
OM_uint32 *,
uid_t);
OM_uint32 kgss_sign(
OM_uint32 *,
const gss_ctx_id_t,
int,
const gss_buffer_t,
gss_buffer_t);
OM_uint32 kgss_verify(
OM_uint32 *,
const gss_ctx_id_t,
const gss_buffer_t,
const gss_buffer_t,
int *);
OM_uint32 kgss_seal(
OM_uint32 *,
const gss_ctx_id_t,
int,
int,
const gss_buffer_t,
int *,
gss_buffer_t);
OM_uint32 kgss_unseal(
OM_uint32 *,
const gss_ctx_id_t,
const gss_buffer_t,
gss_buffer_t,
int *,
int *);
OM_uint32 kgss_display_status(
OM_uint32 *,
OM_uint32,
int,
const gss_OID,
int *,
gss_buffer_t,
uid_t);
OM_uint32 kgss_indicate_mechs(
OM_uint32 *,
gss_OID_set *,
uid_t);
OM_uint32 kgss_inquire_cred(
OM_uint32 *,
const gss_cred_id_t,
gss_name_t *,
OM_uint32 *,
int *,
gss_OID_set *,
uid_t);
OM_uint32 kgss_inquire_cred_by_mech(
OM_uint32 *,
gss_cred_id_t,
gss_OID,
uid_t);
#endif
#ifdef __cplusplus
}
#endif
#endif