|  | #include <u.h> | 
|  | #include <libc.h> | 
|  | #include <auth.h> | 
|  | #include <authsrv.h> | 
|  |  | 
|  | /* deprecated. | 
|  | This is the mechanism that put entries in /sys/lib/httpd.rewrite | 
|  | and passwords on the authserver in /sys/lib/httppasswords, which | 
|  | was awkward to administer.  Instead, use local .httplogin files, | 
|  | which are implemented in sys/src/cmd/ip/httpd/authorize.c */ | 
|  |  | 
|  | int | 
|  | httpauth(char *name, char *password) | 
|  | { | 
|  | int afd; | 
|  | Ticketreq tr; | 
|  | Ticket	t; | 
|  | char key[DESKEYLEN]; | 
|  | char buf[512]; | 
|  |  | 
|  | afd = authdial(nil, nil); | 
|  | if(afd < 0) | 
|  | return -1; | 
|  |  | 
|  | /* send ticket request to AS */ | 
|  | memset(&tr, 0, sizeof(tr)); | 
|  | strcpy(tr.uid, name); | 
|  | tr.type = AuthHttp; | 
|  | convTR2M(&tr, buf); | 
|  | if(write(afd, buf, TICKREQLEN) != TICKREQLEN){ | 
|  | close(afd); | 
|  | return -1; | 
|  | } | 
|  | if(_asrdresp(afd, buf, TICKETLEN) < 0){ | 
|  | close(afd); | 
|  | return -1; | 
|  | } | 
|  | close(afd); | 
|  |  | 
|  | /* | 
|  | *  use password and try to decrypt the | 
|  | *  ticket.  If it doesn't work we've got a bad password, | 
|  | *  give up. | 
|  | */ | 
|  | passtokey(key, password); | 
|  | convM2T(buf, &t, key); | 
|  | if(t.num != AuthHr || strcmp(t.cuid, tr.uid)) | 
|  | return -1; | 
|  |  | 
|  | return 0; | 
|  | } |