17 #ifndef GSSAPI_OPENSSL_H
18 #define GSSAPI_OPENSSL_H
26 #include "globus_config.h"
27 #include "globus_common.h"
32 #include "globus_gsi_callback.h"
33 #include "globus_gsi_proxy.h"
34 #include "globus_gsi_credential.h"
37 #include "openssl/ssl.h"
38 #include "openssl/err.h"
39 #include "openssl/bio.h"
40 #include "openssl/pem.h"
41 #include "openssl/x509.h"
42 #include "openssl/x509v3.h"
43 #include "openssl/stack.h"
45 #define GLOBUS_I_GSI_GSSAPI_IMPL_VERSION 1
47 #define GSS_I_CTX_INITIALIZED 1
48 #define GSS_I_DISALLOW_ENCRYPTION 2
49 #define GSS_I_PROTECTION_FAIL_ON_CONTEXT_EXPIRATION 4
50 #define GSS_I_APPLICATION_WILL_HANDLE_EXTENSIONS 8
52 #define GSS_C_QOP_GLOBUS_GSSAPI_OPENSSL_BIG 1
75 #define SSL3_RT_GSSAPI_OPENSSL 26
79 #define L2N(LONG_VAL, CHAR_ARRAY) \
81 unsigned char * _char_array_ = CHAR_ARRAY; \
82 *(_char_array_++) = (unsigned char) (((LONG_VAL) >> 24) & 0xff); \
83 *(_char_array_++) = (unsigned char) (((LONG_VAL) >> 16) & 0xff); \
84 *(_char_array_++) = (unsigned char) (((LONG_VAL) >> 8) & 0xff); \
85 *(_char_array_++) = (unsigned char) (((LONG_VAL)) & 0xff); \
88 #define N2L(CHAR_ARRAY, LONG_VAL) \
90 unsigned char * _char_array_ = CHAR_ARRAY; \
91 (LONG_VAL) = ((*(_char_array_++)) << 24) & 0xff000000; \
92 (LONG_VAL) |= ((*(_char_array_++)) << 16) & 0xff0000; \
93 (LONG_VAL) |= ((*(_char_array_++)) << 8) & 0xff00; \
94 (LONG_VAL) |= ((*(_char_array_++)) & 0xff); \
97 #define N2S(CHAR_ARRAY, SHORT) \
99 char * _char_array_ = CHAR_ARRAY; \
100 (SHORT) = ((unsigned int) (*(_char_array_++))) << 8; \
101 (SHORT) |= ((unsigned int) (*(_char_array_++))); \
104 #define S2N(SHORT, CHAR_ARRAY) \
106 char * _char_array_ = CHAR_ARRAY; \
107 *(_char_array_++) = (unsigned char) (((SHORT) >> 8) & 0xff); \
108 *(_char_array_++) = (unsigned char) ((SHORT) & 0xff); \
113 #define g_OID_equal(o1, o2) \
116 ((o1)->length == (o2)->length) && \
117 (memcmp((o1)->elements,(o2)->elements,(int) (o1)->length) == 0)))
119 typedef struct gss_name_desc_struct {
124 char * x509n_oneline;
125 GENERAL_NAMES * subjectAltNames;
133 typedef struct gss_cred_id_desc_struct {
134 globus_gsi_cred_handle_t cred_handle;
135 gss_name_desc * globusid;
136 gss_cred_usage_t cred_usage;
137 SSL_CTX * ssl_context;
140 typedef struct gss_ctx_id_desc_struct{
141 globus_mutex_t mutex;
142 globus_gsi_callback_data_t callback_data;
143 gss_cred_id_desc * peer_cred_handle;
144 gss_cred_id_desc * cred_handle;
145 gss_cred_id_desc * deleg_cred_handle;
146 globus_gsi_proxy_handle_t proxy_handle;
156 int locally_initiated;
158 gss_OID_set extension_oids;
162 const gss_OID_desc *
const gss_mech_globus_gssapi_openssl;
165 const gss_OID_desc *
const gss_proxycertinfo_extension;
168 gss_OID_desc * gss_nt_host_ip;
171 gss_OID_desc * gss_nt_x509;
173 #define GLOBUS_GSS_C_NT_HOST_IP gss_nt_host_ip
174 #define GLOBUS_GSS_C_NT_X509 gss_nt_x509
180 globus_l_gsi_gssapi_activate_once(
void);
gss_delegation_state_t
Delegation State Type.
Definition: globus_gsi_gss_constants.h:110
globus_thread_once_t once_control
Definition: module.c:98
gss_con_st_t
Connection State Type.
Definition: globus_gsi_gss_constants.h:98
Globus GSI GSS constants.