xref: /freebsd/contrib/openpam/include/security/pam_appl.h (revision 3ba4c8c81a28de3e00ccf6d7f92c6f8e58bef456)
15c1eca55SDag-Erling Smørgrav /*-
231c521e9SDag-Erling Smørgrav  * Copyright (c) 2002-2003 Networks Associates Technology, Inc.
3*49e56509SDag-Erling Smørgrav  * Copyright (c) 2004-2017 Dag-Erling Smørgrav
45c1eca55SDag-Erling Smørgrav  * All rights reserved.
55c1eca55SDag-Erling Smørgrav  *
65c1eca55SDag-Erling Smørgrav  * This software was developed for the FreeBSD Project by ThinkSec AS and
7ee02aaa9SDag-Erling Smørgrav  * Network Associates Laboratories, the Security Research Division of
8ee02aaa9SDag-Erling Smørgrav  * Network Associates, Inc.  under DARPA/SPAWAR contract N66001-01-C-8035
9ee02aaa9SDag-Erling Smørgrav  * ("CBOSS"), as part of the DARPA CHATS research program.
105c1eca55SDag-Erling Smørgrav  *
115c1eca55SDag-Erling Smørgrav  * Redistribution and use in source and binary forms, with or without
125c1eca55SDag-Erling Smørgrav  * modification, are permitted provided that the following conditions
135c1eca55SDag-Erling Smørgrav  * are met:
145c1eca55SDag-Erling Smørgrav  * 1. Redistributions of source code must retain the above copyright
155c1eca55SDag-Erling Smørgrav  *    notice, this list of conditions and the following disclaimer.
165c1eca55SDag-Erling Smørgrav  * 2. Redistributions in binary form must reproduce the above copyright
175c1eca55SDag-Erling Smørgrav  *    notice, this list of conditions and the following disclaimer in the
185c1eca55SDag-Erling Smørgrav  *    documentation and/or other materials provided with the distribution.
195c1eca55SDag-Erling Smørgrav  * 3. The name of the author may not be used to endorse or promote
205c1eca55SDag-Erling Smørgrav  *    products derived from this software without specific prior written
215c1eca55SDag-Erling Smørgrav  *    permission.
225c1eca55SDag-Erling Smørgrav  *
235c1eca55SDag-Erling Smørgrav  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
245c1eca55SDag-Erling Smørgrav  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
255c1eca55SDag-Erling Smørgrav  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
265c1eca55SDag-Erling Smørgrav  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
275c1eca55SDag-Erling Smørgrav  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
285c1eca55SDag-Erling Smørgrav  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
295c1eca55SDag-Erling Smørgrav  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
305c1eca55SDag-Erling Smørgrav  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
315c1eca55SDag-Erling Smørgrav  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
325c1eca55SDag-Erling Smørgrav  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
335c1eca55SDag-Erling Smørgrav  * SUCH DAMAGE.
345c1eca55SDag-Erling Smørgrav  */
355c1eca55SDag-Erling Smørgrav 
36fe980754SDag-Erling Smørgrav #ifndef SECURITY_PAM_APPL_H_INCLUDED
37fe980754SDag-Erling Smørgrav #define SECURITY_PAM_APPL_H_INCLUDED
385c1eca55SDag-Erling Smørgrav 
395c1eca55SDag-Erling Smørgrav #include <security/pam_types.h>
405c1eca55SDag-Erling Smørgrav #include <security/pam_constants.h>
41fe980754SDag-Erling Smørgrav #include <security/openpam_attr.h>
425c1eca55SDag-Erling Smørgrav 
435c1eca55SDag-Erling Smørgrav #ifdef __cplusplus
445c1eca55SDag-Erling Smørgrav extern "C" {
455c1eca55SDag-Erling Smørgrav #endif
465c1eca55SDag-Erling Smørgrav 
475c1eca55SDag-Erling Smørgrav /*
485c1eca55SDag-Erling Smørgrav  * XSSO 4.2.1, 6
495c1eca55SDag-Erling Smørgrav  */
505c1eca55SDag-Erling Smørgrav 
515c1eca55SDag-Erling Smørgrav int
525c1eca55SDag-Erling Smørgrav pam_acct_mgmt(pam_handle_t *_pamh,
53fe980754SDag-Erling Smørgrav 	int _flags)
54fe980754SDag-Erling Smørgrav 	OPENPAM_NONNULL((1));
555c1eca55SDag-Erling Smørgrav 
565c1eca55SDag-Erling Smørgrav int
575c1eca55SDag-Erling Smørgrav pam_authenticate(pam_handle_t *_pamh,
58fe980754SDag-Erling Smørgrav 	int _flags)
59fe980754SDag-Erling Smørgrav 	OPENPAM_NONNULL((1));
605c1eca55SDag-Erling Smørgrav 
615c1eca55SDag-Erling Smørgrav int
625c1eca55SDag-Erling Smørgrav pam_chauthtok(pam_handle_t *_pamh,
63fe980754SDag-Erling Smørgrav 	int _flags)
64fe980754SDag-Erling Smørgrav 	OPENPAM_NONNULL((1));
655c1eca55SDag-Erling Smørgrav 
665c1eca55SDag-Erling Smørgrav int
675c1eca55SDag-Erling Smørgrav pam_close_session(pam_handle_t *_pamh,
68fe980754SDag-Erling Smørgrav 	int _flags)
69fe980754SDag-Erling Smørgrav 	OPENPAM_NONNULL((1));
705c1eca55SDag-Erling Smørgrav 
715c1eca55SDag-Erling Smørgrav int
725c1eca55SDag-Erling Smørgrav pam_end(pam_handle_t *_pamh,
73e4deb071SDag-Erling Smørgrav 	int _status);
745c1eca55SDag-Erling Smørgrav 
755c1eca55SDag-Erling Smørgrav int
76fe980754SDag-Erling Smørgrav pam_get_data(const pam_handle_t *_pamh,
775c1eca55SDag-Erling Smørgrav 	const char *_module_data_name,
78fe980754SDag-Erling Smørgrav 	const void **_data)
79fe980754SDag-Erling Smørgrav 	OPENPAM_NONNULL((1,2,3));
805c1eca55SDag-Erling Smørgrav 
815c1eca55SDag-Erling Smørgrav int
82fe980754SDag-Erling Smørgrav pam_get_item(const pam_handle_t *_pamh,
835c1eca55SDag-Erling Smørgrav 	int _item_type,
84fe980754SDag-Erling Smørgrav 	const void **_item)
85fe980754SDag-Erling Smørgrav 	OPENPAM_NONNULL((1,3));
865c1eca55SDag-Erling Smørgrav 
875c1eca55SDag-Erling Smørgrav int
885c1eca55SDag-Erling Smørgrav pam_get_user(pam_handle_t *_pamh,
895c1eca55SDag-Erling Smørgrav 	const char **_user,
90fe980754SDag-Erling Smørgrav 	const char *_prompt)
91fe980754SDag-Erling Smørgrav 	OPENPAM_NONNULL((1,2));
925c1eca55SDag-Erling Smørgrav 
934cb68ea5SDag-Erling Smørgrav const char *
945c1eca55SDag-Erling Smørgrav pam_getenv(pam_handle_t *_pamh,
95fe980754SDag-Erling Smørgrav 	const char *_name)
96fe980754SDag-Erling Smørgrav 	OPENPAM_NONNULL((1,2));
975c1eca55SDag-Erling Smørgrav 
985c1eca55SDag-Erling Smørgrav char **
99fe980754SDag-Erling Smørgrav pam_getenvlist(pam_handle_t *_pamh)
100fe980754SDag-Erling Smørgrav 	OPENPAM_NONNULL((1));
1015c1eca55SDag-Erling Smørgrav 
1025c1eca55SDag-Erling Smørgrav int
1035c1eca55SDag-Erling Smørgrav pam_open_session(pam_handle_t *_pamh,
104fe980754SDag-Erling Smørgrav 	int _flags)
105fe980754SDag-Erling Smørgrav 	OPENPAM_NONNULL((1));
1065c1eca55SDag-Erling Smørgrav 
1075c1eca55SDag-Erling Smørgrav int
1085c1eca55SDag-Erling Smørgrav pam_putenv(pam_handle_t *_pamh,
109fe980754SDag-Erling Smørgrav 	const char *_namevalue)
110fe980754SDag-Erling Smørgrav 	OPENPAM_NONNULL((1,2));
1115c1eca55SDag-Erling Smørgrav 
1125c1eca55SDag-Erling Smørgrav int
1135c1eca55SDag-Erling Smørgrav pam_set_data(pam_handle_t *_pamh,
1145c1eca55SDag-Erling Smørgrav 	const char *_module_data_name,
1155c1eca55SDag-Erling Smørgrav 	void *_data,
1165c1eca55SDag-Erling Smørgrav 	void (*_cleanup)(pam_handle_t *_pamh,
1175c1eca55SDag-Erling Smørgrav 		void *_data,
118fe980754SDag-Erling Smørgrav 		int _pam_end_status))
119fe980754SDag-Erling Smørgrav 	OPENPAM_NONNULL((1,2));
1205c1eca55SDag-Erling Smørgrav 
1215c1eca55SDag-Erling Smørgrav int
1225c1eca55SDag-Erling Smørgrav pam_set_item(pam_handle_t *_pamh,
1235c1eca55SDag-Erling Smørgrav 	int _item_type,
124fe980754SDag-Erling Smørgrav 	const void *_item)
125fe980754SDag-Erling Smørgrav 	OPENPAM_NONNULL((1));
1265c1eca55SDag-Erling Smørgrav 
1275c1eca55SDag-Erling Smørgrav int
1285c1eca55SDag-Erling Smørgrav pam_setcred(pam_handle_t *_pamh,
129fe980754SDag-Erling Smørgrav 	int _flags)
130fe980754SDag-Erling Smørgrav 	OPENPAM_NONNULL((1));
1315c1eca55SDag-Erling Smørgrav 
1325c1eca55SDag-Erling Smørgrav int
1335c1eca55SDag-Erling Smørgrav pam_start(const char *_service,
1345c1eca55SDag-Erling Smørgrav 	const char *_user,
1355c1eca55SDag-Erling Smørgrav 	const struct pam_conv *_pam_conv,
136fe980754SDag-Erling Smørgrav 	pam_handle_t **_pamh)
137fe980754SDag-Erling Smørgrav 	OPENPAM_NONNULL((4));
1385c1eca55SDag-Erling Smørgrav 
1395c1eca55SDag-Erling Smørgrav const char *
140fe980754SDag-Erling Smørgrav pam_strerror(const pam_handle_t *_pamh,
1415c1eca55SDag-Erling Smørgrav 	int _error_number);
1425c1eca55SDag-Erling Smørgrav 
1435c1eca55SDag-Erling Smørgrav /*
1445c1eca55SDag-Erling Smørgrav  * Single Sign-On extensions
1455c1eca55SDag-Erling Smørgrav  */
1465c1eca55SDag-Erling Smørgrav #if 0
1475c1eca55SDag-Erling Smørgrav int
1485c1eca55SDag-Erling Smørgrav pam_authenticate_secondary(pam_handle_t *_pamh,
1495c1eca55SDag-Erling Smørgrav 	char *_target_username,
1505c1eca55SDag-Erling Smørgrav 	char *_target_module_type,
1515c1eca55SDag-Erling Smørgrav 	char *_target_authn_domain,
1525c1eca55SDag-Erling Smørgrav 	char *_target_supp_data,
1535c1eca55SDag-Erling Smørgrav 	char *_target_module_authtok,
1545c1eca55SDag-Erling Smørgrav 	int _flags);
1555c1eca55SDag-Erling Smørgrav 
1565c1eca55SDag-Erling Smørgrav int
1575c1eca55SDag-Erling Smørgrav pam_get_mapped_authtok(pam_handle_t *_pamh,
1585c1eca55SDag-Erling Smørgrav 	const char *_target_module_username,
1595c1eca55SDag-Erling Smørgrav 	const char *_target_module_type,
1605c1eca55SDag-Erling Smørgrav 	const char *_target_authn_domain,
1615c1eca55SDag-Erling Smørgrav 	size_t *_target_authtok_len,
1625c1eca55SDag-Erling Smørgrav 	unsigned char **_target_module_authtok);
1635c1eca55SDag-Erling Smørgrav 
1645c1eca55SDag-Erling Smørgrav int
1655c1eca55SDag-Erling Smørgrav pam_get_mapped_username(pam_handle_t *_pamh,
1665c1eca55SDag-Erling Smørgrav 	const char *_src_username,
1675c1eca55SDag-Erling Smørgrav 	const char *_src_module_type,
1685c1eca55SDag-Erling Smørgrav 	const char *_src_authn_domain,
1695c1eca55SDag-Erling Smørgrav 	const char *_target_module_type,
1705c1eca55SDag-Erling Smørgrav 	const char *_target_authn_domain,
1715c1eca55SDag-Erling Smørgrav 	char **_target_module_username);
1725c1eca55SDag-Erling Smørgrav 
1735c1eca55SDag-Erling Smørgrav int
1745c1eca55SDag-Erling Smørgrav pam_set_mapped_authtok(pam_handle_t *_pamh,
1755c1eca55SDag-Erling Smørgrav 	const char *_target_module_username,
1765c1eca55SDag-Erling Smørgrav 	size_t _target_authtok_len,
1775c1eca55SDag-Erling Smørgrav 	unsigned char *_target_module_authtok,
1785c1eca55SDag-Erling Smørgrav 	const char *_target_module_type,
1795c1eca55SDag-Erling Smørgrav 	const char *_target_authn_domain);
1805c1eca55SDag-Erling Smørgrav 
1815c1eca55SDag-Erling Smørgrav int
1825c1eca55SDag-Erling Smørgrav pam_set_mapped_username(pam_handle_t *_pamh,
1835c1eca55SDag-Erling Smørgrav 	char *_src_username,
1845c1eca55SDag-Erling Smørgrav 	char *_src_module_type,
1855c1eca55SDag-Erling Smørgrav 	char *_src_authn_domain,
1865c1eca55SDag-Erling Smørgrav 	char *_target_module_username,
1875c1eca55SDag-Erling Smørgrav 	char *_target_module_type,
1885c1eca55SDag-Erling Smørgrav 	char *_target_authn_domain);
1895c1eca55SDag-Erling Smørgrav #endif /* 0 */
1905c1eca55SDag-Erling Smørgrav 
1915c1eca55SDag-Erling Smørgrav #ifdef __cplusplus
1925c1eca55SDag-Erling Smørgrav }
1935c1eca55SDag-Erling Smørgrav #endif
1945c1eca55SDag-Erling Smørgrav 
195fe980754SDag-Erling Smørgrav #endif /* !SECURITY_PAM_APPL_H_INCLUDED */
196