00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 #include <openssl/rand.h>
00018 #include <openssl/evp.h>
00019 #include <openssl/pem.h>
00020 #include <openssl/bio.h>
00021 #include <openssl/rand.h>
00022 #include <openssl_constants.h>
00023 #include <openssl_pkey.h>
00024 #include <axis2_util.h>
00025 #include <openssl/pkcs12.h>
00026 #include <oxs_error.h>
00031 #ifndef OPENSSL_X509_H
00032 #define OPENSSL_X509_H
00033 
00034 #ifdef __cplusplus
00035 extern "C" {
00036 #endif
00037 
00043     typedef enum {
00044         OPENSSL_X509_FORMAT_PEM = 0,
00045         OPENSSL_X509_FORMAT_DER,
00046         OPENSSL_X509_FORMAT_PKCS12
00047     } openssl_x509_format_t;
00048 
00049     typedef enum {
00050         OPENSSL_X509_INFO_SUBJECT = 0,
00051         OPENSSL_X509_INFO_ISSUER ,
00052         OPENSSL_X509_INFO_VALID_FROM ,
00053         OPENSSL_X509_INFO_VALID_TO ,
00054         OPENSSL_X509_INFO_FINGER ,
00055         OPENSSL_X509_INFO_SIGNATURE ,
00056         OPENSSL_X509_INFO_VERSION ,
00057         OPENSSL_X509_INFO_PUBKEY ,
00058         OPENSSL_X509_INFO_PUBKEY_ALGO ,
00059         OPENSSL_X509_INFO_DATA_CERT,
00060                 OPENSSL_X509_INFO_COMMON_NAME
00061     } openssl_x509_info_type_t;
00062 
00063     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00064     openssl_x509_load_from_buffer(const axutil_env_t *env,
00065                                   axis2_char_t *b64_encoded_buf,
00066                                   X509 **cert);
00067 
00068     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00069     openssl_x509_load_from_pem(const axutil_env_t *env,
00070                                axis2_char_t *filename,
00071                                X509 **cert);
00072 
00073     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00074     openssl_x509_load_from_pkcs12(const axutil_env_t *env,
00075                                   axis2_char_t *filename,
00076                                   axis2_char_t *password,
00077                                   X509 **cert,
00078                                   EVP_PKEY **pkey,
00079                                   STACK_OF(X509) **ca);
00080 
00081     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00082     openssl_x509_load_certificate(const axutil_env_t *env,
00083                                   openssl_x509_format_t format,
00084                                   axis2_char_t *filename,
00085                                   axis2_char_t *password,
00086                                   X509 **cert);
00087 
00088     
00089     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00090     openssl_x509_get_cert_data(const axutil_env_t *env,
00091                                X509 *cert);
00092 
00093 
00094     AXIS2_EXTERN int AXIS2_CALL
00095     openssl_x509_get_serial(const axutil_env_t *env,
00096                             X509 *cert);
00097 
00098     AXIS2_EXTERN unsigned long AXIS2_CALL
00099     openssl_x509_get_subject_name_hash(const axutil_env_t *env,
00100                                        X509 *cert);
00101 
00102     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00103     openssl_x509_get_pubkey(const axutil_env_t *env,
00104                             X509 *cert,
00105                             EVP_PKEY **pubkey);
00106 
00107     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00108     openssl_x509_get_subject_key_identifier(const axutil_env_t *env,
00109                                             X509 *cert);
00110 
00111     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00112     openssl_x509_get_info(const axutil_env_t *env,
00113                           openssl_x509_info_type_t type,
00114                           X509 *cert);
00115         
00116         AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00117     openssl_x509_get_common_name(
00118         const axutil_env_t *env,
00119         X509 *cert);
00120 
00121     AXIS2_EXTERN void AXIS2_CALL
00122     openssl_x509_print(const axutil_env_t *env,
00123                        X509 *cert);
00124 
00126 #ifdef __cplusplus
00127 }
00128 #endif
00129 
00130 #endif