2 * This is just a repository for a password.
3 * We don't want to encourage this, there's
9 typedef struct State State;
21 static char *phasenames[Maxphase] =
23 [HavePass] "HavePass",
27 passinit(Proto *p, Fsstate *fss)
33 k = findkey(fss, Kuser, &ask, 0, fss->attr, "%s", p->keyprompt);
37 return failure(fss, nil);
39 setattrs(fss->attr, k->attr);
40 s = emalloc(sizeof(*s));
47 passclose(Fsstate *fss)
58 passread(Fsstate *fss, void *va, uint *n)
68 return phaseerror(fss, "read");
71 user = strfindattr(s->key->attr, "user");
72 pass = strfindattr(s->key->privattr, "!password");
73 if(user==nil || pass==nil)
74 return failure(fss, "passread cannot happen");
75 snprint(buf, sizeof buf, "%q %q", user, pass);
78 return toosmall(fss, m);
86 passwrite(Fsstate *fss, void*, uint)
88 return phaseerror(fss, "write");
99 .keyprompt= "user? !password?",