#include #include #include int verbose = 1; static char testmess[] = "__secstore\tPAK\nC=%s\nm=0\n"; void main(int argc, char **argv) { int n, m, fd; uchar buf[500]; if(argc != 2) exits("usage: secacct userid"); n = snprint((char*)buf, sizeof buf, testmess, argv[1]); hnputs(buf, 0x8000+n-2); fd = dial("tcp!ruble.cs.bell-labs.com!5356", 0, 0, 0); if(fd < 0) exits("cannot dial ruble"); if(write(fd, buf, n) != n || readn(fd, buf, 2) != 2) exits("cannot exchange first round"); n = ((buf[0]&0x7f)<<8) + buf[1]; if(n+1 > sizeof buf) exits("implausibly large count"); m = readn(fd, buf, n); close(fd); if(m != n) fprint(2,"short read from secstore\n"); buf[m] = 0; print("%s\n", (char*)buf); exits(0); }