| #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); |
| } |
| } |