1 /* Author: Wietse Venema, Eindhoven University of Technology. */
2 /* $DragonFly: src/lib/libskey/skey_crypt.c,v 1.2 2008/09/30 16:57:05 swildner Exp $ */
11 /* skey_crypt - return encrypted UNIX passwd if s/key or regular password ok */
14 skey_crypt(char *pp
, char *salt
, struct passwd
*pwd
, int pwok
)
19 /* Try s/key authentication even when the UNIX password is permitted. */
21 if (pwd
!= 0 && skeyinfo(&skey
, pwd
->pw_name
, (char *) 0) == 0
22 && skeyverify(&skey
, pp
) == 0) {
23 /* s/key authentication succeeded */
24 return (pwd
->pw_passwd
);
27 /* When s/key authentication does not work, always invoke crypt(). */
30 if (pwok
&& pwd
!= 0 && strcmp(p
, pwd
->pw_passwd
) == 0)
31 return (pwd
->pw_passwd
);
33 /* The user does not exist or entered bad input. */