a
This commit is contained in:
50
libsec/readcert.c
Normal file
50
libsec/readcert.c
Normal file
@ -0,0 +1,50 @@
|
||||
#include <u.h>
|
||||
#include <libc.h>
|
||||
#include <mp.h>
|
||||
#include <libsec.h>
|
||||
|
||||
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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user