ref: 8caf4d3bcbabe28d34556ea6b5542b491ea43e27
parent: 0afac04530db7e603b94a16cd4e06fa135faead1
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 */