xref: /plan9/sys/src/cmd/auth/netkey.c (revision f54edc786b9c49b2c7ab1c0695cdc8c698b11f4d)
1219b2ee8SDavid du Colombier #include <u.h>
2219b2ee8SDavid du Colombier #include <libc.h>
39a747e4fSDavid du Colombier #include <authsrv.h>
45979f962SDavid du Colombier #include <bio.h>
59a747e4fSDavid du Colombier #include "authcmdlib.h"
6219b2ee8SDavid du Colombier 
7219b2ee8SDavid du Colombier 
8219b2ee8SDavid du Colombier void
usage(void)9219b2ee8SDavid du Colombier usage(void)
10219b2ee8SDavid du Colombier {
11219b2ee8SDavid du Colombier 	fprint(2, "usage: netkey\n");
12219b2ee8SDavid du Colombier 	exits("usage");
13219b2ee8SDavid du Colombier }
14219b2ee8SDavid du Colombier 
15219b2ee8SDavid du Colombier void
main(int argc,char * argv[])16219b2ee8SDavid du Colombier main(int argc, char *argv[])
17219b2ee8SDavid du Colombier {
18219b2ee8SDavid du Colombier 	char buf[32], pass[32], key[DESKEYLEN];
19219b2ee8SDavid du Colombier 	char *s;
20219b2ee8SDavid du Colombier 	int n;
21219b2ee8SDavid du Colombier 
22219b2ee8SDavid du Colombier 	ARGBEGIN{
23219b2ee8SDavid du Colombier 	default:
24219b2ee8SDavid du Colombier 		usage();
25219b2ee8SDavid du Colombier 	}ARGEND
26219b2ee8SDavid du Colombier 	if(argc)
27219b2ee8SDavid du Colombier 		usage();
28219b2ee8SDavid du Colombier 
29219b2ee8SDavid du Colombier 	s = getenv("service");
30219b2ee8SDavid du Colombier 	if(s && strcmp(s, "cpu") == 0){
31219b2ee8SDavid du Colombier 		fprint(2, "netkey must not be run on the cpu server\n");
32219b2ee8SDavid du Colombier 		exits("boofhead");
33219b2ee8SDavid du Colombier 	}
34219b2ee8SDavid du Colombier 
359a747e4fSDavid du Colombier 	readln("Password: ", pass, sizeof pass, 1);
36219b2ee8SDavid du Colombier 	passtokey(key, pass);
37219b2ee8SDavid du Colombier 
38219b2ee8SDavid du Colombier 	for(;;){
39219b2ee8SDavid du Colombier 		print("challenge: ");
40219b2ee8SDavid du Colombier 		n = read(0, buf, sizeof buf - 1);
41219b2ee8SDavid du Colombier 		if(n <= 0)
42219b2ee8SDavid du Colombier 			exits(0);
43219b2ee8SDavid du Colombier 		buf[n] = '\0';
44219b2ee8SDavid du Colombier 		n = strtol(buf, 0, 10);
45*f54edc78SDavid du Colombier 		snprint(buf, sizeof buf, "%d", n);
46219b2ee8SDavid du Colombier 		netcrypt(key, buf);
47219b2ee8SDavid du Colombier 		print("response: %s\n", buf);
48219b2ee8SDavid du Colombier 	}
49219b2ee8SDavid du Colombier }
50