31#if defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__)
32#define GSS_CALLCONV __stdcall
33#define GSS_CALLCONV_C __cdecl
40#ifdef GSS_USE_FUNCTION_POINTERS
41#define GSS_FUNC(f) (*f##_type)
42#define GSS_MAKE_TYPEDEF typedef
45#define GSS_MAKE_TYPEDEF
48#include "globus_common.h"
60#ifndef GLOBUS_GLOBAL_DOCUMENT_SET
123#define GLOBUS_GSI_GSSAPI_MODULE (&globus_i_gsi_gssapi_module)
126globus_module_descriptor_t globus_i_gsi_gssapi_module;
128#define _GGSL(s) globus_common_i18n_get_string(GLOBUS_GSI_GSSAPI_MODULE,\
143typedef struct gss_name_desc_struct * gss_name_t;
144typedef struct gss_ctx_id_desc_struct * gss_ctx_id_t;
145typedef struct gss_cred_id_desc_struct * gss_cred_id_t;
159#if sizeof(globus_uint) != sizeof(OM_uint32)
160#error Incompatible definition of OM_uint32 from xom.h
163typedef OM_object_identifier gss_OID_desc, *gss_OID;
170typedef globus_uint_t OM_uint32;
171typedef struct gss_OID_desc_struct
175} gss_OID_desc, *gss_OID;
179typedef struct gss_OID_set_desc_struct
183} gss_OID_set_desc, *gss_OID_set;
189typedef OM_uint32 gss_qop_t;
191typedef int gss_cred_usage_t;
194typedef struct gss_buffer_desc_struct
198} gss_buffer_desc, *gss_buffer_t;
200typedef struct gss_channel_bindings_struct
202 OM_uint32 initiator_addrtype;
203 gss_buffer_desc initiator_address;
204 OM_uint32 acceptor_addrtype;
205 gss_buffer_desc acceptor_address;
206 gss_buffer_desc application_data;
207} *gss_channel_bindings_t;
212#define GSS_C_DELEG_FLAG 1
213#define GSS_C_MUTUAL_FLAG 2
214#define GSS_C_REPLAY_FLAG 4
215#define GSS_C_SEQUENCE_FLAG 8
216#define GSS_C_CONF_FLAG 16
217#define GSS_C_INTEG_FLAG 32
218#define GSS_C_ANON_FLAG 64
219#define GSS_C_PROT_READY_FLAG 128
220#define GSS_C_TRANS_FLAG 256
268#define GSS_C_GLOBUS_DONT_ACCEPT_LIMITED_PROXY_FLAG 8192
277#define GSS_C_GLOBUS_DELEGATE_LIMITED_PROXY_FLAG 4096
288#define GSS_C_GLOBUS_ACCEPT_PROXY_SIGNED_BY_LIMITED_PROXY_FLAG 32768
297#define GSS_C_GLOBUS_ALLOW_MISSING_SIGNING_POLICY 65536
306#define GSS_C_GLOBUS_FORCE_SSL3 131072
326#define GSS_C_GLOBUS_RECEIVED_LIMITED_PROXY_FLAG 8192
336#define GSS_C_GLOBUS_RECEIVED_LIMITED_PROXY_DURING_DELEGATION_FLAG 4096
338#define GSS_C_GLOBUS_LIMITED_DELEG_PROXY_FLAG 4096
339#define GSS_C_GLOBUS_LIMITED_PROXY_FLAG 8192
340#define GSS_C_GLOBUS_SSL_COMPATIBLE 16384
349#define GSS_C_GLOBUS_LIMITED_PROXY_MANY_FLAG 32768
355#define GSS_C_INITIATE 1
356#define GSS_C_ACCEPT 2
361#define GSS_C_GSS_CODE 1
362#define GSS_C_MECH_CODE 2
367#define GSS_C_AF_UNSPEC 0
368#define GSS_C_AF_LOCAL 1
369#define GSS_C_AF_INET 2
370#define GSS_C_AF_IMPLINK 3
371#define GSS_C_AF_PUP 4
372#define GSS_C_AF_CHAOS 5
374#define GSS_C_AF_NBS 7
375#define GSS_C_AF_ECMA 8
376#define GSS_C_AF_DATAKIT 9
377#define GSS_C_AF_CCITT 10
378#define GSS_C_AF_SNA 11
379#define GSS_C_AF_DECnet 12
380#define GSS_C_AF_DLI 13
381#define GSS_C_AF_LAT 14
382#define GSS_C_AF_HYLINK 15
383#define GSS_C_AF_APPLETALK 16
384#define GSS_C_AF_BSC 17
385#define GSS_C_AF_DSS 18
386#define GSS_C_AF_OSI 19
387#define GSS_C_AF_X25 21
389#define GSS_C_AF_NULLADDR 255
394#define GSS_C_NO_NAME ((gss_name_t) 0)
395#define GSS_C_NO_BUFFER ((gss_buffer_t) 0)
396#define GSS_C_NO_BUFFER_SET ((gss_buffer_set_t) 0)
397#define GSS_C_NO_OID ((gss_OID) 0)
398#define GSS_C_NO_OID_SET ((gss_OID_set) 0)
399#define GSS_C_NO_CONTEXT ((gss_ctx_id_t) 0)
400#define GSS_C_NO_CREDENTIAL ((gss_cred_id_t) 0)
401#define GSS_C_NO_CHANNEL_BINDINGS ((gss_channel_bindings_t) 0)
402#define GSS_C_EMPTY_BUFFER {0, NULL}
403#define GSS_C_EMPTY_BUFFER_SET {0, (gss_buffer_t) 0}
409#define GSS_C_NULL_OID GSS_C_NO_OID
410#define GSS_C_NULL_OID_SET GSS_C_NO_OID_SET
421#define GSS_C_QOP_DEFAULT 0
427#define GSS_C_INDEFINITE 0xfffffffful
440extern gss_OID GSS_C_NT_USER_NAME;
453extern gss_OID GSS_C_NT_MACHINE_UID_NAME;
466extern gss_OID GSS_C_NT_STRING_UID_NAME;
485extern gss_OID GSS_C_NT_HOSTBASED_SERVICE_X;
498extern gss_OID GSS_C_NT_HOSTBASED_SERVICE;
511extern gss_OID GSS_C_NT_ANONYMOUS;
523extern gss_OID GSS_C_NT_EXPORT_NAME;
527#define GSS_S_COMPLETE 0
532#define GSS_C_CALLING_ERROR_OFFSET 24
533#define GSS_C_ROUTINE_ERROR_OFFSET 16
534#define GSS_C_SUPPLEMENTARY_OFFSET 0
535#define GSS_C_CALLING_ERROR_MASK 0377ul
536#define GSS_C_ROUTINE_ERROR_MASK 0377ul
537#define GSS_C_SUPPLEMENTARY_MASK 0177777ul
545#define GSS_CALLING_ERROR(x) \
546(x & (GSS_C_CALLING_ERROR_MASK << GSS_C_CALLING_ERROR_OFFSET))
547#define GSS_ROUTINE_ERROR(x) \
548 (x & (GSS_C_ROUTINE_ERROR_MASK << GSS_C_ROUTINE_ERROR_OFFSET))
549#define GSS_SUPPLEMENTARY_INFO(x) \
550 (x & (GSS_C_SUPPLEMENTARY_MASK << GSS_C_SUPPLEMENTARY_OFFSET))
551#define GSS_ERROR(x) \
552 (x & ((GSS_C_CALLING_ERROR_MASK << GSS_C_CALLING_ERROR_OFFSET) | \
553 (GSS_C_ROUTINE_ERROR_MASK << GSS_C_ROUTINE_ERROR_OFFSET)))
562#define GSS_S_CALL_INACCESSIBLE_READ \
563 (1ul << GSS_C_CALLING_ERROR_OFFSET)
564#define GSS_S_CALL_INACCESSIBLE_WRITE \
565 (2ul << GSS_C_CALLING_ERROR_OFFSET)
566#define GSS_S_CALL_BAD_STRUCTURE \
567 (3ul << GSS_C_CALLING_ERROR_OFFSET)
572#define GSS_S_BAD_MECH (1ul << GSS_C_ROUTINE_ERROR_OFFSET)
573#define GSS_S_BAD_NAME (2ul << GSS_C_ROUTINE_ERROR_OFFSET)
574#define GSS_S_BAD_NAMETYPE (3ul << GSS_C_ROUTINE_ERROR_OFFSET)
575#define GSS_S_BAD_BINDINGS (4ul << GSS_C_ROUTINE_ERROR_OFFSET)
576#define GSS_S_BAD_STATUS (5ul << GSS_C_ROUTINE_ERROR_OFFSET)
577#define GSS_S_BAD_SIG (6ul << GSS_C_ROUTINE_ERROR_OFFSET)
578#define GSS_S_BAD_MIC GSS_S_BAD_SIG
579#define GSS_S_NO_CRED (7ul << GSS_C_ROUTINE_ERROR_OFFSET)
580#define GSS_S_NO_CONTEXT (8ul << GSS_C_ROUTINE_ERROR_OFFSET)
581#define GSS_S_DEFECTIVE_TOKEN (9ul << GSS_C_ROUTINE_ERROR_OFFSET)
582#define GSS_S_DEFECTIVE_CREDENTIAL (10ul << GSS_C_ROUTINE_ERROR_OFFSET)
583#define GSS_S_CREDENTIALS_EXPIRED (11ul << GSS_C_ROUTINE_ERROR_OFFSET)
584#define GSS_S_CONTEXT_EXPIRED (12ul << GSS_C_ROUTINE_ERROR_OFFSET)
585#define GSS_S_FAILURE (13ul << GSS_C_ROUTINE_ERROR_OFFSET)
586#define GSS_S_BAD_QOP (14ul << GSS_C_ROUTINE_ERROR_OFFSET)
587#define GSS_S_UNAUTHORIZED (15ul << GSS_C_ROUTINE_ERROR_OFFSET)
588#define GSS_S_UNAVAILABLE (16ul << GSS_C_ROUTINE_ERROR_OFFSET)
589#define GSS_S_DUPLICATE_ELEMENT (17ul << GSS_C_ROUTINE_ERROR_OFFSET)
590#define GSS_S_NAME_NOT_MN (18ul << GSS_C_ROUTINE_ERROR_OFFSET)
591#define GSS_S_EXT_COMPAT (19ul << GSS_C_ROUTINE_ERROR_OFFSET)
597#define GSS_S_CONTINUE_NEEDED (1ul << (GSS_C_SUPPLEMENTARY_OFFSET + 0))
598#define GSS_S_DUPLICATE_TOKEN (1ul << (GSS_C_SUPPLEMENTARY_OFFSET + 1))
599#define GSS_S_OLD_TOKEN (1ul << (GSS_C_SUPPLEMENTARY_OFFSET + 2))
600#define GSS_S_UNSEQ_TOKEN (1ul << (GSS_C_SUPPLEMENTARY_OFFSET + 3))
601#define GSS_S_GAP_TOKEN (1ul << (GSS_C_SUPPLEMENTARY_OFFSET + 4))
635 const gss_channel_bindings_t,
649 const gss_channel_bindings_t,
659GSS_CALLCONV GSS_FUNC(gss_process_context_token)
819GSS_CALLCONV GSS_FUNC(gss_add_cred)
834GSS_CALLCONV GSS_FUNC(gss_inquire_cred_by_mech)
845GSS_CALLCONV GSS_FUNC(gss_export_sec_context)
852GSS_CALLCONV GSS_FUNC(gss_import_sec_context)
880GSS_CALLCONV GSS_FUNC(gss_inquire_names_for_mech)
888GSS_CALLCONV GSS_FUNC(gss_inquire_mechs_for_name)
895GSS_CALLCONV GSS_FUNC(gss_canonicalize_name)
958#ifndef USE_ONLY_STANDARD_GSSAPI
959#define _HAVE_GSI_EXTENDED_GSSAPI
983typedef struct gss_buffer_set_desc_struct
986 gss_buffer_t elements;
987} gss_buffer_set_desc, *gss_buffer_set_t;
1000 gss_buffer_set_t *);
1006 gss_buffer_set_t *);
1023 const gss_cred_id_t,
1033 const gss_cred_id_t,
1036 const gss_buffer_set_t,
1048 const gss_buffer_set_t,
1063 gss_buffer_set_t *);
1069 const gss_cred_id_t,
1071 gss_buffer_set_t *);
1079 const gss_buffer_t);
1081extern const gss_OID_desc *
const GSS_DISALLOW_ENCRYPTION;
1082extern const gss_OID_desc *
const GSS_PROTECTION_FAIL_ON_CONTEXT_EXPIRATION;
1083extern const gss_OID_desc *
const GSS_APPLICATION_WILL_HANDLE_EXTENSIONS;
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_release_buffer_set(OM_uint32 *, gss_buffer_set_t *)
Free a Buffer Set.
Definition: buffer_set.c:220
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_create_empty_buffer_set(OM_uint32 *, gss_buffer_set_t *)
Create a empty buffer set.
Definition: buffer_set.c:62
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_add_buffer_set_member(OM_uint32 *, const gss_buffer_t, gss_buffer_set_t *)
Add a buffer to a buffer set.
Definition: buffer_set.c:127
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_accept_delegation(OM_uint32 *, const gss_ctx_id_t, const gss_OID_set, const gss_buffer_set_t, const gss_buffer_t, OM_uint32, OM_uint32, OM_uint32 *, gss_cred_id_t *, gss_OID *, gss_buffer_t)
Accept a delegated credential.
Definition: accept_delegation.c:79
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_init_delegation(OM_uint32 *, const gss_ctx_id_t, const gss_cred_id_t, const gss_OID, const gss_OID_set, const gss_buffer_set_t, const gss_buffer_t, OM_uint32, OM_uint32, gss_buffer_t)
Initiate Delegation.
Definition: init_delegation.c:86
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_inquire_sec_context_by_oid(OM_uint32 *, const gss_ctx_id_t, const gss_OID, gss_buffer_set_t *)
Inquire Sec Context by OID.
Definition: inquire_sec_context_by_oid.c:38
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_set_sec_context_option(OM_uint32 *, gss_ctx_id_t *, const gss_OID, const gss_buffer_t)
Set Security Context Option.
Definition: set_sec_context_option.c:72
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_inquire_cred_by_oid(OM_uint32 *, const gss_cred_id_t, const gss_OID, gss_buffer_set_t *)
Inquire Cred By OID.
Definition: inquire_cred_by_oid.c:50
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_export_cred(OM_uint32 *, const gss_cred_id_t, const gss_OID, OM_uint32, gss_buffer_t)
Export a GSSAPI credential.
Definition: export_cred.c:52
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_import_cred(OM_uint32 *, gss_cred_id_t *, const gss_OID, OM_uint32, const gss_buffer_t, OM_uint32, OM_uint32 *)
Import a credential.
Definition: import_cred.c:68
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_add_oid_set_member(OM_uint32 *, const gss_OID, gss_OID_set *)
Add OID Set Member.
Definition: oid_functions.c:165
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_release_name(OM_uint32 *, gss_name_t *)
GSS Release Name.
Definition: release_name.c:42
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_seal(OM_uint32 *, gss_ctx_id_t, int, int, gss_buffer_t, int *, gss_buffer_t)
Seal.
Definition: wrap.c:355
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_verify(OM_uint32 *, gss_ctx_id_t, gss_buffer_t, gss_buffer_t, int *)
Verify.
Definition: verify_mic.c:647
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_wrap(OM_uint32 *, const gss_ctx_id_t, int, gss_qop_t, const gss_buffer_t, int *, gss_buffer_t)
Wrap.
Definition: wrap.c:141
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_release_oid_set(OM_uint32 *, gss_OID_set *)
Release OID Set.
Definition: oid_functions.c:402
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_verify_mic(OM_uint32 *, const gss_ctx_id_t, const gss_buffer_t, const gss_buffer_t, gss_qop_t *)
Verify MIC.
Definition: verify_mic.c:80
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_unwrap(OM_uint32 *, const gss_ctx_id_t, const gss_buffer_t, gss_buffer_t, int *, gss_qop_t *)
Unwrap.
Definition: unwrap.c:50
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_display_name(OM_uint32 *, const gss_name_t, gss_buffer_t, gss_OID *)
Display Name.
Definition: display_name.c:46
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_export_name(OM_uint32 *, const gss_name_t, gss_buffer_t)
Export Name.
Definition: export_name.c:37
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_duplicate_name(OM_uint32 *, const gss_name_t, gss_name_t *)
Duplicate Name.
Definition: duplicate_name.c:44
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_delete_sec_context(OM_uint32 *, gss_ctx_id_t *, gss_buffer_t)
Delete Security Context.
Definition: delete_sec_context.c:45
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_get_mic(OM_uint32 *, const gss_ctx_id_t, gss_qop_t, const gss_buffer_t, gss_buffer_t)
Get MICCalculates a cryptographic MIC (message integrity check) over an application message,...
Definition: get_mic.c:58
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_release_buffer(OM_uint32 *, gss_buffer_t)
Release Buffer.
Definition: release_buffer.c:36
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_inquire_cred(OM_uint32 *, const gss_cred_id_t, gss_name_t *, OM_uint32 *, gss_cred_usage_t *, gss_OID_set *)
Inquire Cred.
Definition: inquire_cred.c:61
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_wrap_size_limit(OM_uint32 *, const gss_ctx_id_t, int, gss_qop_t, OM_uint32, OM_uint32 *)
Wrap Size Limit.
Definition: wrap.c:45
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_display_status(OM_uint32 *, OM_uint32, int, const gss_OID, OM_uint32 *, gss_buffer_t)
Display StatusCalls the OpenSSL error print routines to produce a printable message....
Definition: display_status.c:46
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() 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 *)
Acquire Credential.
Definition: acquire_cred.c:73
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_context_time(OM_uint32 *, const gss_ctx_id_t, OM_uint32 *)
Context Time.
Definition: inquire_context.c:209
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_sign(OM_uint32 *, gss_ctx_id_t, int, gss_buffer_t, gss_buffer_t)
Sign.
Definition: get_mic.c:334
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_import_name(OM_uint32 *, const gss_buffer_t, const gss_OID, gss_name_t *)
Definition: import_name.c:88
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_indicate_mechs(OM_uint32 *, gss_OID_set *)
Indicate Mechs.
Definition: oid_functions.c:294
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() 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 *)
GSS Accept Security Context.
Definition: accept_sec_context.c:49
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_compare_name(OM_uint32 *, const gss_name_t, const gss_name_t, int *)
Compare Name.
Definition: compare_name.c:189
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_inquire_context(OM_uint32 *, const gss_ctx_id_t, gss_name_t *, gss_name_t *, OM_uint32 *, gss_OID *, OM_uint32 *, int *, int *)
Inquire Context.
Definition: inquire_context.c:45
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_create_empty_oid_set(OM_uint32 *, gss_OID_set *)
Create Empty OID Set.
Definition: oid_functions.c:243
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_release_cred(OM_uint32 *, gss_cred_id_t *)
Release Credential.
Definition: release_cred.c:42
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_test_oid_set_member(OM_uint32 *, const gss_OID, const gss_OID_set, int *)
Test OID Set Member.
Definition: oid_functions.c:442
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() gss_unseal(OM_uint32 *, gss_ctx_id_t, gss_buffer_t, gss_buffer_t, int *, int *)
Unseal.
Definition: unwrap.c:351
GSS_MAKE_TYPEDEF OM_uint32 GSS_CALLCONV GSS_FUNC() 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, const gss_channel_bindings_t, const gss_buffer_t, gss_OID *, gss_buffer_t, OM_uint32 *, OM_uint32 *)
Init Sec Context.
Definition: init_sec_context.c:36