ref: e15212b9f128f5ee22c8d2904095176de2f549b3
parent: f9c08aa600eb165b9c3213f70c6397c85e82ee81
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Mon Jun 1 21:15:43 EDT 2015
authsrv: use plan9 key for http authentication in addition to /sys/lib/httppasswords, allow http authentication to use the plan9 password, which can be changed by the user.
--- a/sys/src/cmd/auth/authsrv.c
+++ b/sys/src/cmd/auth/authsrv.c
@@ -297,32 +297,28 @@
Biobuf *b;
int n;
+ randombytes((uchar*)key, DESKEYLEN);
+
+ /* use plan9 key when there is any */
+ findkey(KEYDB, tr->uid, key);
+
n = strlen(tr->uid);
b = Bopen("/sys/lib/httppasswords", OREAD);- if(b == nil){- replyerror("no password file", raddr);- return;
- }
-
- /* find key */
- for(;;){- p = Brdline(b, '\n');
- if(p == nil)
- break;
- p[Blinelen(b)-1] = 0;
- if(strncmp(p, tr->uid, n) == 0)
- if(p[n] == ' ' || p[n] == '\t'){- p += n;
- break;
+ if(b != nil){+ for(;;){+ p = Brdline(b, '\n');
+ if(p == nil)
+ break;
+ p[Blinelen(b)-1] = 0;
+ if(strncmp(p, tr->uid, n) == 0)
+ if(p[n] == ' ' || p[n] == '\t'){+ p += n;
+ while(*p == ' ' || *p == '\t')
+ p++;
+ passtokey(key, p);
+ }
}
- }
- Bterm(b);
- if(p == nil) {- randombytes((uchar*)key, DESKEYLEN);
- } else {- while(*p == ' ' || *p == '\t')
- p++;
- passtokey(key, p);
+ Bterm(b);
}
/* send back a ticket encrypted with the key */
--
⑨