]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/auth/challenge.c
show line numbers in dtracy type errors
[plan9front.git] / sys / src / cmd / auth / challenge.c
1 #include <u.h>
2 #include <libc.h>
3 #include <auth.h>
4
5 void
6 usage(void)
7 {
8         fprint(2, "usage: auth/challenge 'params'\n");
9         exits("usage");
10 }
11
12 void
13 main(int argc, char **argv)
14 {
15         char buf[128], bufu[128];
16         int afd, n;
17         AuthInfo *ai;
18         AuthRpc *rpc;
19         Chalstate *c;
20
21         ARGBEGIN{
22         default:
23                 usage();
24         }ARGEND
25
26         if(argc != 1)
27                 usage();
28
29         if((afd = open("/mnt/factotum/rpc", ORDWR)) < 0)
30                 sysfatal("open /mnt/factotum/rpc: %r");
31
32         rpc = auth_allocrpc(afd);
33         if(rpc == nil)
34                 sysfatal("auth_allocrpc: %r");
35
36         if((c = auth_challenge("%s", argv[0])) == nil)
37                 sysfatal("auth_challenge: %r");
38
39         print("challenge: %s\n", c->chal);
40         print("user:");
41         n = read(0, bufu, sizeof bufu);
42         if(n > 0){
43                 bufu[n-1] = '\0';
44                 c->user = bufu;
45         }
46
47         print("response: ");
48         n = read(0, buf, sizeof buf);
49         if(n < 0)
50                 sysfatal("read: %r");
51         if(n == 0)
52                 exits(nil);
53         c->nresp = n-1;
54         c->resp = buf;
55         if((ai = auth_response(c)) == nil)
56                 sysfatal("auth_response: %r");
57
58         print("%s %s\n", ai->cuid, ai->suid);
59 }