Blame


1 6e527fbc 2005-02-13 devnull #include <u.h>
2 6e527fbc 2005-02-13 devnull #include <libc.h>
3 6e527fbc 2005-02-13 devnull #include <ip.h>
4 6e527fbc 2005-02-13 devnull
5 6e527fbc 2005-02-13 devnull int verbose = 1;
6 6e527fbc 2005-02-13 devnull static char testmess[] = "__secstore\tPAK\nC=%s\nm=0\n";
7 6e527fbc 2005-02-13 devnull
8 6e527fbc 2005-02-13 devnull void
9 6e527fbc 2005-02-13 devnull main(int argc, char **argv)
10 6e527fbc 2005-02-13 devnull {
11 6e527fbc 2005-02-13 devnull int n, m, fd;
12 6e527fbc 2005-02-13 devnull uchar buf[500];
13 6e527fbc 2005-02-13 devnull
14 6e527fbc 2005-02-13 devnull if(argc != 2)
15 6e527fbc 2005-02-13 devnull exits("usage: secacct userid");
16 6e527fbc 2005-02-13 devnull
17 6e527fbc 2005-02-13 devnull n = snprint((char*)buf, sizeof buf, testmess, argv[1]);
18 6e527fbc 2005-02-13 devnull hnputs(buf, 0x8000+n-2);
19 6e527fbc 2005-02-13 devnull
20 6e527fbc 2005-02-13 devnull fd = dial("tcp!ruble.cs.bell-labs.com!5356", 0, 0, 0);
21 6e527fbc 2005-02-13 devnull if(fd < 0)
22 6e527fbc 2005-02-13 devnull exits("cannot dial ruble");
23 6e527fbc 2005-02-13 devnull if(write(fd, buf, n) != n || readn(fd, buf, 2) != 2)
24 6e527fbc 2005-02-13 devnull exits("cannot exchange first round");
25 6e527fbc 2005-02-13 devnull n = ((buf[0]&0x7f)<<8) + buf[1];
26 6e527fbc 2005-02-13 devnull if(n+1 > sizeof buf)
27 6e527fbc 2005-02-13 devnull exits("implausibly large count");
28 6e527fbc 2005-02-13 devnull m = readn(fd, buf, n);
29 6e527fbc 2005-02-13 devnull close(fd);
30 6e527fbc 2005-02-13 devnull if(m != n)
31 6e527fbc 2005-02-13 devnull fprint(2,"short read from secstore\n");
32 6e527fbc 2005-02-13 devnull buf[m] = 0;
33 6e527fbc 2005-02-13 devnull print("%s\n", (char*)buf);
34 6e527fbc 2005-02-13 devnull exits(0);
35 6e527fbc 2005-02-13 devnull }