Mercurial > trustbridge
diff common/certhelp.h @ 259:20d515604daa
Added new module with helper functions to parse certs.
Currently only stuff to get O and CN from Subject DN.
author | Sascha Wilde <wilde@intevation.de> |
---|---|
date | Tue, 01 Apr 2014 15:41:11 +0200 |
parents | |
children | 2207e94a0cc3 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/common/certhelp.h Tue Apr 01 15:41:11 2014 +0200 @@ -0,0 +1,46 @@ +#ifndef CERTHELP_H +#define CERTHELP_H + +/* Polarssl mh.h contains a conversion which gcc warns about */ +#pragma GCC diagnostic ignored "-Wsign-conversion" +#pragma GCC diagnostic ignored "-Wconversion" +#include <polarssl/oid.h> +#include <polarssl/x509_crt.h> +#pragma GCC diagnostic pop +#pragma GCC diagnostic pop + +#define CERT_OID_CN (unsigned char *)OID_AT_CN "\0" +#define CERT_OID_O (unsigned char *)OID_AT_ORGANIZATION "\0" + +/** + * @file + * @brief Helper functinos to handle and parse X.509 certificates. + * + * Simple helper functions based on PolarSSL. + */ + +/** + * @brief Extracts value of an gieb OID from an x509_name object. + * + * The value is copyed to an bull byte terminated c-string. + * The caller should free it after use. + * @param[in] namebuf ponter to the x509_name object. + * @param[in] oid the oid to search for. + * @returns the extracted String, or NULL in failure. + */ +char *get_oid_valstr(x509_name *namebuf, unsigned char *oid); + +/** + * @brief Parse x509 certificate and retrieve specified OID from Subject. + * + * The value is copyed to an bull byte terminated c-string. + * The caller should free it after use. + * @param[in] derdata pointer to certificate in DER format. + * @param[in] derlen length of the DER data. + * @param[in] oid the OID to search for. + * @returns the extracted String, or NULL in failure. + */ +char *x509_parse_subject(unsigned char *derdata, size_t derlen, + unsigned char *oid); + +#endif