1/*****************************************************************
2 *
3 * kcheckpass
4 *
5 * Simple password checker. Just invoke and send it
6 * the password on stdin.
7 *
8 * If the password was accepted, the program exits with 0;
9 * if it was rejected, it exits with 1. Any other exit
10 * code signals an error.
11 *
12 *
13 * This program is free software; you can redistribute it and/or
14 * modify it under the terms of the GNU General Public
15 * License as published by the Free Software Foundation; either
16 * version 2 of the License, or (at your option) any later version.
17 *
18 * This program is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21 * General Public License for more details.
22 *
23 * You should have received a copy of the GNU General Public
24 * License along with this program; if not, write to the Free
25 * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
26 *
27 * Copyright (C) 1998, Caldera, Inc.
28 * Released under the GNU General Public License
29 *
30 * Olaf Kirch <okir@caldera.de> General Framework and PAM support
31 * Christian Esken <esken@kde.org> Shadow and /etc/passwd support
32 * Oswald Buddenhagen <ossi@kde.org> Binary server mode
33 *
34 * Other parts were taken from kscreensaver's passwd.cpp
35 *****************************************************************/
36
37#ifndef KCHECKPASS_H_
38#define KCHECKPASS_H_
39
40#include <config-workspace.h>
41#include <config-unix.h>
42#include <config-kcheckpass.h>
43
44#ifdef HAVE_CRYPT_H
45#include <crypt.h>
46#endif
47
48#ifdef HAVE_PATHS_H
49#include <paths.h>
50#endif
51
52#include <pwd.h>
53#include <sys/types.h>
54
55#ifndef _PATH_TMP
56#define _PATH_TMP "/tmp/"
57#endif
58
59
60#ifdef ultrix
61#include <auth.h>
62#endif
63
64#include <unistd.h>
65
66#ifdef OSF1_ENH_SEC
67#include <sys/security.h>
68#include <prot.h>
69#endif
70
71/* Make sure there is only one! */
72#if defined(HAVE_PAM)
73# undef HAVE_OSF_C2_PASSWD
74#elif defined(HAVE_OSF_C2_PASSWD)
75#elif defined(_AIX)
76# define HAVE_AIX_AUTH
77#elif defined(HAVE_GETSPNAM)
78# define HAVE_SHADOW
79#else
80# define HAVE_ETCPASSWD
81#endif
82
83#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
84# define ATTR_UNUSED __attribute__((unused))
85# define ATTR_NORETURN __attribute__((noreturn))
86# define ATTR_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
87#else
88# define ATTR_UNUSED
89# define ATTR_NORETURN
90# define ATTR_PRINTFLIKE(fmt,var)
91#endif
92
93#include "kcheckpass-enums.h"
94
95#ifdef __cplusplus
96extern "C" {
97#endif
98
99/*****************************************************************
100 * Authenticates user
101 *****************************************************************/
102AuthReturn Authenticate(
103#ifdef HAVE_PAM
104 const char *caller,
105#endif
106 const char *method,
107 const char *user,
108 char *(*conv) (ConvRequest, const char *));
109
110/*****************************************************************
111 * Output a message to stderr
112 *****************************************************************/
113void message(const char *, ...) ATTR_PRINTFLIKE(1, 2);
114
115/*****************************************************************
116 * Overwrite and free the passed string
117 *****************************************************************/
118void dispose(char *);
119
120#ifdef __cplusplus
121}
122#endif
123#endif
124