globus_gsi_callback  5.16
 All Files Functions Typedefs Enumerations Enumerator Macros Groups Pages
globus_i_gsi_callback.h
1 
2 #ifndef _GLOBUS_I_GSI_CALLBACK_H_
3 #define _GLOBUS_I_GSI_CALLBACK_H_
4 
5 #ifndef GLOBUS_DONT_DOCUMENT_INTERNAL
6 
12 #include "globus_gsi_callback.h"
13 #include "globus_gsi_cert_utils.h"
14 
15 /* DEBUG MACROS */
16 
17 #ifdef BUILD_DEBUG
18 
19 extern int globus_i_gsi_callback_debug_level;
20 extern FILE * globus_i_gsi_callback_debug_fstream;
21 
22 #define GLOBUS_I_GSI_CALLBACK_DEBUG(_LEVEL_) \
23  (globus_i_gsi_callback_debug_level >= (_LEVEL_))
24 
25 #define GLOBUS_I_GSI_CALLBACK_DEBUG_FPRINTF(_LEVEL_, _MESSAGE_) \
26  { \
27  if (GLOBUS_I_GSI_CALLBACK_DEBUG(_LEVEL_)) \
28  { \
29  globus_libc_fprintf _MESSAGE_; \
30  } \
31  }
32 
33 #define GLOBUS_I_GSI_CALLBACK_DEBUG_FNPRINTF(_LEVEL_, _MESSAGE_) \
34  { \
35  if (GLOBUS_I_GSI_CALLBACK_DEBUG(_LEVEL_)) \
36  { \
37  char * _tmp_str_ = \
38  globus_common_create_nstring _MESSAGE_; \
39  globus_libc_fprintf(globus_i_gsi_callback_debug_fstream, \
40  _tmp_str_); \
41  globus_libc_free(_tmp_str_); \
42  } \
43  }
44 
45 #define GLOBUS_I_GSI_CALLBACK_DEBUG_PRINT(_LEVEL_, _MESSAGE_) \
46  { \
47  if (GLOBUS_I_GSI_CALLBACK_DEBUG(_LEVEL_)) \
48  { \
49  globus_libc_fprintf(globus_i_gsi_callback_debug_fstream, \
50  _MESSAGE_); \
51  } \
52  }
53 
54 #define GLOBUS_I_GSI_CALLBACK_DEBUG_PRINT_OBJECT(_LEVEL_, _OBJ_NAME_, _OBJ_) \
55  { \
56  if (GLOBUS_I_GSI_CALLBACK_DEBUG(_LEVEL_)) \
57  { \
58  _OBJ_NAME_##_print_fp(globus_i_gsi_callback_debug_fstream, _OBJ_); \
59  } \
60  }
61 
62 #else
63 
64 #define GLOBUS_I_GSI_CALLBACK_DEBUG(_LEVEL_) 0
65 #define GLOBUS_I_GSI_CALLBACK_DEBUG_FPRINTF(_LEVEL_, _MESSAGE_) {}
66 #define GLOBUS_I_GSI_CALLBACK_DEBUG_FNPRINTF(_LEVEL_, _MESSAGE_) {}
67 #define GLOBUS_I_GSI_CALLBACK_DEBUG_PRINT(_LEVEL_, _MESSAGE_) {}
68 #define GLOBUS_I_GSI_CALLBACK_DEBUG_PRINT_OBJECT(_LEVEL_, _OBJ_NAME_, _OBJ_) {}
69 
70 #endif
71 
72 #define GLOBUS_I_GSI_CALLBACK_DEBUG_ENTER \
73  GLOBUS_I_GSI_CALLBACK_DEBUG_FPRINTF( \
74  1, (globus_i_gsi_callback_debug_fstream, \
75  "%s entering\n", _function_name_))
76 
77 #define GLOBUS_I_GSI_CALLBACK_DEBUG_EXIT \
78  GLOBUS_I_GSI_CALLBACK_DEBUG_FPRINTF( \
79  2, (globus_i_gsi_callback_debug_fstream, \
80  "%s exiting\n", _function_name_))
81 
82 /* ERROR MACROS */
83 
84 #define GLOBUS_GSI_CALLBACK_OPENSSL_ERROR_RESULT(_RESULT_, \
85  _ERRORTYPE_, \
86  _ERRSTR_) \
87  { \
88  char * _tmp_str_ = \
89  globus_common_create_string _ERRSTR_; \
90  _RESULT_ = globus_i_gsi_callback_openssl_error_result( \
91  _ERRORTYPE_, \
92  __FILE__, \
93  _function_name_, \
94  __LINE__, \
95  _tmp_str_, \
96  NULL); \
97  globus_libc_free(_tmp_str_); \
98  }
99 
100 #define GLOBUS_GSI_CALLBACK_ERROR_RESULT(_RESULT_, _ERRORTYPE_, _ERRSTR_) \
101  { \
102  char * _tmp_str_ = \
103  globus_common_create_string _ERRSTR_; \
104  _RESULT_ = globus_i_gsi_callback_error_result(_ERRORTYPE_, \
105  __FILE__, \
106  _function_name_, \
107  __LINE__, \
108  _tmp_str_, \
109  NULL); \
110  globus_libc_free(_tmp_str_); \
111  }
112 
113 #define GLOBUS_GSI_CALLBACK_ERROR_CHAIN_RESULT(_TOP_RESULT_, _ERRORTYPE_) \
114  _TOP_RESULT_ = globus_i_gsi_callback_error_chain_result( \
115  _TOP_RESULT_, \
116  _ERRORTYPE_, \
117  __FILE__, \
118  _function_name_, \
119  __LINE__, \
120  NULL, \
121  NULL)
122 
123 
124 #define GLOBUS_GSI_CALLBACK_OPENSSL_LONG_ERROR_RESULT(_RESULT_, \
125  _ERRORTYPE_, \
126  _ERRSTR_, \
127  _LONG_DESC_) \
128  { \
129  char * _tmp_str_ = \
130  globus_common_create_string _ERRSTR_; \
131  _RESULT_ = globus_i_gsi_callback_openssl_error_result( \
132  _ERRORTYPE_, \
133  __FILE__, \
134  _function_name_, \
135  __LINE__, \
136  _tmp_str_, \
137  _LONG_DESC_); \
138  globus_libc_free(_tmp_str_); \
139  }
140 
141 #define GLOBUS_GSI_CALLBACK_LONG_ERROR_RESULT(_RESULT_, \
142  _ERRORTYPE_, \
143  _ERRSTR_, \
144  _LONG_DESC_) \
145  { \
146  char * _tmp_str_ = \
147  globus_common_create_string _ERRSTR_; \
148  _RESULT_ = globus_i_gsi_callback_error_result(_ERRORTYPE_, \
149  __FILE__, \
150  _function_name_, \
151  __LINE__, \
152  _tmp_str_, \
153  _LONG_DESC_); \
154  globus_libc_free(_tmp_str_); \
155  }
156 
157 #define GLOBUS_GSI_CALLBACK_LONG_ERROR_CHAIN_RESULT(_TOP_RESULT_, \
158  _ERRORTYPE_, \
159  _LONG_DESC_) \
160  _TOP_RESULT_ = globus_i_gsi_callback_error_chain_result( \
161  _TOP_RESULT_, \
162  _ERRORTYPE_, \
163  __FILE__, \
164  _function_name_, \
165  __LINE__, \
166  NULL, \
167  _LONG_DESC_)
168 
169 extern char * globus_l_gsi_callback_error_strings[];
170 
178 typedef struct globus_l_gsi_callback_data_s {
179 
180  int cert_depth;
181  int proxy_depth;
182  int max_proxy_depth;
183  globus_gsi_cert_utils_cert_type_t cert_type;
184  STACK_OF(X509) * cert_chain;
185  char * cert_dir;
186  globus_gsi_extension_callback_t extension_cb;
187  void * extension_oids;
188  globus_bool_t check_self_signed_policy;
189  globus_bool_t allow_missing_signing_policy;
190  globus_result_t error;
191 
192 } globus_i_gsi_callback_data_t;
193 
194 globus_result_t
195 globus_i_gsi_callback_check_path_length(
196  X509_STORE_CTX * x509_context,
197  globus_gsi_callback_data_t callback_data);
198 
199 globus_result_t
200 globus_i_gsi_callback_check_critical_extensions(
201  X509_STORE_CTX * x509_context,
202  globus_gsi_callback_data_t callback_data);
203 
204 globus_result_t
205 globus_i_gsi_callback_check_signing_policy(
206  X509_STORE_CTX * x509_context,
207  globus_gsi_callback_data_t callback_data);
208 
209 globus_result_t
210 globus_i_gsi_callback_check_revoked(
211  X509_STORE_CTX * x509_context,
212  globus_gsi_callback_data_t callback_data);
213 
214 globus_result_t
215 globus_i_gsi_callback_check_proxy(
216  X509_STORE_CTX * x509_context,
217  globus_gsi_callback_data_t callback_data);
218 
219 globus_result_t
220 globus_i_gsi_callback_check_gaa_auth(
221  X509_STORE_CTX * x509_context,
222  globus_gsi_callback_data_t callback_data);
223 
224 globus_result_t
225 globus_i_gsi_callback_cred_verify(
226  int preverify_ok,
227  globus_gsi_callback_data_t callback_data,
228  X509_STORE_CTX * x509_context);
229 
230 globus_result_t
231 globus_i_gsi_callback_openssl_error_result(
232  int error_type,
233  const char * filename,
234  const char * function_name,
235  int line_number,
236  const char * short_desc,
237  const char * long_desc);
238 
239 globus_result_t
240 globus_i_gsi_callback_error_result(
241  int error_type,
242  const char * filename,
243  const char * function_name,
244  int line_number,
245  const char * short_desc,
246  const char * long_desc);
247 
248 globus_result_t
249 globus_i_gsi_callback_error_chain_result(
250  globus_result_t chain_result,
251  int error_type,
252  const char * filename,
253  const char * function_name,
254  int line_number,
255  const char * short_desc,
256  const char * long_desc);
257 
258 #endif /* _GLOBUS_I_GSI_CALLBACK_H_ */
259 
260 #endif /* GLOBUS_DONT_DOCUMENT_INTERNAL */
Globus GSI Callback.
int(* globus_gsi_extension_callback_t)(globus_gsi_callback_data_t callback_data, X509_EXTENSION *extension)
Definition: globus_gsi_callback.h:109
struct globus_l_gsi_callback_data_s * globus_gsi_callback_data_t
Definition: globus_gsi_callback.h:102