00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00023 #ifndef GLOBUS_INCLUDE_GLOBUS_GSI_CREDENTIAL_H
00024 #define GLOBUS_INCLUDE_GLOBUS_GSI_CREDENTIAL_H
00025
00026 #include "globus_common.h"
00027 #include "globus_error_openssl.h"
00028 #include "globus_gsi_cred_constants.h"
00029 #include "globus_gsi_callback.h"
00030 #include "globus_gsi_cert_utils.h"
00031 #include "globus_gsi_cred_constants.h"
00032
00033 #include "openssl/x509.h"
00034 #include "openssl/bio.h"
00035 #include "openssl/ssl.h"
00036 #include "globus_error_generic.h"
00037 #include "globus_error_openssl.h"
00038
00039 #ifdef __cplusplus
00040 extern "C" {
00041 #endif
00042
00043 #ifndef GLOBUS_GLOBAL_DOCUMENT_SET
00044
00048 #endif
00049
00097 #define GLOBUS_GSI_CREDENTIAL_MODULE (&globus_i_gsi_credential_module)
00098
00099 extern
00100 globus_module_descriptor_t globus_i_gsi_credential_module;
00101
00102 #define _GCRSL(s) globus_common_i18n_get_string( \
00103 GLOBUS_GSI_CREDENTIAL_MODULE, \
00104 s)
00105
00156 typedef struct globus_l_gsi_cred_handle_s *
00157 globus_gsi_cred_handle_t;
00158
00168 #if OPENSSL_VERSION_NUMBER >= 0x10000000L
00169 #define STACK STACK_OF(OPENSSL_STRING)
00170 #endif
00171
00172 typedef struct globus_l_gsi_cred_handle_attrs_s *
00173 globus_gsi_cred_handle_attrs_t;
00174
00175
00176 globus_result_t globus_gsi_cred_handle_init(
00177 globus_gsi_cred_handle_t * handle,
00178 globus_gsi_cred_handle_attrs_t handle_attrs);
00179
00180 globus_result_t globus_gsi_cred_handle_destroy(
00181 globus_gsi_cred_handle_t handle);
00182
00183 globus_result_t globus_gsi_cred_handle_copy(
00184 globus_gsi_cred_handle_t source,
00185 globus_gsi_cred_handle_t * dest);
00186
00187 globus_result_t globus_gsi_cred_handle_attrs_init(
00188 globus_gsi_cred_handle_attrs_t * handle_attrs);
00189
00190 globus_result_t globus_gsi_cred_handle_attrs_destroy(
00191 globus_gsi_cred_handle_attrs_t handle_attrs);
00192
00193 globus_result_t globus_gsi_cred_handle_attrs_copy(
00194 globus_gsi_cred_handle_attrs_t source,
00195 globus_gsi_cred_handle_attrs_t * dest);
00196
00197 globus_result_t
00198 globus_gsi_cred_handle_init_ssl_context(
00199 globus_gsi_cred_handle_t cred_handle);
00200
00201 globus_result_t globus_gsi_cred_read(
00202 globus_gsi_cred_handle_t handle,
00203 X509_NAME * desired_subject);
00204
00205 globus_result_t globus_gsi_cred_read_proxy(
00206 globus_gsi_cred_handle_t handle,
00207 const char * proxy_filename);
00208
00209 globus_result_t globus_gsi_cred_read_proxy_bio(
00210 globus_gsi_cred_handle_t handle,
00211 BIO * bio);
00212
00213 globus_result_t globus_gsi_cred_read_key(
00214 globus_gsi_cred_handle_t handle,
00215 char * key_filename,
00216 int (*pw_cb)());
00217
00218 globus_result_t globus_gsi_cred_read_cert(
00219 globus_gsi_cred_handle_t handle,
00220 char * cert_filename);
00221
00222 globus_result_t globus_gsi_cred_read_cert_bio(
00223 globus_gsi_cred_handle_t handle,
00224 BIO * bio);
00225
00226 globus_result_t globus_gsi_cred_read_cert_buffer(
00227 char * pem_buf,
00228 globus_gsi_cred_handle_t * out_handle,
00229 X509 ** out_cert,
00230 STACK_OF(X509) ** out_cert_chain,
00231 char ** out_subject);
00232
00233 globus_result_t globus_gsi_cred_read_pkcs12(
00234 globus_gsi_cred_handle_t handle,
00235 char * pkcs12_filename);
00236
00237 globus_result_t globus_gsi_cred_write(
00238 globus_gsi_cred_handle_t handle,
00239 BIO * bio);
00240
00241 globus_result_t globus_gsi_cred_write_proxy(
00242 globus_gsi_cred_handle_t handle,
00243 char * proxy_filename);
00244
00245 globus_result_t
00246 globus_gsi_cred_verify_cert_chain(
00247 globus_gsi_cred_handle_t cred_handle,
00248 globus_gsi_callback_data_t callback_data);
00249
00250 globus_result_t
00251 globus_gsi_cred_verify_cert_chain_when(
00252 globus_gsi_cred_handle_t cred_handle,
00253 globus_gsi_callback_data_t callback_data,
00254 time_t check_time);
00255
00256 globus_result_t globus_gsi_cred_verify(
00257 globus_gsi_cred_handle_t handle);
00258
00259 globus_result_t globus_gsi_cred_get_X509_subject_name(
00260 globus_gsi_cred_handle_t handle,
00261 X509_NAME ** subject_name);
00262
00263 globus_result_t globus_gsi_cred_get_subject_name(
00264 globus_gsi_cred_handle_t handle,
00265 char ** subject_name);
00266
00267 globus_result_t globus_gsi_cred_get_policies(
00268 globus_gsi_cred_handle_t handle,
00269 STACK ** policies);
00270
00271 globus_result_t globus_gsi_cred_get_policy_languages(
00272 globus_gsi_cred_handle_t handle,
00273 STACK_OF(ASN1_OBJECT) ** languages);
00274
00275 globus_result_t globus_gsi_cred_get_path_lengths(
00276 globus_gsi_cred_handle_t handle,
00277 STACK_OF(ASN1_INTEGER) * integer);
00278
00279 globus_result_t globus_gsi_cred_get_X509_issuer_name(
00280 globus_gsi_cred_handle_t handle,
00281 X509_NAME ** issuer_name);
00282
00283 globus_result_t globus_gsi_cred_get_issuer_name(
00284 globus_gsi_cred_handle_t handle,
00285 char ** issuer_name);
00286
00287 globus_result_t globus_gsi_cred_get_X509_identity_name(
00288 globus_gsi_cred_handle_t handle,
00289 X509_NAME ** identity_name);
00290
00291 globus_result_t globus_gsi_cred_get_identity_name(
00292 globus_gsi_cred_handle_t handle,
00293 char ** identity_name);
00294
00295 globus_result_t globus_gsi_cred_set_cert(
00296 globus_gsi_cred_handle_t handle,
00297 X509 * cert);
00298
00299 globus_result_t globus_gsi_cred_set_key(
00300 globus_gsi_cred_handle_t handle,
00301 EVP_PKEY * key);
00302
00303 globus_result_t globus_gsi_cred_set_cert_chain(
00304 globus_gsi_cred_handle_t handle,
00305 STACK_OF(X509) * cert_chain);
00306
00307 globus_result_t globus_gsi_cred_get_cert(
00308 globus_gsi_cred_handle_t handle,
00309 X509 ** cert);
00310
00311 globus_result_t globus_gsi_cred_get_key(
00312 globus_gsi_cred_handle_t handle,
00313 EVP_PKEY ** key);
00314
00315 globus_result_t globus_gsi_cred_get_cert_chain(
00316 globus_gsi_cred_handle_t handle,
00317 STACK_OF(X509) ** cert_chain);
00318
00319 globus_result_t globus_gsi_cred_get_handle_attrs(
00320 globus_gsi_cred_handle_t handle,
00321 globus_gsi_cred_handle_attrs_t * handle_attrs);
00322
00323 globus_result_t globus_gsi_cred_get_lifetime(
00324 globus_gsi_cred_handle_t handle,
00325 time_t * lifetime);
00326
00327 globus_result_t globus_gsi_cred_get_goodtill(
00328 globus_gsi_cred_handle_t handle,
00329 time_t * goodtill);
00330
00331 globus_result_t globus_gsi_cred_get_cert_type(
00332 globus_gsi_cred_handle_t handle,
00333 globus_gsi_cert_utils_cert_type_t * type);
00334
00335 globus_result_t globus_gsi_cred_get_key_bits(
00336 globus_gsi_cred_handle_t handle,
00337 int * key_bits);
00338
00339 globus_result_t globus_gsi_cred_handle_attrs_set_ca_cert_dir(
00340 globus_gsi_cred_handle_attrs_t handle_attrs,
00341 char * ca_cert_dir);
00342
00343 globus_result_t globus_gsi_cred_handle_attrs_get_ca_cert_dir(
00344 globus_gsi_cred_handle_attrs_t handle_attrs,
00345 char ** ca_cert_dir);
00346
00347 globus_result_t globus_gsi_cred_handle_attrs_set_search_order(
00348 globus_gsi_cred_handle_attrs_t handle_attrs,
00349 globus_gsi_cred_type_t search_order[]);
00350
00351
00352 globus_result_t globus_gsi_cred_handle_attrs_get_search_order(
00353 globus_gsi_cred_handle_attrs_t handle_attrs,
00354 globus_gsi_cred_type_t * search_order[]);
00355
00356 #ifdef __cplusplus
00357 }
00358 #endif
00359
00360 #endif