Warning: Attempt to read property "date" on null in /usr/local/www/websvn.planix.org/blame.php on line 247

Warning: Attempt to read property "msg" on null in /usr/local/www/websvn.planix.org/blame.php on line 247
WebSVN – planix.SVN – Blame – /os/branches/feature_tlsv12/sys/src/libsec/port/readcert.c – Rev 2

Subversion Repositories planix.SVN

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include <u.h>
2
#include <libc.h>
3
#include <auth.h>
4
#include <mp.h>
5
#include <libsec.h>
6
 
7
static char*
8
readfile(char *name)
9
{
10
	int fd;
11
	char *s;
12
	Dir *d;
13
 
14
	fd = open(name, OREAD);
15
	if(fd < 0)
16
		return nil;
17
	if((d = dirfstat(fd)) == nil) {
18
		close(fd);
19
		return nil;
20
	}
21
	s = malloc(d->length + 1);
22
	if(s == nil || readn(fd, s, d->length) != d->length){
23
		free(s);
24
		free(d);
25
		close(fd);
26
		return nil;
27
	}
28
	close(fd);
29
	s[d->length] = '\0';
30
	free(d);
31
	return s;
32
}
33
 
34
uchar*
35
readcert(char *filename, int *pcertlen)
36
{
37
	char *pem;
38
	uchar *binary;
39
 
40
	pem = readfile(filename);
41
	if(pem == nil){
42
		werrstr("can't read %s: %r", filename);
43
		return nil;
44
	}
45
	binary = decodePEM(pem, "CERTIFICATE", pcertlen, nil);
46
	free(pem);
47
	if(binary == nil){
48
		werrstr("can't parse %s", filename);
49
		return nil;
50
	}
51
	return binary;
52
}
53
 
54
PEMChain *
55
readcertchain(char *filename)
56
{
57
	char *chfile;
58
 
59
	chfile = readfile(filename);
60
	if (chfile == nil) {
61
		werrstr("can't read %s: %r", filename);
62
		return nil;
63
	}
64
	return decodepemchain(chfile, "CERTIFICATE");
65
}
66