00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00022 #ifndef GLOBUS_GLOBUS_GSI_PROXY_H
00023 #define GLOBUS_GLOBUS_GSI_PROXY_H
00024
00025 #ifndef GLOBUS_GLOBAL_DOCUMENT_SET
00026
00030 #endif
00031
00064 #ifndef GLOBUS_DONT_DOCUMENT_INTERNAL
00065 #include "globus_gsi_credential.h"
00066 #include "globus_error_generic.h"
00067 #include "globus_error_openssl.h"
00068 #include "openssl/evp.h"
00069 #include "openssl/x509v3.h"
00070 #include "proxypolicy.h"
00071 #endif
00072
00073 #ifdef __cplusplus
00074 extern "C" {
00075 #endif
00076
00113 #define GLOBUS_GSI_PROXY_MODULE (&globus_i_gsi_proxy_module)
00114
00115 extern
00116 globus_module_descriptor_t globus_i_gsi_proxy_module;
00117
00118 #define _PCSL(s) globus_common_i18n_get_string(\
00119 GLOBUS_GSI_PROXY_MODULE, \
00120 s)
00121
00137 typedef struct globus_l_gsi_proxy_handle_s *
00138 globus_gsi_proxy_handle_t;
00139
00153 typedef struct
00154 globus_l_gsi_proxy_handle_attrs_s * globus_gsi_proxy_handle_attrs_t;
00155
00156
00171 globus_result_t
00172 globus_gsi_proxy_handle_init(
00173 globus_gsi_proxy_handle_t * handle,
00174 globus_gsi_proxy_handle_attrs_t handle_attrs);
00175
00176 globus_result_t
00177 globus_gsi_proxy_handle_destroy(
00178 globus_gsi_proxy_handle_t handle);
00179
00180 globus_result_t
00181 globus_gsi_proxy_handle_get_req(
00182 globus_gsi_proxy_handle_t handle,
00183 X509_REQ ** req);
00184
00185 globus_result_t
00186 globus_gsi_proxy_handle_set_req(
00187 globus_gsi_proxy_handle_t handle,
00188 X509_REQ * req);
00189
00190 globus_result_t
00191 globus_gsi_proxy_handle_get_private_key(
00192 globus_gsi_proxy_handle_t handle,
00193 EVP_PKEY ** proxy_key);
00194
00195 globus_result_t
00196 globus_gsi_proxy_handle_set_private_key(
00197 globus_gsi_proxy_handle_t handle,
00198 const EVP_PKEY * proxy_key);
00199
00200 globus_result_t
00201 globus_gsi_proxy_handle_get_type(
00202 globus_gsi_proxy_handle_t handle,
00203 globus_gsi_cert_utils_cert_type_t * type);
00204
00205 globus_result_t
00206 globus_gsi_proxy_handle_set_type(
00207 globus_gsi_proxy_handle_t handle,
00208 globus_gsi_cert_utils_cert_type_t type);
00209
00210
00211 globus_result_t
00212 globus_gsi_proxy_handle_get_time_valid(
00213 globus_gsi_proxy_handle_t handle,
00214 int * time_valid);
00215
00216 globus_result_t
00217 globus_gsi_proxy_handle_set_time_valid(
00218 globus_gsi_proxy_handle_t handle,
00219 int time_valid);
00220
00221 globus_result_t
00222 globus_gsi_proxy_handle_set_policy(
00223 globus_gsi_proxy_handle_t handle,
00224 const unsigned char * policy_data,
00225 int policy_length,
00226 int policy_NID);
00227
00228 globus_result_t
00229 globus_gsi_proxy_handle_get_policy(
00230 globus_gsi_proxy_handle_t handle,
00231 unsigned char ** policy_data,
00232 int * policy_length,
00233 int * policy_NID);
00234
00235 globus_result_t
00236 globus_gsi_proxy_handle_add_extension(
00237 globus_gsi_proxy_handle_t handle,
00238 X509_EXTENSION * extension);
00239
00240 globus_result_t
00241 globus_gsi_proxy_handle_set_extensions(
00242 globus_gsi_proxy_handle_t handle,
00243 STACK_OF(X509_EXTENSION) * extensions);
00244
00245 globus_result_t
00246 globus_gsi_proxy_handle_get_extensions(
00247 globus_gsi_proxy_handle_t handle,
00248 STACK_OF(X509_EXTENSION) ** extension);
00249
00250 globus_result_t
00251 globus_gsi_proxy_handle_set_pathlen(
00252 globus_gsi_proxy_handle_t handle,
00253 long pathlen);
00254
00255 globus_result_t
00256 globus_gsi_proxy_handle_get_pathlen(
00257 globus_gsi_proxy_handle_t handle,
00258 int * pathlen);
00259
00260 globus_result_t
00261 globus_gsi_proxy_handle_clear_cert_info(
00262 globus_gsi_proxy_handle_t handle);
00263
00264 #ifdef GLOBUS_GSI_PROXY_CORE_COMPAT_0
00265 #include "proxycertinfo.h"
00266
00267 #define globus_gsi_proxy_handle_get_proxy_cert_info(h,p) \
00268 globus_gsi_proxy_handle_get_proxy_cert_info_proxy_ssl(h,p)
00269 #define globus_gsi_proxy_handle_set_proxy_cert_info(h,p) \
00270 globus_gsi_proxy_handle_set_proxy_cert_info_proxy_ssl(h,p)
00271
00272 globus_result_t
00273 globus_gsi_proxy_handle_get_proxy_cert_info_proxy_ssl(
00274 globus_gsi_proxy_handle_t handle,
00275 PROXYCERTINFO ** pci);
00276
00277 globus_result_t
00278 globus_gsi_proxy_handle_set_proxy_cert_info_proxy_ssl(
00279 globus_gsi_proxy_handle_t handle,
00280 PROXYCERTINFO * pci);
00281 #else
00282 globus_result_t
00283 globus_gsi_proxy_handle_get_proxy_cert_info(
00284 globus_gsi_proxy_handle_t handle,
00285 PROXY_CERT_INFO_EXTENSION ** pci);
00286
00287 globus_result_t
00288 globus_gsi_proxy_handle_set_proxy_cert_info(
00289 globus_gsi_proxy_handle_t handle,
00290 PROXY_CERT_INFO_EXTENSION * pci);
00291 #endif
00292
00293 globus_result_t
00294 globus_gsi_proxy_handle_get_common_name(
00295 globus_gsi_proxy_handle_t handle,
00296 char ** common_name);
00297
00298 globus_result_t
00299 globus_gsi_proxy_handle_set_common_name(
00300 globus_gsi_proxy_handle_t handle,
00301 const char * common_name);
00302
00303 globus_result_t
00304 globus_gsi_proxy_is_limited(
00305 globus_gsi_proxy_handle_t handle,
00306 globus_bool_t * is_limited);
00307
00308 globus_result_t
00309 globus_gsi_proxy_handle_set_is_limited(
00310 globus_gsi_proxy_handle_t handle,
00311 globus_bool_t is_limited);
00312
00313 globus_result_t
00314 globus_gsi_proxy_handle_get_signing_algorithm(
00315 globus_gsi_proxy_handle_t handle,
00316 const EVP_MD ** algorithm);
00317
00318 globus_result_t
00319 globus_gsi_proxy_handle_get_keybits(
00320 globus_gsi_proxy_handle_t handle,
00321 int * key_bits);
00322
00323 globus_result_t
00324 globus_gsi_proxy_handle_get_init_prime(
00325 globus_gsi_proxy_handle_t handle,
00326 int * init_prime);
00327
00328 globus_result_t
00329 globus_gsi_proxy_handle_get_clock_skew_allowable(
00330 globus_gsi_proxy_handle_t handle,
00331 int * skew);
00332
00333 globus_result_t
00334 globus_gsi_proxy_handle_get_key_gen_callback(
00335 globus_gsi_proxy_handle_t handle,
00336 void (**callback)(int, int, void *));
00337
00351 globus_result_t
00352 globus_gsi_proxy_handle_attrs_init(
00353 globus_gsi_proxy_handle_attrs_t * handle_attrs);
00354
00355 globus_result_t
00356 globus_gsi_proxy_handle_attrs_destroy(
00357 globus_gsi_proxy_handle_attrs_t handle_attrs);
00358
00359 globus_result_t
00360 globus_gsi_proxy_handle_attrs_copy(
00361 globus_gsi_proxy_handle_attrs_t a,
00362 globus_gsi_proxy_handle_attrs_t * b);
00363
00375 globus_result_t
00376 globus_gsi_proxy_create_req(
00377 globus_gsi_proxy_handle_t handle,
00378 BIO * output_bio);
00379
00380 globus_result_t
00381 globus_gsi_proxy_inquire_req(
00382 globus_gsi_proxy_handle_t handle,
00383 BIO * input_bio);
00384
00385 globus_result_t
00386 globus_gsi_proxy_sign_req(
00387 globus_gsi_proxy_handle_t handle,
00388 globus_gsi_cred_handle_t issuer_credential,
00389 BIO * output_bio);
00390
00391 globus_result_t
00392 globus_gsi_proxy_resign_cert(
00393 globus_gsi_proxy_handle_t handle,
00394 globus_gsi_cred_handle_t issuer_credential,
00395 globus_gsi_cred_handle_t peer_credential,
00396 globus_gsi_cred_handle_t * resigned_credential);
00397
00398 globus_result_t
00399 globus_gsi_proxy_assemble_cred(
00400 globus_gsi_proxy_handle_t handle,
00401 globus_gsi_cred_handle_t * proxy_credential,
00402 BIO * input_bio);
00403
00404 globus_result_t
00405 globus_gsi_proxy_create_signed(
00406 globus_gsi_proxy_handle_t handle,
00407 globus_gsi_cred_handle_t issuer,
00408 globus_gsi_cred_handle_t * proxy_credential);
00409
00410 globus_result_t
00411 globus_gsi_proxy_handle_attrs_set_keybits(
00412 globus_gsi_proxy_handle_attrs_t handle_attrs,
00413 int bits);
00414
00415 globus_result_t
00416 globus_gsi_proxy_handle_attrs_get_keybits(
00417 globus_gsi_proxy_handle_attrs_t handle_attrs,
00418 int * bits);
00419
00420 globus_result_t
00421 globus_gsi_proxy_handle_attrs_set_init_prime(
00422 globus_gsi_proxy_handle_attrs_t handle_attrs,
00423 int prime);
00424
00425 globus_result_t
00426 globus_gsi_proxy_handle_attrs_get_init_prime(
00427 globus_gsi_proxy_handle_attrs_t handle_attrs,
00428 int * prime);
00429
00430 globus_result_t
00431 globus_gsi_proxy_handle_attrs_set_signing_algorithm(
00432 globus_gsi_proxy_handle_attrs_t handle_attrs,
00433 const EVP_MD * algorithm);
00434
00435 globus_result_t
00436 globus_gsi_proxy_handle_attrs_get_signing_algorithm(
00437 globus_gsi_proxy_handle_attrs_t handle_attrs,
00438 const EVP_MD ** algorithm);
00439
00440 globus_result_t
00441 globus_gsi_proxy_handle_attrs_set_clock_skew_allowable(
00442 globus_gsi_proxy_handle_attrs_t handle,
00443 int skew);
00444
00445 globus_result_t
00446 globus_gsi_proxy_handle_attrs_get_clock_skew_allowable(
00447 globus_gsi_proxy_handle_attrs_t handle,
00448 int * skew);
00449
00450 globus_result_t
00451 globus_gsi_proxy_handle_attrs_get_key_gen_callback(
00452 globus_gsi_proxy_handle_attrs_t handle,
00453 void (**callback)(int, int, void *));
00454
00455 globus_result_t
00456 globus_gsi_proxy_handle_attrs_set_key_gen_callback(
00457 globus_gsi_proxy_handle_attrs_t handle,
00458 void (*callback)(int, int, void *));
00459
00460 #ifdef __cplusplus
00461 }
00462 #endif
00463
00464 #endif