wilde@259: #ifndef CERTHELP_H
wilde@259: #define CERTHELP_H
wilde@259: 
wilde@259: /* Polarssl mh.h contains a conversion which gcc warns about */
wilde@259: #pragma GCC diagnostic ignored "-Wsign-conversion"
wilde@259: #pragma GCC diagnostic ignored "-Wconversion"
wilde@259: #include <polarssl/oid.h>
wilde@259: #include <polarssl/x509_crt.h>
wilde@259: #pragma GCC diagnostic pop
wilde@259: #pragma GCC diagnostic pop
wilde@259: 
wilde@259: #define CERT_OID_CN     (unsigned char *)OID_AT_CN "\0"
wilde@259: #define CERT_OID_O      (unsigned char *)OID_AT_ORGANIZATION "\0"
aheinecke@337: #define CERT_OID_OU     (unsigned char *)OID_AT_ORG_UNIT "\0"
aheinecke@337: #define CERT_OID_SN     (unsigned char *)OID_AT_SERIAL_NUMBER "\0"
aheinecke@337: #ifdef __cplusplus
aheinecke@337: extern "C" {
aheinecke@337: #endif
wilde@259: 
wilde@259: /**
wilde@259:  * @file
wilde@259:  * @brief Helper functinos to handle and parse X.509 certificates.
wilde@259:  *
wilde@259:  * Simple helper functions based on PolarSSL.
wilde@259:  */
wilde@259: 
wilde@259: /**
wilde@259:  * @brief Extracts value of an gieb OID from an x509_name object.
wilde@259:  *
wilde@259:  * The value is copyed to an bull byte terminated c-string.
wilde@259:  * The caller should free it after use.
wilde@259:  * @param[in] namebuf ponter to the x509_name object.
wilde@259:  * @param[in] oid the oid to search for.
wilde@259:  * @returns the extracted String, or NULL in failure.
wilde@259:  */
wilde@259: char *get_oid_valstr(x509_name *namebuf, unsigned char *oid);
wilde@259: 
wilde@259: /**
wilde@259:  * @brief Parse x509 certificate and retrieve specified OID from Subject.
wilde@259:  *
wilde@259:  * The value is copyed to an bull byte terminated c-string.
wilde@259:  * The caller should free it after use.
wilde@259:  * @param[in] derdata pointer to certificate in DER format.
wilde@259:  * @param[in] derlen length of the DER data.
wilde@259:  * @param[in] oid the OID to search for.
wilde@259:  * @returns the extracted String, or NULL in failure.
wilde@259:  */
wilde@259: char *x509_parse_subject(unsigned char *derdata, size_t derlen,
wilde@259:                          unsigned char *oid);
aheinecke@337: #ifdef __cplusplus
aheinecke@337: }
aheinecke@337: #endif
wilde@259: 
wilde@259: #endif