Mercurial > trustbridge
view common/certhelp.c @ 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 | e7a8b70021b6 |
line wrap: on
line source
#include <stdlib.h> #include "certhelp.h" #include "debug.h" #include "errorcodes.h" #include "strhelp.h" char * get_oid_valstr(x509_name *namebuf, unsigned char *oid) { char *str = NULL; size_t oid_len = strlen((char *)oid); while ( namebuf != NULL ) { if ( (namebuf->oid.len == oid_len) && (memcmp(namebuf->oid.p, oid, oid_len) == 0) ) { str = xstrndup((char *)namebuf->val.p, namebuf->val.len); break; } namebuf = namebuf->next; } return str; } char * x509_parse_subject(unsigned char *derdata, size_t derlen, unsigned char *oid) { x509_crt chain; char *str; x509_crt_init(&chain); if (x509_crt_parse_der(&chain, derdata, derlen) != 0) { DEBUGPRINTF("FATAL: Could not parse certificate!"); exit(ERR_INVALID_CERT); } else { str = get_oid_valstr(&(chain.subject), oid); x509_crt_free(&chain); } return str; }