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

http://wald.intevation.org/projects/trustbridge/