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