Loading...
Searching...
No Matches
globus_i_gsi_proxy.h
/*
* Copyright 1999-2006 University of Chicago
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef GLOBUS_DONT_DOCUMENT_INTERNAL
#include "globus_gsi_proxy.h"
#include "proxycertinfo.h"
#include "globus_common.h"
#ifndef GLOBUS_I_GSI_PROXY_H
#define GLOBUS_I_GSI_PROXY_H
#ifdef __cplusplus
extern "C" {
#endif
/* DEBUG MACROS */
#ifdef BUILD_DEBUG
extern int globus_i_gsi_proxy_debug_level;
extern FILE * globus_i_gsi_proxy_debug_fstream;
#define GLOBUS_I_GSI_PROXY_DEBUG(_LEVEL_) \
(globus_i_gsi_proxy_debug_level >= (_LEVEL_))
#define GLOBUS_I_GSI_PROXY_DEBUG_FPRINTF(_LEVEL_, _MESSAGE_) \
{ \
if (GLOBUS_I_GSI_PROXY_DEBUG(_LEVEL_)) \
{ \
globus_libc_fprintf _MESSAGE_; \
} \
}
#define GLOBUS_I_GSI_PROXY_DEBUG_FNPRINTF(_LEVEL_, _MESSAGE_) \
{ \
if (GLOBUS_I_GSI_PROXY_DEBUG(_LEVEL_)) \
{ \
char * _tmp_str_ = \
globus_common_create_nstring _MESSAGE_; \
globus_libc_fprintf(globus_i_gsi_proxy_debug_fstream, \
_tmp_str_); \
globus_libc_free(_tmp_str_); \
} \
}
#define GLOBUS_I_GSI_PROXY_DEBUG_PRINT(_LEVEL_, _MESSAGE_) \
{ \
if (GLOBUS_I_GSI_PROXY_DEBUG(_LEVEL_)) \
{ \
globus_libc_fprintf(globus_i_gsi_proxy_debug_fstream, _MESSAGE_); \
} \
}
#define GLOBUS_I_GSI_PROXY_DEBUG_PRINT_OBJECT(_LEVEL_, _OBJ_NAME_, _OBJ_) \
{ \
if (GLOBUS_I_GSI_PROXY_DEBUG(_LEVEL_)) \
{ \
_OBJ_NAME_##_print_fp(globus_i_gsi_proxy_debug_fstream, _OBJ_); \
} \
}
#define GLOBUS_I_GSI_PROXY_DEBUG_PRINT_PCI(_LEVEL_, _OBJ_) \
{ \
if (GLOBUS_I_GSI_PROXY_DEBUG(_LEVEL_)) \
{ \
BIO *b = BIO_new_fp(globus_i_gsi_proxy_debug_fstream, BIO_NOCLOSE); \
const X509V3_EXT_METHOD *meth = X509V3_EXT_get_nid(NID_proxyCertInfo); \
meth->i2r(meth, (_OBJ_), b, 4); \
BIO_flush(b); \
BIO_free(b); \
} \
}
#else
#define GLOBUS_I_GSI_PROXY_DEBUG_FPRINTF(_LEVEL_, _MESSAGE_) {}
#define GLOBUS_I_GSI_PROXY_DEBUG_FNPRINTF(_LEVEL_, _MESSAGE_) {}
#define GLOBUS_I_GSI_PROXY_DEBUG_PRINT(_LEVEL_, _MESSAGE_) {}
#define GLOBUS_I_GSI_PROXY_DEBUG_PRINT_OBJECT(_LEVEL_, _OBJ_NAME_, _OBJ_) {}
#define GLOBUS_I_GSI_PROXY_DEBUG_PRINT_PCI(_LEVEL_, _OBJ_) {}
#endif
#define GLOBUS_I_GSI_PROXY_DEBUG_ENTER \
GLOBUS_I_GSI_PROXY_DEBUG_FPRINTF( \
1, (globus_i_gsi_proxy_debug_fstream, \
"%s entering\n", __func__))
#define GLOBUS_I_GSI_PROXY_DEBUG_EXIT \
GLOBUS_I_GSI_PROXY_DEBUG_FPRINTF( \
1, (globus_i_gsi_proxy_debug_fstream, \
"%s exiting\n", __func__))
/* ERROR MACROS */
#define GLOBUS_GSI_PROXY_OPENSSL_ERROR_RESULT(_RESULT_, \
_ERRORTYPE_, _ERRORSTR_) \
char * _tmp_string_ = \
globus_common_create_string _ERRORSTR_; \
_RESULT_ = globus_i_gsi_proxy_openssl_error_result( \
_ERRORTYPE_, \
__FILE__, \
__func__, \
__LINE__, \
_tmp_string_, \
NULL); \
globus_libc_free(_tmp_string_)
#define GLOBUS_GSI_PROXY_ERROR_RESULT(_RESULT_, \
_ERRORTYPE_, _ERRORSTR_) \
char * _tmp_string_ = \
globus_common_create_string _ERRORSTR_; \
_RESULT_ = globus_i_gsi_proxy_error_result( \
_ERRORTYPE_, \
__FILE__, \
__func__, \
__LINE__, \
_tmp_string_, \
NULL); \
globus_libc_free(_tmp_string_)
#define GLOBUS_GSI_PROXY_ERROR_CHAIN_RESULT(_RESULT_, \
_ERRORTYPE_) \
_RESULT_ = globus_i_gsi_proxy_error_chain_result( \
(_RESULT_), \
(_ERRORTYPE_), \
__FILE__, \
__func__, \
__LINE__, \
NULL, \
NULL)
#define GLOBUS_GSI_PROXY_OPENSSL_LONG_ERROR_RESULT(_RESULT_, \
_ERRORTYPE_, \
_ERRORSTR_, \
_LONG_DESC_) \
char * _tmp_string_ = \
globus_common_create_string _ERRORSTR_; \
_RESULT_ = globus_i_gsi_proxy_openssl_error_result( \
_ERRORTYPE_, \
__FILE__, \
__func__, \
__LINE__, \
_tmp_string_, \
_LONG_DESC_); \
globus_libc_free(_tmp_string_)
#define GLOBUS_GSI_PROXY_LONG_ERROR_RESULT(_RESULT_, \
_ERRORTYPE_, \
_ERRORSTR_, \
_LONG_DESC_) \
char * _tmp_string_ = \
globus_common_create_string _ERRORSTR_; \
_RESULT_ = globus_i_gsi_proxy_error_result( \
_ERRORTYPE_, \
__FILE__, \
__func__, \
__LINE__, \
_tmp_string_, \
NULL, \
_LONG_DESC_); \
globus_libc_free(_tmp_string_)
#define GLOBUS_GSI_PROXY_LONG_ERROR_CHAIN_RESULT(_RESULT_, \
_ERRORTYPE_, \
_LONG_DESC_) \
_RESULT_ = globus_i_gsi_proxy_error_chain_result( \
_RESULT_, \
_ERRORTYPE_, \
__FILE__, \
__func__, \
__LINE__, \
NULL, \
_LONG_DESC_)
#include "globus_gsi_proxy_constants.h"
typedef struct globus_l_gsi_proxy_handle_attrs_s
{
int key_bits;
int init_prime;
const EVP_MD * signing_algorithm;
int clock_skew;
void (*key_gen_callback)(int, int, void *);
} globus_i_gsi_proxy_handle_attrs_t;
typedef struct globus_l_gsi_proxy_handle_s
{
X509_REQ * req;
EVP_PKEY * proxy_key;
globus_gsi_proxy_handle_attrs_t attrs;
PROXY_CERT_INFO_EXTENSION * proxy_cert_info;
int time_valid;
globus_gsi_cert_utils_cert_type_t type;
char * common_name;
STACK_OF(X509_EXTENSION)* extensions;
} globus_i_gsi_proxy_handle_t;
/* used for printing the status of a private key generating algorithm */
void
globus_i_gsi_proxy_create_private_key_cb(
int num1,
int num2,
BIO * output);
globus_result_t
globus_i_gsi_proxy_set_pc_times(
X509 * new_pc,
X509 * issuer_cert,
int clock_skew,
int time_valid);
globus_result_t
globus_i_gsi_proxy_set_subject(
X509 * new_pc,
X509 * issuer_cert,
char * common_name);
globus_result_t
globus_i_gsi_proxy_openssl_error_result(
int error_type,
const char * filename,
const char * function_name,
int line_number,
const char * short_desc,
const char * long_desc);
globus_result_t
globus_i_gsi_proxy_error_result(
int error_type,
const char * filename,
const char * function_name,
int line_number,
const char * short_desc,
const char * long_desc);
globus_result_t
globus_i_gsi_proxy_error_chain_result(
globus_result_t chain_result,
int error_type,
const char * filename,
const char * function_name,
int line_number,
const char * short_desc,
const char * long_desc);
#ifdef __cplusplus
}
#endif
#endif /* GLOBUS_I_GSI_PROXY_H */
#endif /* GLOBUS_DONT_DOCUMENT_INTERNAL */
globus_gsi_proxy.h
Globus GSI Proxy API.
globus_gsi_proxy_constants.h
GSI Proxy Constants.
globus_gsi_proxy_handle_attrs_t
struct globus_l_gsi_proxy_handle_attrs_s * globus_gsi_proxy_handle_attrs_t
Handle Attributes.
Definition globus_gsi_proxy.h:153