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