globus_i_gsi_proxy.h

00001 /*
00002  * Copyright 1999-2006 University of Chicago
00003  * 
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  * 
00008  * http://www.apache.org/licenses/LICENSE-2.0
00009  * 
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016 
00017 #ifndef GLOBUS_DONT_DOCUMENT_INTERNAL
00018 
00025 #include "globus_gsi_proxy.h"
00026 #include "proxycertinfo.h"
00027 #include "globus_common.h"
00028 
00029 #ifndef GLOBUS_I_GSI_PROXY_H
00030 #define GLOBUS_I_GSI_PROXY_H
00031 
00032 #ifdef __cplusplus
00033 extern "C" {
00034 #endif
00035 
00036 /* DEBUG MACROS */
00037 
00038 #ifdef BUILD_DEBUG
00039 
00040 extern int                              globus_i_gsi_proxy_debug_level;
00041 extern FILE *                           globus_i_gsi_proxy_debug_fstream;
00042 
00043 #define GLOBUS_I_GSI_PROXY_DEBUG(_LEVEL_) \
00044     (globus_i_gsi_proxy_debug_level >= (_LEVEL_))
00045 
00046 #define GLOBUS_I_GSI_PROXY_DEBUG_FPRINTF(_LEVEL_, _MESSAGE_) \
00047     { \
00048         if (GLOBUS_I_GSI_PROXY_DEBUG(_LEVEL_)) \
00049         { \
00050            globus_libc_fprintf _MESSAGE_; \
00051         } \
00052     }
00053 
00054 #define GLOBUS_I_GSI_PROXY_DEBUG_FNPRINTF(_LEVEL_, _MESSAGE_) \
00055     { \
00056         if (GLOBUS_I_GSI_PROXY_DEBUG(_LEVEL_)) \
00057         { \
00058            char *                          _tmp_str_ = \
00059                globus_common_create_nstring _MESSAGE_; \
00060            globus_libc_fprintf(globus_i_gsi_proxy_debug_fstream, \
00061                                _tmp_str_); \
00062            globus_libc_free(_tmp_str_); \
00063         } \
00064     }
00065 
00066 #define GLOBUS_I_GSI_PROXY_DEBUG_PRINT(_LEVEL_, _MESSAGE_) \
00067     { \
00068         if (GLOBUS_I_GSI_PROXY_DEBUG(_LEVEL_)) \
00069         { \
00070            globus_libc_fprintf(globus_i_gsi_proxy_debug_fstream, _MESSAGE_); \
00071         } \
00072     }
00073 
00074 #define GLOBUS_I_GSI_PROXY_DEBUG_PRINT_OBJECT(_LEVEL_, _OBJ_NAME_, _OBJ_) \
00075     { \
00076         if (GLOBUS_I_GSI_PROXY_DEBUG(_LEVEL_)) \
00077         { \
00078            _OBJ_NAME_##_print_fp(globus_i_gsi_proxy_debug_fstream, _OBJ_); \
00079         } \
00080     }
00081 
00082 #else
00083 
00084 #define GLOBUS_I_GSI_PROXY_DEBUG_FPRINTF(_LEVEL_, _MESSAGE_) {}
00085 #define GLOBUS_I_GSI_PROXY_DEBUG_FNPRINTF(_LEVEL_, _MESSAGE_) {}
00086 #define GLOBUS_I_GSI_PROXY_DEBUG_PRINT(_LEVEL_, _MESSAGE_) {}
00087 #define GLOBUS_I_GSI_PROXY_DEBUG_PRINT_OBJECT(_LEVEL_, _OBJ_NAME_, _OBJ_) {}
00088 
00089 #endif
00090 
00091 #define GLOBUS_I_GSI_PROXY_DEBUG_ENTER \
00092             GLOBUS_I_GSI_PROXY_DEBUG_FPRINTF( \
00093                 1, (globus_i_gsi_proxy_debug_fstream, \
00094                     "%s entering\n", _function_name_))
00095 
00096 #define GLOBUS_I_GSI_PROXY_DEBUG_EXIT \
00097             GLOBUS_I_GSI_PROXY_DEBUG_FPRINTF( \
00098                 1, (globus_i_gsi_proxy_debug_fstream, \
00099                     "%s exiting\n", _function_name_))
00100 
00101 /* ERROR MACROS */
00102 
00103 #define GLOBUS_GSI_PROXY_OPENSSL_ERROR_RESULT(_RESULT_, \
00104                                               _ERRORTYPE_, _ERRORSTR_) \
00105     char *                              _tmp_string_ = \
00106         globus_common_create_string _ERRORSTR_; \
00107     _RESULT_ = globus_i_gsi_proxy_openssl_error_result( \
00108         _ERRORTYPE_, \
00109         __FILE__, \
00110         _function_name_, \
00111         __LINE__, \
00112         _tmp_string_, \
00113         NULL); \
00114     globus_libc_free(_tmp_string_)
00115 
00116 #define GLOBUS_GSI_PROXY_ERROR_RESULT(_RESULT_, \
00117                                       _ERRORTYPE_, _ERRORSTR_) \
00118     char *                              _tmp_string_ = \
00119         globus_common_create_string _ERRORSTR_; \
00120     _RESULT_ = globus_i_gsi_proxy_error_result( \
00121         _ERRORTYPE_, \
00122         __FILE__, \
00123         _function_name_, \
00124         __LINE__, \
00125         _tmp_string_, \
00126         NULL); \
00127     globus_libc_free(_tmp_string_)
00128 
00129 #define GLOBUS_GSI_PROXY_ERROR_CHAIN_RESULT(_RESULT_, \
00130                                             _ERRORTYPE_) \
00131     _RESULT_ = globus_i_gsi_proxy_error_chain_result( \
00132         (_RESULT_), \
00133         (_ERRORTYPE_), \
00134         __FILE__, \
00135         _function_name_, \
00136         __LINE__, \
00137         NULL, \
00138         NULL)
00139 
00140 #define GLOBUS_GSI_PROXY_OPENSSL_LONG_ERROR_RESULT(_RESULT_, \
00141                                                    _ERRORTYPE_, \
00142                                                    _ERRORSTR_, \
00143                                                    _LONG_DESC_) \
00144     char *                              _tmp_string_ = \
00145         globus_common_create_string _ERRORSTR_; \
00146     _RESULT_ = globus_i_gsi_proxy_openssl_error_result( \
00147         _ERRORTYPE_, \
00148         __FILE__, \
00149         _function_name_, \
00150         __LINE__, \
00151         _tmp_string_, \
00152         _LONG_DESC_); \
00153     globus_libc_free(_tmp_string_)
00154 
00155 #define GLOBUS_GSI_PROXY_LONG_ERROR_RESULT(_RESULT_, \
00156                                            _ERRORTYPE_, \
00157                                            _ERRORSTR_, \
00158                                            _LONG_DESC_) \
00159     char *                              _tmp_string_ = \
00160         globus_common_create_string _ERRORSTR_; \
00161     _RESULT_ = globus_i_gsi_proxy_error_result( \
00162         _ERRORTYPE_, \
00163         __FILE__, \
00164         _function_name_, \
00165         __LINE__, \
00166         _tmp_string_, \
00167         NULL, \
00168         _LONG_DESC_); \
00169     globus_libc_free(_tmp_string_)
00170 
00171 #define GLOBUS_GSI_PROXY_LONG_ERROR_CHAIN_RESULT(_RESULT_, \
00172                                                  _ERRORTYPE_, \
00173                                                  _LONG_DESC_) \
00174     _RESULT_ = globus_i_gsi_proxy_error_chain_result( \
00175         _RESULT_, \
00176         _ERRORTYPE_, \
00177         __FILE__, \
00178         _function_name_, \
00179         __LINE__, \
00180         NULL, \
00181         _LONG_DESC_)
00182 
00183 #include "globus_gsi_proxy_constants.h"
00184 
00198 typedef struct globus_l_gsi_proxy_handle_attrs_s
00199 {
00204     int                                 key_bits;
00209     int                                 init_prime;
00214     EVP_MD *                            signing_algorithm;
00220     int                                 clock_skew;
00225     void (*key_gen_callback)(int, int, void *);
00226 
00227 } globus_i_gsi_proxy_handle_attrs_t;
00228 
00240 typedef struct globus_l_gsi_proxy_handle_s
00241 {
00243     X509_REQ *                          req;
00245     EVP_PKEY *                          proxy_key;
00247     globus_gsi_proxy_handle_attrs_t     attrs;
00249     PROXYCERTINFO *                     proxy_cert_info;    
00251     int                                 time_valid;
00253     globus_gsi_cert_utils_cert_type_t   type;
00255     char *                              common_name;
00257     STACK_OF(X509_EXTENSION)*           extensions;
00258 } globus_i_gsi_proxy_handle_t;
00259 
00260 
00261 /* used for printing the status of a private key generating algorithm */
00262 void 
00263 globus_i_gsi_proxy_create_private_key_cb(
00264     int                                 num1,
00265     int                                 num2,
00266     BIO *                               output);
00267 
00268 globus_result_t
00269 globus_i_gsi_proxy_set_pc_times(
00270     X509 *                              new_pc, 
00271     X509 *                              issuer_cert,
00272     int                                 clock_skew,
00273     int                                 time_valid);
00274 
00275 globus_result_t
00276 globus_i_gsi_proxy_set_subject(
00277     X509 *                              new_pc, 
00278     X509 *                              issuer_cert,
00279     char *                              common_name);
00280 
00281 globus_result_t
00282 globus_i_gsi_proxy_openssl_error_result(
00283     int                                 error_type,
00284     const char *                        filename,
00285     const char *                        function_name,
00286     int                                 line_number,
00287     const char *                        short_desc,
00288     const char *                        long_desc);
00289 
00290 globus_result_t
00291 globus_i_gsi_proxy_error_result(
00292     int                                 error_type,
00293     const char *                        filename,
00294     const char *                        function_name,
00295     int                                 line_number,
00296     const char *                        short_desc,
00297     const char *                        long_desc);
00298 
00299 globus_result_t
00300 globus_i_gsi_proxy_error_chain_result(
00301     globus_result_t                     chain_result,
00302     int                                 error_type,
00303     const char *                        filename,
00304     const char *                        function_name,
00305     int                                 line_number,
00306     const char *                        short_desc,
00307     const char *                        long_desc);
00308 
00309 #ifdef __cplusplus
00310 }
00311 #endif
00312 
00313 #endif /* GLOBUS_I_GSI_PROXY_H */
00314 
00315 #endif /* GLOBUS_DONT_DOCUMENT_INTERNAL */

Generated on 27 Oct 2014 for globus_gsi_proxy_core by  doxygen 1.4.7