17#ifndef _GLOBUS_I_GSI_CALLBACK_H_
18#define _GLOBUS_I_GSI_CALLBACK_H_
20#ifndef GLOBUS_DONT_DOCUMENT_INTERNAL
28#include "globus_gsi_cert_utils.h"
34extern int globus_i_gsi_callback_debug_level;
35extern FILE * globus_i_gsi_callback_debug_fstream;
37#define GLOBUS_I_GSI_CALLBACK_DEBUG(_LEVEL_) \
38 (globus_i_gsi_callback_debug_level >= (_LEVEL_))
40#define GLOBUS_I_GSI_CALLBACK_DEBUG_FPRINTF(_LEVEL_, _MESSAGE_) \
42 if (GLOBUS_I_GSI_CALLBACK_DEBUG(_LEVEL_)) \
44 globus_libc_fprintf _MESSAGE_; \
48#define GLOBUS_I_GSI_CALLBACK_DEBUG_FNPRINTF(_LEVEL_, _MESSAGE_) \
50 if (GLOBUS_I_GSI_CALLBACK_DEBUG(_LEVEL_)) \
53 globus_common_create_nstring _MESSAGE_; \
54 globus_libc_fprintf(globus_i_gsi_callback_debug_fstream, \
56 globus_libc_free(_tmp_str_); \
60#define GLOBUS_I_GSI_CALLBACK_DEBUG_PRINT(_LEVEL_, _MESSAGE_) \
62 if (GLOBUS_I_GSI_CALLBACK_DEBUG(_LEVEL_)) \
64 globus_libc_fprintf(globus_i_gsi_callback_debug_fstream, \
69#define GLOBUS_I_GSI_CALLBACK_DEBUG_PRINT_OBJECT(_LEVEL_, _OBJ_NAME_, _OBJ_) \
71 if (GLOBUS_I_GSI_CALLBACK_DEBUG(_LEVEL_)) \
73 _OBJ_NAME_##_print_fp(globus_i_gsi_callback_debug_fstream, _OBJ_); \
79#define GLOBUS_I_GSI_CALLBACK_DEBUG(_LEVEL_) 0
80#define GLOBUS_I_GSI_CALLBACK_DEBUG_FPRINTF(_LEVEL_, _MESSAGE_) {}
81#define GLOBUS_I_GSI_CALLBACK_DEBUG_FNPRINTF(_LEVEL_, _MESSAGE_) {}
82#define GLOBUS_I_GSI_CALLBACK_DEBUG_PRINT(_LEVEL_, _MESSAGE_) {}
83#define GLOBUS_I_GSI_CALLBACK_DEBUG_PRINT_OBJECT(_LEVEL_, _OBJ_NAME_, _OBJ_) {}
87#define GLOBUS_I_GSI_CALLBACK_DEBUG_ENTER \
88 GLOBUS_I_GSI_CALLBACK_DEBUG_FPRINTF( \
89 1, (globus_i_gsi_callback_debug_fstream, \
90 "%s entering\n", _function_name_))
92#define GLOBUS_I_GSI_CALLBACK_DEBUG_EXIT \
93 GLOBUS_I_GSI_CALLBACK_DEBUG_FPRINTF( \
94 2, (globus_i_gsi_callback_debug_fstream, \
95 "%s exiting\n", _function_name_))
99#define GLOBUS_GSI_CALLBACK_OPENSSL_ERROR_RESULT(_RESULT_, \
104 globus_common_create_string _ERRSTR_; \
105 _RESULT_ = globus_i_gsi_callback_openssl_error_result( \
112 globus_libc_free(_tmp_str_); \
115#define GLOBUS_GSI_CALLBACK_ERROR_RESULT(_RESULT_, _ERRORTYPE_, _ERRSTR_) \
118 globus_common_create_string _ERRSTR_; \
119 _RESULT_ = globus_i_gsi_callback_error_result(_ERRORTYPE_, \
125 globus_libc_free(_tmp_str_); \
128#define GLOBUS_GSI_CALLBACK_ERROR_CHAIN_RESULT(_TOP_RESULT_, _ERRORTYPE_) \
129 _TOP_RESULT_ = globus_i_gsi_callback_error_chain_result( \
139#define GLOBUS_GSI_CALLBACK_OPENSSL_LONG_ERROR_RESULT(_RESULT_, \
145 globus_common_create_string _ERRSTR_; \
146 _RESULT_ = globus_i_gsi_callback_openssl_error_result( \
153 globus_libc_free(_tmp_str_); \
156#define GLOBUS_GSI_CALLBACK_LONG_ERROR_RESULT(_RESULT_, \
162 globus_common_create_string _ERRSTR_; \
163 _RESULT_ = globus_i_gsi_callback_error_result(_ERRORTYPE_, \
169 globus_libc_free(_tmp_str_); \
172#define GLOBUS_GSI_CALLBACK_LONG_ERROR_CHAIN_RESULT(_TOP_RESULT_, \
175 _TOP_RESULT_ = globus_i_gsi_callback_error_chain_result( \
184extern char * globus_l_gsi_callback_error_strings[];
193typedef struct globus_l_gsi_callback_data_s {
198 globus_gsi_cert_utils_cert_type_t cert_type;
199 STACK_OF(X509) * cert_chain;
202 void * extension_oids;
203 globus_bool_t check_self_signed_policy;
204 globus_bool_t allow_missing_signing_policy;
205 globus_result_t error;
207} globus_i_gsi_callback_data_t;
210globus_i_gsi_callback_check_path_length(
211 X509_STORE_CTX * x509_context,
215globus_i_gsi_callback_check_critical_extensions(
216 X509_STORE_CTX * x509_context,
220globus_i_gsi_callback_check_signing_policy(
221 X509_STORE_CTX * x509_context,
225globus_i_gsi_callback_check_revoked(
226 X509_STORE_CTX * x509_context,
230globus_i_gsi_callback_check_proxy(
231 X509_STORE_CTX * x509_context,
235globus_i_gsi_callback_check_gaa_auth(
236 X509_STORE_CTX * x509_context,
240globus_i_gsi_callback_cred_verify(
243 X509_STORE_CTX * x509_context);
246globus_i_gsi_callback_openssl_error_result(
248 const char * filename,
249 const char * function_name,
251 const char * short_desc,
252 const char * long_desc);
255globus_i_gsi_callback_error_result(
257 const char * filename,
258 const char * function_name,
260 const char * short_desc,
261 const char * long_desc);
264globus_i_gsi_callback_error_chain_result(
265 globus_result_t chain_result,
267 const char * filename,
268 const char * function_name,
270 const char * short_desc,
271 const char * long_desc);
struct globus_l_gsi_callback_data_s * globus_gsi_callback_data_t
Definition: globus_gsi_callback.h:121
int(* globus_gsi_extension_callback_t)(globus_gsi_callback_data_t callback_data, X509_EXTENSION *extension)
Definition: globus_gsi_callback.h:128