123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- #include <u.h>
- #include <libc.h>
- #include <auth.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, nil);
- free(pem);
- if(binary == nil){
- werrstr("can't parse %s", filename);
- return nil;
- }
- return binary;
- }
- PEMChain *
- readcertchain(char *filename)
- {
- char *chfile;
- PEMChain *chp;
- chfile = readfile(filename);
- if (chfile == nil) {
- werrstr("can't read %s", filename);
- return nil;
- }
- chp = decodepemchain(chfile, "CERTIFICATE");
- return chp;
- }
|