xref: /dflybsd-src/contrib/openpam/include/security/pam_appl.h (revision 7031abe4d1ef8c309d4113438494530b74f3f3fe)
1ade90846SJoerg Sonnenberger /*-
2ade90846SJoerg Sonnenberger  * Copyright (c) 2002-2003 Networks Associates Technology, Inc.
3*10b5fe87SSascha Wildner  * Copyright (c) 2004-2017 Dag-Erling Smørgrav
4ade90846SJoerg Sonnenberger  * All rights reserved.
5ade90846SJoerg Sonnenberger  *
6ade90846SJoerg Sonnenberger  * This software was developed for the FreeBSD Project by ThinkSec AS and
7ade90846SJoerg Sonnenberger  * Network Associates Laboratories, the Security Research Division of
8ade90846SJoerg Sonnenberger  * Network Associates, Inc.  under DARPA/SPAWAR contract N66001-01-C-8035
9ade90846SJoerg Sonnenberger  * ("CBOSS"), as part of the DARPA CHATS research program.
10ade90846SJoerg Sonnenberger  *
11ade90846SJoerg Sonnenberger  * Redistribution and use in source and binary forms, with or without
12ade90846SJoerg Sonnenberger  * modification, are permitted provided that the following conditions
13ade90846SJoerg Sonnenberger  * are met:
14ade90846SJoerg Sonnenberger  * 1. Redistributions of source code must retain the above copyright
15ade90846SJoerg Sonnenberger  *    notice, this list of conditions and the following disclaimer.
16ade90846SJoerg Sonnenberger  * 2. Redistributions in binary form must reproduce the above copyright
17ade90846SJoerg Sonnenberger  *    notice, this list of conditions and the following disclaimer in the
18ade90846SJoerg Sonnenberger  *    documentation and/or other materials provided with the distribution.
19ade90846SJoerg Sonnenberger  * 3. The name of the author may not be used to endorse or promote
20ade90846SJoerg Sonnenberger  *    products derived from this software without specific prior written
21ade90846SJoerg Sonnenberger  *    permission.
22ade90846SJoerg Sonnenberger  *
23ade90846SJoerg Sonnenberger  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
24ade90846SJoerg Sonnenberger  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25ade90846SJoerg Sonnenberger  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26ade90846SJoerg Sonnenberger  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
27ade90846SJoerg Sonnenberger  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28ade90846SJoerg Sonnenberger  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29ade90846SJoerg Sonnenberger  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30ade90846SJoerg Sonnenberger  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31ade90846SJoerg Sonnenberger  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32ade90846SJoerg Sonnenberger  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33ade90846SJoerg Sonnenberger  * SUCH DAMAGE.
34ade90846SJoerg Sonnenberger  *
35*10b5fe87SSascha Wildner  * $OpenPAM: pam_appl.h 938 2017-04-30 21:34:42Z des $
36ade90846SJoerg Sonnenberger  */
37ade90846SJoerg Sonnenberger 
38f23594ceSHasso Tepper #ifndef SECURITY_PAM_APPL_H_INCLUDED
39f23594ceSHasso Tepper #define SECURITY_PAM_APPL_H_INCLUDED
40ade90846SJoerg Sonnenberger 
41ade90846SJoerg Sonnenberger #include <security/pam_types.h>
42ade90846SJoerg Sonnenberger #include <security/pam_constants.h>
43f23594ceSHasso Tepper #include <security/openpam_attr.h>
44ade90846SJoerg Sonnenberger 
45ade90846SJoerg Sonnenberger #ifdef __cplusplus
46ade90846SJoerg Sonnenberger extern "C" {
47ade90846SJoerg Sonnenberger #endif
48ade90846SJoerg Sonnenberger 
49ade90846SJoerg Sonnenberger /*
50ade90846SJoerg Sonnenberger  * XSSO 4.2.1, 6
51ade90846SJoerg Sonnenberger  */
52ade90846SJoerg Sonnenberger 
53ade90846SJoerg Sonnenberger int
54ade90846SJoerg Sonnenberger pam_acct_mgmt(pam_handle_t *_pamh,
55f23594ceSHasso Tepper 	int _flags)
56f23594ceSHasso Tepper 	OPENPAM_NONNULL((1));
57ade90846SJoerg Sonnenberger 
58ade90846SJoerg Sonnenberger int
59ade90846SJoerg Sonnenberger pam_authenticate(pam_handle_t *_pamh,
60f23594ceSHasso Tepper 	int _flags)
61f23594ceSHasso Tepper 	OPENPAM_NONNULL((1));
62ade90846SJoerg Sonnenberger 
63ade90846SJoerg Sonnenberger int
64ade90846SJoerg Sonnenberger pam_chauthtok(pam_handle_t *_pamh,
65f23594ceSHasso Tepper 	int _flags)
66f23594ceSHasso Tepper 	OPENPAM_NONNULL((1));
67ade90846SJoerg Sonnenberger 
68ade90846SJoerg Sonnenberger int
69ade90846SJoerg Sonnenberger pam_close_session(pam_handle_t *_pamh,
70f23594ceSHasso Tepper 	int _flags)
71f23594ceSHasso Tepper 	OPENPAM_NONNULL((1));
72ade90846SJoerg Sonnenberger 
73ade90846SJoerg Sonnenberger int
74ade90846SJoerg Sonnenberger pam_end(pam_handle_t *_pamh,
75a474e9feSPeter Avalos 	int _status);
76ade90846SJoerg Sonnenberger 
77ade90846SJoerg Sonnenberger int
78f23594ceSHasso Tepper pam_get_data(const pam_handle_t *_pamh,
79ade90846SJoerg Sonnenberger 	const char *_module_data_name,
80f23594ceSHasso Tepper 	const void **_data)
816329e2f6SSascha Wildner 	OPENPAM_NONNULL((2,3));
82ade90846SJoerg Sonnenberger 
83ade90846SJoerg Sonnenberger int
84f23594ceSHasso Tepper pam_get_item(const pam_handle_t *_pamh,
85ade90846SJoerg Sonnenberger 	int _item_type,
86f23594ceSHasso Tepper 	const void **_item)
876329e2f6SSascha Wildner 	OPENPAM_NONNULL((3));
88ade90846SJoerg Sonnenberger 
89ade90846SJoerg Sonnenberger int
90ade90846SJoerg Sonnenberger pam_get_user(pam_handle_t *_pamh,
91ade90846SJoerg Sonnenberger 	const char **_user,
926329e2f6SSascha Wildner 	const char *_prompt);
93ade90846SJoerg Sonnenberger 
94ade90846SJoerg Sonnenberger const char *
95ade90846SJoerg Sonnenberger pam_getenv(pam_handle_t *_pamh,
966329e2f6SSascha Wildner 	const char *_name);
97ade90846SJoerg Sonnenberger 
98ade90846SJoerg Sonnenberger char **
996329e2f6SSascha Wildner pam_getenvlist(pam_handle_t *_pamh);
100ade90846SJoerg Sonnenberger 
101ade90846SJoerg Sonnenberger int
102ade90846SJoerg Sonnenberger pam_open_session(pam_handle_t *_pamh,
103f23594ceSHasso Tepper 	int _flags)
104f23594ceSHasso Tepper 	OPENPAM_NONNULL((1));
105ade90846SJoerg Sonnenberger 
106ade90846SJoerg Sonnenberger int
107ade90846SJoerg Sonnenberger pam_putenv(pam_handle_t *_pamh,
1086329e2f6SSascha Wildner 	const char *_namevalue);
109ade90846SJoerg Sonnenberger 
110ade90846SJoerg Sonnenberger int
111ade90846SJoerg Sonnenberger pam_set_data(pam_handle_t *_pamh,
112ade90846SJoerg Sonnenberger 	const char *_module_data_name,
113ade90846SJoerg Sonnenberger 	void *_data,
114ade90846SJoerg Sonnenberger 	void (*_cleanup)(pam_handle_t *_pamh,
115ade90846SJoerg Sonnenberger 		void *_data,
116f23594ceSHasso Tepper 		int _pam_end_status))
1176329e2f6SSascha Wildner 	OPENPAM_NONNULL((2));
118ade90846SJoerg Sonnenberger 
119ade90846SJoerg Sonnenberger int
120ade90846SJoerg Sonnenberger pam_set_item(pam_handle_t *_pamh,
121ade90846SJoerg Sonnenberger 	int _item_type,
1226329e2f6SSascha Wildner 	const void *_item);
123ade90846SJoerg Sonnenberger 
124ade90846SJoerg Sonnenberger int
125ade90846SJoerg Sonnenberger pam_setcred(pam_handle_t *_pamh,
126f23594ceSHasso Tepper 	int _flags)
127f23594ceSHasso Tepper 	OPENPAM_NONNULL((1));
128ade90846SJoerg Sonnenberger 
129ade90846SJoerg Sonnenberger int
130ade90846SJoerg Sonnenberger pam_start(const char *_service,
131ade90846SJoerg Sonnenberger 	const char *_user,
132ade90846SJoerg Sonnenberger 	const struct pam_conv *_pam_conv,
133f23594ceSHasso Tepper 	pam_handle_t **_pamh)
134f23594ceSHasso Tepper 	OPENPAM_NONNULL((4));
135ade90846SJoerg Sonnenberger 
136ade90846SJoerg Sonnenberger const char *
137f23594ceSHasso Tepper pam_strerror(const pam_handle_t *_pamh,
138ade90846SJoerg Sonnenberger 	int _error_number);
139ade90846SJoerg Sonnenberger 
140ade90846SJoerg Sonnenberger /*
141ade90846SJoerg Sonnenberger  * Single Sign-On extensions
142ade90846SJoerg Sonnenberger  */
143ade90846SJoerg Sonnenberger #if 0
144ade90846SJoerg Sonnenberger int
145ade90846SJoerg Sonnenberger pam_authenticate_secondary(pam_handle_t *_pamh,
146ade90846SJoerg Sonnenberger 	char *_target_username,
147ade90846SJoerg Sonnenberger 	char *_target_module_type,
148ade90846SJoerg Sonnenberger 	char *_target_authn_domain,
149ade90846SJoerg Sonnenberger 	char *_target_supp_data,
150ade90846SJoerg Sonnenberger 	char *_target_module_authtok,
151ade90846SJoerg Sonnenberger 	int _flags);
152ade90846SJoerg Sonnenberger 
153ade90846SJoerg Sonnenberger int
154ade90846SJoerg Sonnenberger pam_get_mapped_authtok(pam_handle_t *_pamh,
155ade90846SJoerg Sonnenberger 	const char *_target_module_username,
156ade90846SJoerg Sonnenberger 	const char *_target_module_type,
157ade90846SJoerg Sonnenberger 	const char *_target_authn_domain,
158ade90846SJoerg Sonnenberger 	size_t *_target_authtok_len,
159ade90846SJoerg Sonnenberger 	unsigned char **_target_module_authtok);
160ade90846SJoerg Sonnenberger 
161ade90846SJoerg Sonnenberger int
162ade90846SJoerg Sonnenberger pam_get_mapped_username(pam_handle_t *_pamh,
163ade90846SJoerg Sonnenberger 	const char *_src_username,
164ade90846SJoerg Sonnenberger 	const char *_src_module_type,
165ade90846SJoerg Sonnenberger 	const char *_src_authn_domain,
166ade90846SJoerg Sonnenberger 	const char *_target_module_type,
167ade90846SJoerg Sonnenberger 	const char *_target_authn_domain,
168ade90846SJoerg Sonnenberger 	char **_target_module_username);
169ade90846SJoerg Sonnenberger 
170ade90846SJoerg Sonnenberger int
171ade90846SJoerg Sonnenberger pam_set_mapped_authtok(pam_handle_t *_pamh,
172ade90846SJoerg Sonnenberger 	const char *_target_module_username,
173ade90846SJoerg Sonnenberger 	size_t _target_authtok_len,
174ade90846SJoerg Sonnenberger 	unsigned char *_target_module_authtok,
175ade90846SJoerg Sonnenberger 	const char *_target_module_type,
176ade90846SJoerg Sonnenberger 	const char *_target_authn_domain);
177ade90846SJoerg Sonnenberger 
178ade90846SJoerg Sonnenberger int
179ade90846SJoerg Sonnenberger pam_set_mapped_username(pam_handle_t *_pamh,
180ade90846SJoerg Sonnenberger 	char *_src_username,
181ade90846SJoerg Sonnenberger 	char *_src_module_type,
182ade90846SJoerg Sonnenberger 	char *_src_authn_domain,
183ade90846SJoerg Sonnenberger 	char *_target_module_username,
184ade90846SJoerg Sonnenberger 	char *_target_module_type,
185ade90846SJoerg Sonnenberger 	char *_target_authn_domain);
186ade90846SJoerg Sonnenberger #endif /* 0 */
187ade90846SJoerg Sonnenberger 
188ade90846SJoerg Sonnenberger #ifdef __cplusplus
189ade90846SJoerg Sonnenberger }
190ade90846SJoerg Sonnenberger #endif
191ade90846SJoerg Sonnenberger 
192f23594ceSHasso Tepper #endif /* !SECURITY_PAM_APPL_H_INCLUDED */
193