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. */