aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/netkey.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/netkey.c')
-rw-r--r--src/cmd/netkey.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/cmd/netkey.c b/src/cmd/netkey.c
new file mode 100644
index 00000000..7e988023
--- /dev/null
+++ b/src/cmd/netkey.c
@@ -0,0 +1,47 @@
+#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);
+ }
+}