12 dorpc(AuthRpc *rpc, char *verb, char *val, int len, AuthGetkey *getkey)
17 if((ret = auth_rpc(rpc, verb, val, len)) != ARneedkey && ret != ARbadkey)
20 return ARgiveup; /* don't know how */
21 if((*getkey)(rpc->arg) < 0)
22 return ARgiveup; /* user punted */
27 auth_respond(void *chal, uint nchal, char *user, uint nuser, void *resp, uint nresp, AuthGetkey *getkey, char *fmt, ...)
34 if((rpc = auth_allocrpc()) == nil)
37 quotefmtinstall(); /* just in case */
39 p = vsmprint(fmt, arg);
43 || dorpc(rpc, "start", p, strlen(p), getkey) != ARok
44 || dorpc(rpc, "write", chal, nchal, getkey) != ARok
45 || dorpc(rpc, "read", nil, 0, getkey) != ARok){
54 memmove(resp, rpc->arg, nresp);
56 if((a = auth_attr(rpc)) != nil
57 && (s = _strfindattr(a, "user")) != nil && strlen(s) < nuser)