From 0fc65b37a1e7585ca2347bf61dcb8bc3a6b146a4 Mon Sep 17 00:00:00 2001 From: rsc Date: Sun, 21 Mar 2004 14:04:56 +0000 Subject: Add most of libsec. --- src/libsec/port/readcert.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/libsec/port/readcert.c (limited to 'src/libsec/port/readcert.c') diff --git a/src/libsec/port/readcert.c b/src/libsec/port/readcert.c new file mode 100644 index 00000000..9ba801f1 --- /dev/null +++ b/src/libsec/port/readcert.c @@ -0,0 +1,51 @@ +#include +#include +#include +#include +#include + +static char* +readfile(char *name) +{ + int fd; + char *s; + Dir *d; + + fd = open(name, OREAD); + if(fd < 0) + return nil; + if((d = dirfstat(fd)) == nil) + return nil; + s = malloc(d->length + 1); + if(s == nil || readn(fd, s, d->length) != d->length){ + free(s); + free(d); + close(fd); + return nil; + } + close(fd); + s[d->length] = '\0'; + free(d); + return s; +} + +uchar* +readcert(char *filename, int *pcertlen) +{ + char *pem; + uchar *binary; + + pem = readfile(filename); + if(pem == nil){ + werrstr("can't read %s", filename); + return nil; + } + binary = decodepem(pem, "CERTIFICATE", pcertlen); + free(pem); + if(binary == nil){ + werrstr("can't parse %s", filename); + return nil; + } + return binary; +} + -- cgit v1.2.3