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
00100 #define GLOBUS_GSI_CREDENTIAL_MODULE (&globus_i_gsi_credential_module)
00101
00102 extern
00103 globus_module_descriptor_t globus_i_gsi_credential_module;
00104
00105 #define _GCRSL(s) globus_common_i18n_get_string( \
00106 GLOBUS_GSI_CREDENTIAL_MODULE, \
00107 s)
00108
00162 typedef struct globus_l_gsi_cred_handle_s *
00163 globus_gsi_cred_handle_t;
00164
00175 typedef struct globus_l_gsi_cred_handle_attrs_s *
00176 globus_gsi_cred_handle_attrs_t;
00177
00178
00179 globus_result_t globus_gsi_cred_handle_init(
00180 globus_gsi_cred_handle_t * handle,
00181 globus_gsi_cred_handle_attrs_t handle_attrs);
00182
00183 globus_result_t globus_gsi_cred_handle_destroy(
00184 globus_gsi_cred_handle_t handle);
00185
00186 globus_result_t globus_gsi_cred_handle_copy(
00187 globus_gsi_cred_handle_t source,
00188 globus_gsi_cred_handle_t * dest);
00189
00190 globus_result_t globus_gsi_cred_handle_attrs_init(
00191 globus_gsi_cred_handle_attrs_t * handle_attrs);
00192
00193 globus_result_t globus_gsi_cred_handle_attrs_destroy(
00194 globus_gsi_cred_handle_attrs_t handle_attrs);
00195
00196 globus_result_t globus_gsi_cred_handle_attrs_copy(
00197 globus_gsi_cred_handle_attrs_t source,
00198 globus_gsi_cred_handle_attrs_t * dest);
00199
00200 globus_result_t globus_gsi_cred_read(
00201 globus_gsi_cred_handle_t handle,
00202 X509_NAME * desired_subject);
00203
00204 globus_result_t globus_gsi_cred_read_proxy(
00205 globus_gsi_cred_handle_t handle,
00206 const char * proxy_filename);
00207
00208 globus_result_t globus_gsi_cred_read_proxy_bio(
00209 globus_gsi_cred_handle_t handle,
00210 BIO * bio);
00211
00212 globus_result_t globus_gsi_cred_read_key(
00213 globus_gsi_cred_handle_t handle,
00214 const char * key_filename,
00215 int (*pw_cb)());
00216
00217 globus_result_t globus_gsi_cred_read_cert(
00218 globus_gsi_cred_handle_t handle,
00219 const char * cert_filename);
00220
00221 globus_result_t globus_gsi_cred_read_cert_bio(
00222 globus_gsi_cred_handle_t handle,
00223 BIO * bio);
00224
00225 globus_result_t globus_gsi_cred_read_cert_buffer(
00226 const char * pem_buf,
00227 globus_gsi_cred_handle_t * out_handle,
00228 X509 ** out_cert,
00229 STACK_OF(X509) ** out_cert_chain,
00230 char ** out_subject);
00231
00232 globus_result_t globus_gsi_cred_read_pkcs12(
00233 globus_gsi_cred_handle_t handle,
00234 const char * pkcs12_filename);
00235
00236 globus_result_t globus_gsi_cred_write(
00237 globus_gsi_cred_handle_t handle,
00238 BIO * bio);
00239
00240 globus_result_t globus_gsi_cred_write_proxy(
00241 globus_gsi_cred_handle_t handle,
00242 const char * proxy_filename);
00243
00244 globus_result_t
00245 globus_gsi_cred_verify_cert_chain(
00246 globus_gsi_cred_handle_t cred_handle,
00247 globus_gsi_callback_data_t callback_data);
00248
00249 globus_result_t
00250 globus_gsi_cred_verify_cert_chain_when(
00251 globus_gsi_cred_handle_t cred_handle,
00252 globus_gsi_callback_data_t callback_data,
00253 time_t check_time);
00254
00255 globus_result_t globus_gsi_cred_verify(
00256 globus_gsi_cred_handle_t handle);
00257
00258 globus_result_t globus_gsi_cred_get_X509_subject_name(
00259 globus_gsi_cred_handle_t handle,
00260 X509_NAME ** subject_name);
00261
00262 globus_result_t globus_gsi_cred_get_subject_name(
00263 globus_gsi_cred_handle_t handle,
00264 char ** subject_name);
00265
00266 globus_result_t globus_gsi_cred_get_policies(
00267 globus_gsi_cred_handle_t handle,
00268 STACK_OF(OPENSSL_STRING) ** policies);
00269
00270 globus_result_t globus_gsi_cred_get_policy_languages(
00271 globus_gsi_cred_handle_t handle,
00272 STACK_OF(ASN1_OBJECT) ** languages);
00273
00274 globus_result_t globus_gsi_cred_get_path_lengths(
00275 globus_gsi_cred_handle_t handle,
00276 STACK_OF(ASN1_INTEGER) * integer);
00277
00278 globus_result_t globus_gsi_cred_get_X509_issuer_name(
00279 globus_gsi_cred_handle_t handle,
00280 X509_NAME ** issuer_name);
00281
00282 globus_result_t globus_gsi_cred_get_issuer_name(
00283 globus_gsi_cred_handle_t handle,
00284 char ** issuer_name);
00285
00286 globus_result_t globus_gsi_cred_get_X509_identity_name(
00287 globus_gsi_cred_handle_t handle,
00288 X509_NAME ** identity_name);
00289
00290 globus_result_t globus_gsi_cred_get_identity_name(
00291 globus_gsi_cred_handle_t handle,
00292 char ** identity_name);
00293
00294 globus_result_t globus_gsi_cred_set_cert(
00295 globus_gsi_cred_handle_t handle,
00296 X509 * cert);
00297
00298 globus_result_t globus_gsi_cred_set_key(
00299 globus_gsi_cred_handle_t handle,
00300 EVP_PKEY * key);
00301
00302 globus_result_t globus_gsi_cred_set_cert_chain(
00303 globus_gsi_cred_handle_t handle,
00304 STACK_OF(X509) * cert_chain);
00305
00306 globus_result_t globus_gsi_cred_get_cert(
00307 globus_gsi_cred_handle_t handle,
00308 X509 ** cert);
00309
00310 globus_result_t globus_gsi_cred_get_key(
00311 globus_gsi_cred_handle_t handle,
00312 EVP_PKEY ** key);
00313
00314 globus_result_t globus_gsi_cred_get_cert_chain(
00315 globus_gsi_cred_handle_t handle,
00316 STACK_OF(X509) ** cert_chain);
00317
00318 globus_result_t globus_gsi_cred_get_handle_attrs(
00319 globus_gsi_cred_handle_t handle,
00320 globus_gsi_cred_handle_attrs_t * handle_attrs);
00321
00322 globus_result_t globus_gsi_cred_get_lifetime(
00323 globus_gsi_cred_handle_t handle,
00324 time_t * lifetime);
00325
00326 globus_result_t globus_gsi_cred_get_goodtill(
00327 globus_gsi_cred_handle_t handle,
00328 time_t * goodtill);
00329
00330 globus_result_t globus_gsi_cred_get_cert_type(
00331 globus_gsi_cred_handle_t handle,
00332 globus_gsi_cert_utils_cert_type_t * type);
00333
00334 globus_result_t globus_gsi_cred_get_key_bits(
00335 globus_gsi_cred_handle_t handle,
00336 int * key_bits);
00337
00338 GLOBUS_DEPRECATED(
00339 globus_result_t globus_gsi_cred_handle_attrs_set_ca_cert_dir(
00340 globus_gsi_cred_handle_attrs_t handle_attrs,
00341 const char * ca_cert_dir));
00342
00343 GLOBUS_DEPRECATED(
00344 globus_result_t globus_gsi_cred_handle_attrs_get_ca_cert_dir(
00345 globus_gsi_cred_handle_attrs_t handle_attrs,
00346 char ** ca_cert_dir));
00347
00348 globus_result_t globus_gsi_cred_handle_attrs_set_search_order(
00349 globus_gsi_cred_handle_attrs_t handle_attrs,
00350 globus_gsi_cred_type_t search_order[]);
00351
00352
00353 globus_result_t globus_gsi_cred_handle_attrs_get_search_order(
00354 globus_gsi_cred_handle_attrs_t handle_attrs,
00355 globus_gsi_cred_type_t * search_order[]);
00356
00357 #ifdef __cplusplus
00358 }
00359 #endif
00360
00361 #endif