globus_gsi_proxy_core  8.11
 All Files Functions Typedefs Enumerations Enumerator Groups Pages
globus_i_gsi_proxy.h
1 
2 #ifndef GLOBUS_DONT_DOCUMENT_INTERNAL
3 
10 #include "globus_gsi_proxy.h"
11 #include "proxycertinfo.h"
12 #include "globus_common.h"
13 
14 #ifndef GLOBUS_I_GSI_PROXY_H
15 #define GLOBUS_I_GSI_PROXY_H
16 
17 #ifdef __cplusplus
18 extern "C" {
19 #endif
20 
21 /* DEBUG MACROS */
22 
23 #ifdef BUILD_DEBUG
24 
25 extern int globus_i_gsi_proxy_debug_level;
26 extern FILE * globus_i_gsi_proxy_debug_fstream;
27 
28 #define GLOBUS_I_GSI_PROXY_DEBUG(_LEVEL_) \
29  (globus_i_gsi_proxy_debug_level >= (_LEVEL_))
30 
31 #define GLOBUS_I_GSI_PROXY_DEBUG_FPRINTF(_LEVEL_, _MESSAGE_) \
32  { \
33  if (GLOBUS_I_GSI_PROXY_DEBUG(_LEVEL_)) \
34  { \
35  globus_libc_fprintf _MESSAGE_; \
36  } \
37  }
38 
39 #define GLOBUS_I_GSI_PROXY_DEBUG_FNPRINTF(_LEVEL_, _MESSAGE_) \
40  { \
41  if (GLOBUS_I_GSI_PROXY_DEBUG(_LEVEL_)) \
42  { \
43  char * _tmp_str_ = \
44  globus_common_create_nstring _MESSAGE_; \
45  globus_libc_fprintf(globus_i_gsi_proxy_debug_fstream, \
46  _tmp_str_); \
47  globus_libc_free(_tmp_str_); \
48  } \
49  }
50 
51 #define GLOBUS_I_GSI_PROXY_DEBUG_PRINT(_LEVEL_, _MESSAGE_) \
52  { \
53  if (GLOBUS_I_GSI_PROXY_DEBUG(_LEVEL_)) \
54  { \
55  globus_libc_fprintf(globus_i_gsi_proxy_debug_fstream, _MESSAGE_); \
56  } \
57  }
58 
59 #define GLOBUS_I_GSI_PROXY_DEBUG_PRINT_OBJECT(_LEVEL_, _OBJ_NAME_, _OBJ_) \
60  { \
61  if (GLOBUS_I_GSI_PROXY_DEBUG(_LEVEL_)) \
62  { \
63  _OBJ_NAME_##_print_fp(globus_i_gsi_proxy_debug_fstream, _OBJ_); \
64  } \
65  }
66 
67 #define GLOBUS_I_GSI_PROXY_DEBUG_PRINT_PCI(_LEVEL_, _OBJ_) \
68  { \
69  if (GLOBUS_I_GSI_PROXY_DEBUG(_LEVEL_)) \
70  { \
71  BIO *b = BIO_new_fp(globus_i_gsi_proxy_debug_fstream, BIO_NOCLOSE); \
72  const X509V3_EXT_METHOD *meth = X509V3_EXT_get_nid(NID_proxyCertInfo); \
73  meth->i2r(meth, (_OBJ_), b, 4); \
74  BIO_flush(b); \
75  BIO_free(b); \
76  } \
77  }
78 #else
79 
80 #define GLOBUS_I_GSI_PROXY_DEBUG_FPRINTF(_LEVEL_, _MESSAGE_) {}
81 #define GLOBUS_I_GSI_PROXY_DEBUG_FNPRINTF(_LEVEL_, _MESSAGE_) {}
82 #define GLOBUS_I_GSI_PROXY_DEBUG_PRINT(_LEVEL_, _MESSAGE_) {}
83 #define GLOBUS_I_GSI_PROXY_DEBUG_PRINT_OBJECT(_LEVEL_, _OBJ_NAME_, _OBJ_) {}
84 #define GLOBUS_I_GSI_PROXY_DEBUG_PRINT_PCI(_LEVEL_, _OBJ_) {}
85 
86 #endif
87 
88 #define GLOBUS_I_GSI_PROXY_DEBUG_ENTER \
89  GLOBUS_I_GSI_PROXY_DEBUG_FPRINTF( \
90  1, (globus_i_gsi_proxy_debug_fstream, \
91  "%s entering\n", __func__))
92 
93 #define GLOBUS_I_GSI_PROXY_DEBUG_EXIT \
94  GLOBUS_I_GSI_PROXY_DEBUG_FPRINTF( \
95  1, (globus_i_gsi_proxy_debug_fstream, \
96  "%s exiting\n", __func__))
97 
98 /* ERROR MACROS */
99 
100 #define GLOBUS_GSI_PROXY_OPENSSL_ERROR_RESULT(_RESULT_, \
101  _ERRORTYPE_, _ERRORSTR_) \
102  char * _tmp_string_ = \
103  globus_common_create_string _ERRORSTR_; \
104  _RESULT_ = globus_i_gsi_proxy_openssl_error_result( \
105  _ERRORTYPE_, \
106  __FILE__, \
107  __func__, \
108  __LINE__, \
109  _tmp_string_, \
110  NULL); \
111  globus_libc_free(_tmp_string_)
112 
113 #define GLOBUS_GSI_PROXY_ERROR_RESULT(_RESULT_, \
114  _ERRORTYPE_, _ERRORSTR_) \
115  char * _tmp_string_ = \
116  globus_common_create_string _ERRORSTR_; \
117  _RESULT_ = globus_i_gsi_proxy_error_result( \
118  _ERRORTYPE_, \
119  __FILE__, \
120  __func__, \
121  __LINE__, \
122  _tmp_string_, \
123  NULL); \
124  globus_libc_free(_tmp_string_)
125 
126 #define GLOBUS_GSI_PROXY_ERROR_CHAIN_RESULT(_RESULT_, \
127  _ERRORTYPE_) \
128  _RESULT_ = globus_i_gsi_proxy_error_chain_result( \
129  (_RESULT_), \
130  (_ERRORTYPE_), \
131  __FILE__, \
132  __func__, \
133  __LINE__, \
134  NULL, \
135  NULL)
136 
137 #define GLOBUS_GSI_PROXY_OPENSSL_LONG_ERROR_RESULT(_RESULT_, \
138  _ERRORTYPE_, \
139  _ERRORSTR_, \
140  _LONG_DESC_) \
141  char * _tmp_string_ = \
142  globus_common_create_string _ERRORSTR_; \
143  _RESULT_ = globus_i_gsi_proxy_openssl_error_result( \
144  _ERRORTYPE_, \
145  __FILE__, \
146  __func__, \
147  __LINE__, \
148  _tmp_string_, \
149  _LONG_DESC_); \
150  globus_libc_free(_tmp_string_)
151 
152 #define GLOBUS_GSI_PROXY_LONG_ERROR_RESULT(_RESULT_, \
153  _ERRORTYPE_, \
154  _ERRORSTR_, \
155  _LONG_DESC_) \
156  char * _tmp_string_ = \
157  globus_common_create_string _ERRORSTR_; \
158  _RESULT_ = globus_i_gsi_proxy_error_result( \
159  _ERRORTYPE_, \
160  __FILE__, \
161  __func__, \
162  __LINE__, \
163  _tmp_string_, \
164  NULL, \
165  _LONG_DESC_); \
166  globus_libc_free(_tmp_string_)
167 
168 #define GLOBUS_GSI_PROXY_LONG_ERROR_CHAIN_RESULT(_RESULT_, \
169  _ERRORTYPE_, \
170  _LONG_DESC_) \
171  _RESULT_ = globus_i_gsi_proxy_error_chain_result( \
172  _RESULT_, \
173  _ERRORTYPE_, \
174  __FILE__, \
175  __func__, \
176  __LINE__, \
177  NULL, \
178  _LONG_DESC_)
179 
181 
195 typedef struct globus_l_gsi_proxy_handle_attrs_s
196 {
201  int key_bits;
206  int init_prime;
211  const EVP_MD * signing_algorithm;
217  int clock_skew;
222  void (*key_gen_callback)(int, int, void *);
223 
224 } globus_i_gsi_proxy_handle_attrs_t;
225 
237 typedef struct globus_l_gsi_proxy_handle_s
238 {
240  X509_REQ * req;
242  EVP_PKEY * proxy_key;
246  PROXY_CERT_INFO_EXTENSION * proxy_cert_info;
248  int time_valid;
250  globus_gsi_cert_utils_cert_type_t type;
252  char * common_name;
254  STACK_OF(X509_EXTENSION)* extensions;
255 } globus_i_gsi_proxy_handle_t;
256 
257 
258 /* used for printing the status of a private key generating algorithm */
259 void
260 globus_i_gsi_proxy_create_private_key_cb(
261  int num1,
262  int num2,
263  BIO * output);
264 
265 globus_result_t
266 globus_i_gsi_proxy_set_pc_times(
267  X509 * new_pc,
268  X509 * issuer_cert,
269  int clock_skew,
270  int time_valid);
271 
272 globus_result_t
273 globus_i_gsi_proxy_set_subject(
274  X509 * new_pc,
275  X509 * issuer_cert,
276  char * common_name);
277 
278 globus_result_t
279 globus_i_gsi_proxy_openssl_error_result(
280  int error_type,
281  const char * filename,
282  const char * function_name,
283  int line_number,
284  const char * short_desc,
285  const char * long_desc);
286 
287 globus_result_t
288 globus_i_gsi_proxy_error_result(
289  int error_type,
290  const char * filename,
291  const char * function_name,
292  int line_number,
293  const char * short_desc,
294  const char * long_desc);
295 
296 globus_result_t
297 globus_i_gsi_proxy_error_chain_result(
298  globus_result_t chain_result,
299  int error_type,
300  const char * filename,
301  const char * function_name,
302  int line_number,
303  const char * short_desc,
304  const char * long_desc);
305 
306 #ifdef __cplusplus
307 }
308 #endif
309 
310 #endif /* GLOBUS_I_GSI_PROXY_H */
311 
312 #endif /* GLOBUS_DONT_DOCUMENT_INTERNAL */
Globus GSI Proxy API.
GSI Proxy Constants.
struct globus_l_gsi_proxy_handle_attrs_s * globus_gsi_proxy_handle_attrs_t
Handle Attributes.
Definition: globus_gsi_proxy.h:136