| #include <u.h> | 
 | #include <libc.h> | 
 | #include <libsec.h> | 
 | #include <authsrv.h> | 
 |  | 
 | void | 
 | usage(void) | 
 | { | 
 | 	fprint(2, "usage: netkey\n"); | 
 | 	exits("usage"); | 
 | } | 
 |  | 
 | void | 
 | main(int argc, char *argv[]) | 
 | { | 
 | 	char *chal, *pass, buf[32], key[DESKEYLEN]; | 
 | 	char *s; | 
 | 	int n; | 
 |  | 
 | 	ARGBEGIN{ | 
 | 	default: | 
 | 		usage(); | 
 | 	}ARGEND | 
 | 	if(argc) | 
 | 		usage(); | 
 |  | 
 | 	s = getenv("service"); | 
 | 	if(s && strcmp(s, "cpu") == 0){ | 
 | 		fprint(2, "netkey must not be run on the cpu server\n"); | 
 | 		exits("boofhead"); | 
 | 	} | 
 |  | 
 | 	pass = readcons("password", nil, 1); | 
 | 	if(pass == nil) | 
 | 		sysfatal("reading password: %r"); | 
 | 	passtokey(key, pass); | 
 |  | 
 | 	for(;;){ | 
 | 		chal = readcons("challenge", nil, 0); | 
 | 		if(chal == nil || *chal == 0) | 
 | 			exits(nil); | 
 | 		n = strtol(chal, 0, 10); | 
 | 		sprint(buf, "%d", n); | 
 | 		netcrypt(key, buf); | 
 | 		print("response: %s\n", buf); | 
 | 	} | 
 | } |