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