-#ifdef HAVE_BSD_AUTH_H
-static void
-authuser(char *myname, char *login_style, int persist)
-{
- char *challenge = NULL, *response, rbuf[1024], cbuf[128];
- auth_session_t *as;
- int fd = -1;
-
- if (persist)
- fd = open("/dev/tty", O_RDWR);
- if (fd != -1) {
- if (ioctl(fd, TIOCCHKVERAUTH) == 0)
- goto good;
- }
-
- if (!(as = auth_userchallenge(myname, login_style, "auth-doas",
- &challenge)))
- errx(1, "Authorization failed");
- if (!challenge) {
- char host[HOST_NAME_MAX + 1];
- if (gethostname(host, sizeof(host)))
- snprintf(host, sizeof(host), "?");
- snprintf(cbuf, sizeof(cbuf),
- "\rdoas (%.32s@%.32s) password: ", myname, host);
- challenge = cbuf;
- }
- response = readpassphrase(challenge, rbuf, sizeof(rbuf),
- RPP_REQUIRE_TTY);
- if (response == NULL && errno == ENOTTY) {
- syslog(LOG_AUTHPRIV | LOG_NOTICE,
- "tty required for %s", myname);
- errx(1, "a tty is required");
- }
- if (!auth_userresponse(as, response, 0)) {
- syslog(LOG_AUTHPRIV | LOG_NOTICE,
- "failed auth for %s", myname);
- errc(1, EPERM, NULL);
- }
- explicit_bzero(rbuf, sizeof(rbuf));
-good:
- if (fd != -1) {
- int secs = 5 * 60;
- ioctl(fd, TIOCSETVERAUTH, &secs);
- close(fd);
- }
-}
-#elif HAVE_SHADOW_H
-static void
-authuser(const char *myname, const char *login_style, int persist)