include/openssl_x509.h (89 lines of code) (raw):

/* * Copyright 2003-2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include <openssl/rand.h> #include <openssl/evp.h> #include <openssl/pem.h> #include <openssl/bio.h> #include <openssl/rand.h> #include <openssl_constants.h> #include <openssl_pkey.h> #include <axis2_util.h> #include <openssl/pkcs12.h> #include <oxs_error.h> /** * @file openssl_x509.h * @brief Extracts information from a X509 certificate. */ #ifndef OPENSSL_X509_H #define OPENSSL_X509_H #ifdef __cplusplus extern "C" { #endif /** @defgroup openssl_x509 OpenSSL X509 * @ingroup openssl_x509 * @{ */ typedef enum { OPENSSL_X509_FORMAT_PEM = 0, OPENSSL_X509_FORMAT_DER, OPENSSL_X509_FORMAT_PKCS12 } openssl_x509_format_t; typedef enum { OPENSSL_X509_INFO_SUBJECT = 0, OPENSSL_X509_INFO_ISSUER , OPENSSL_X509_INFO_VALID_FROM , OPENSSL_X509_INFO_VALID_TO , OPENSSL_X509_INFO_FINGER , OPENSSL_X509_INFO_SIGNATURE , OPENSSL_X509_INFO_VERSION , OPENSSL_X509_INFO_PUBKEY , OPENSSL_X509_INFO_PUBKEY_ALGO , OPENSSL_X509_INFO_DATA_CERT, OPENSSL_X509_INFO_COMMON_NAME } openssl_x509_info_type_t; AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_x509_load_from_buffer(const axutil_env_t *env, axis2_char_t *b64_encoded_buf, X509 **cert); AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_x509_load_from_pem(const axutil_env_t *env, axis2_char_t *filename, X509 **cert); AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_x509_load_from_pkcs12(const axutil_env_t *env, axis2_char_t *filename, axis2_char_t *password, X509 **cert, EVP_PKEY **pkey, STACK_OF(X509) **ca); AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_x509_load_certificate(const axutil_env_t *env, openssl_x509_format_t format, axis2_char_t *filename, axis2_char_t *password, X509 **cert); /*Caller MUST free */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL openssl_x509_get_cert_data(const axutil_env_t *env, X509 *cert); AXIS2_EXTERN int AXIS2_CALL openssl_x509_get_serial(const axutil_env_t *env, X509 *cert); AXIS2_EXTERN unsigned long AXIS2_CALL openssl_x509_get_subject_name_hash(const axutil_env_t *env, X509 *cert); AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_x509_get_pubkey(const axutil_env_t *env, X509 *cert, EVP_PKEY **pubkey); AXIS2_EXTERN axis2_char_t *AXIS2_CALL openssl_x509_get_subject_key_identifier(const axutil_env_t *env, X509 *cert); AXIS2_EXTERN axis2_char_t *AXIS2_CALL openssl_x509_get_info(const axutil_env_t *env, openssl_x509_info_type_t type, X509 *cert); AXIS2_EXTERN axis2_char_t * AXIS2_CALL openssl_x509_get_common_name( const axutil_env_t *env, X509 *cert); AXIS2_EXTERN axis2_char_t* AXIS2_CALL openssl_x509_get_alias( const axutil_env_t* env, X509* cert); AXIS2_EXTERN void AXIS2_CALL openssl_x509_print(const axutil_env_t *env, X509 *cert); /** @} */ #ifdef __cplusplus } #endif #endif /* OPENSSL_X509_H */