1 #include <u.h>
2 #include <libc.h>
3 #include <libsec.h>
4 #include <authsrv.h>
5 
6 void
usage(void)7 usage(void)
8 {
9 	fprint(2, "usage: netkey\n");
10 	exits("usage");
11 }
12 
13 void
main(int argc,char * argv[])14 main(int argc, char *argv[])
15 {
16 	char *chal, *pass, buf[32], key[DESKEYLEN];
17 	char *s;
18 	int n;
19 
20 	ARGBEGIN{
21 	default:
22 		usage();
23 	}ARGEND
24 	if(argc)
25 		usage();
26 
27 	s = getenv("service");
28 	if(s && strcmp(s, "cpu") == 0){
29 		fprint(2, "netkey must not be run on the cpu server\n");
30 		exits("boofhead");
31 	}
32 
33 	pass = readcons("password", nil, 1);
34 	if(pass == nil)
35 		sysfatal("reading password: %r");
36 	passtokey(key, pass);
37 
38 	for(;;){
39 		chal = readcons("challenge", nil, 0);
40 		if(chal == nil || *chal == 0)
41 			exits(nil);
42 		n = strtol(chal, 0, 10);
43 		sprint(buf, "%d", n);
44 		netcrypt(key, buf);
45 		print("response: %s\n", buf);
46 	}
47 }
48