xref: /plan9/sys/src/cmd/auth/lib/getauthkey.c (revision 219b2ee8daee37f4aad58d63f21287faa8e4ffdc)
1*219b2ee8SDavid du Colombier #include <u.h>
2*219b2ee8SDavid du Colombier #include <libc.h>
3*219b2ee8SDavid du Colombier #include <auth.h>
4*219b2ee8SDavid du Colombier #include "authsrv.h"
5*219b2ee8SDavid du Colombier 
6*219b2ee8SDavid du Colombier static int
7*219b2ee8SDavid du Colombier getkey(char *authkey)
8*219b2ee8SDavid du Colombier {
9*219b2ee8SDavid du Colombier 	int fd;
10*219b2ee8SDavid du Colombier 	int n;
11*219b2ee8SDavid du Colombier 
12*219b2ee8SDavid du Colombier 	fd = open("/dev/key", OREAD);
13*219b2ee8SDavid du Colombier 	if(fd < 0)
14*219b2ee8SDavid du Colombier 		return -1;
15*219b2ee8SDavid du Colombier 	n = read(fd, authkey, DESKEYLEN);
16*219b2ee8SDavid du Colombier 	close(fd);
17*219b2ee8SDavid du Colombier 	return n != DESKEYLEN ? -1 : 0;
18*219b2ee8SDavid du Colombier }
19*219b2ee8SDavid du Colombier 
20*219b2ee8SDavid du Colombier int
21*219b2ee8SDavid du Colombier getauthkey(char *authkey)
22*219b2ee8SDavid du Colombier {
23*219b2ee8SDavid du Colombier 	if(getkey(authkey) == 0)
24*219b2ee8SDavid du Colombier 		return 1;
25*219b2ee8SDavid du Colombier 	print("can't read /dev/key, please enter machine key\n");
26*219b2ee8SDavid du Colombier 	getpass(authkey, 0);
27*219b2ee8SDavid du Colombier 	return 1;
28*219b2ee8SDavid du Colombier }
29