aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/auth/factotum/plan9.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/auth/factotum/plan9.c')
-rw-r--r--src/cmd/auth/factotum/plan9.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/cmd/auth/factotum/plan9.c b/src/cmd/auth/factotum/plan9.c
new file mode 100644
index 00000000..0b6bb601
--- /dev/null
+++ b/src/cmd/auth/factotum/plan9.c
@@ -0,0 +1,45 @@
+#include "std.h"
+#include "dat.h"
+#include <bio.h>
+
+int
+memrandom(void *p, int n)
+{
+ uchar *cp;
+
+ for(cp = (uchar*)p; n > 0; n--)
+ *cp++ = fastrand();
+ return 0;
+}
+
+Attr*
+addcap(Attr *a, char *from, Ticket *t)
+{
+ return addattr(a, "cuid=%q suid=%q cap=''", t->cuid, t->suid);
+}
+
+int
+_authdial(char *net, char *authdom)
+{
+ return authdial(net, authdom);
+}
+
+Key*
+plan9authkey(Attr *a)
+{
+ char *dom;
+ Key *k;
+
+ /*
+ * The only important part of a is dom.
+ * We don't care, for example, about user name.
+ */
+ dom = strfindattr(a, "dom");
+ if(dom)
+ k = keylookup("proto=p9sk1 role=server user? dom=%q", dom);
+ else
+ k = keylookup("proto=p9sk1 role=server user? dom?");
+ if(k == nil)
+ werrstr("could not find plan 9 auth key dom %q", dom);
+ return k;
+}