1 /* ========================================================================
2  * Copyright 1988-2006 University of Washington
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *
11  * ========================================================================
12  */
13 
14 /*
15  * Program:	BSI check password
16  *
17  * Author:	Mark Crispin
18  *		Networks and Distributed Computing
19  *		Computing & Communications
20  *		University of Washington
21  *		Administration Building, AG-44
22  *		Seattle, WA  98195
23  *		Internet: MRC@CAC.Washington.EDU
24  *
25  * Date:	1 August 1988
26  * Last Edited:	30 August 2006
27  */
28 
29 /* Check password
30  * Accepts: login passwd struct
31  *	    password string
32  *	    argument count
33  *	    argument vector
34  * Returns: passwd struct if password validated, NIL otherwise
35  */
36 
37 #include <login_cap.h>
38 
checkpw(struct passwd * pw,char * pass,int argc,char * argv[])39 struct passwd *checkpw (struct passwd *pw,char *pass,int argc,char *argv[])
40 {
41   char *s,tmp[MAILTMPLEN];
42   login_cap_t *lc;
43 				/* make service name */
44   sprintf (tmp,"auth-%s",(char *) mail_parameters (NIL,GET_SERVICENAME,NIL));
45 				/* validate password */
46   return ((lc = login_getclass (pw->pw_class)) &&
47 	  (s = login_getstyle (lc,NIL,tmp)) &&
48 	  (auth_response (pw->pw_name,lc->lc_class,s,"response",NIL,"",pass)
49 	   > 0)) ? pw : NIL;
50 }
51