diff options
author | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
---|---|---|
committer | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
commit | e5888a1ffdae813d7575f5fb02275c6bb07e5199 (patch) | |
tree | d8d51eac403f07814b9e936eed0c9a79195e2450 /sys/src/cmd/auth/challenge.c |
Import sources from 2011-03-30 iso image
Diffstat (limited to 'sys/src/cmd/auth/challenge.c')
-rwxr-xr-x | sys/src/cmd/auth/challenge.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/sys/src/cmd/auth/challenge.c b/sys/src/cmd/auth/challenge.c new file mode 100755 index 000000000..c99027689 --- /dev/null +++ b/sys/src/cmd/auth/challenge.c @@ -0,0 +1,59 @@ +#include <u.h> +#include <libc.h> +#include <auth.h> + +void +usage(void) +{ + fprint(2, "usage: auth/challenge 'params'\n"); + exits("usage"); +} + +void +main(int argc, char **argv) +{ + char buf[128], bufu[128]; + int afd, n; + AuthInfo *ai; + AuthRpc *rpc; + Chalstate *c; + + ARGBEGIN{ + default: + usage(); + }ARGEND + + if(argc != 1) + usage(); + + if((afd = open("/mnt/factotum/rpc", ORDWR)) < 0) + sysfatal("open /mnt/factotum/rpc: %r"); + + rpc = auth_allocrpc(afd); + if(rpc == nil) + sysfatal("auth_allocrpc: %r"); + + if((c = auth_challenge("%s", argv[0])) == nil) + sysfatal("auth_challenge: %r"); + + print("challenge: %s\n", c->chal); + print("user:"); + n = read(0, bufu, sizeof bufu); + if(n > 0){ + bufu[n-1] = '\0'; + c->user = bufu; + } + + print("response: "); + n = read(0, buf, sizeof buf); + if(n < 0) + sysfatal("read: %r"); + if(n == 0) + exits(nil); + c->nresp = n-1; + c->resp = buf; + if((ai = auth_response(c)) == nil) + sysfatal("auth_response: %r"); + + print("%s %s\n", ai->cuid, ai->suid); +} |