annotate usr/src/lib/libpam/pam_appl.h @ 10702:ca0edf2daf1c

PSARC/2004/678 EOF SCF_ Smartcard APIs PSARC/2005/106 iButton Smartcard EOF PSARC/2005/107 Cyberflex Smartcard EOF PSARC/2006/295 EOF pam_smartcard(5) PSARC/2006/296 EOF smartcard(1m) 6857067 Smartcard EOF Removal
author Darren J Moffat <Darren.Moffat@Sun.COM>
date Thu, 01 Oct 2009 07:56:28 -0700
parents 7c6b0ab715f4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
1 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
2 * CDDL HEADER START
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
3 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
4 * The contents of this file are subject to the terms of the
2815
7c6b0ab715f4 PSARC/2006/534 remote user audit attribution update
gww
parents: 0
diff changeset
5 * Common Development and Distribution License (the "License").
7c6b0ab715f4 PSARC/2006/534 remote user audit attribution update
gww
parents: 0
diff changeset
6 * You may not use this file except in compliance with the License.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
7 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
9 * or http://www.opensolaris.org/os/licensing.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
10 * See the License for the specific language governing permissions
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
11 * and limitations under the License.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
12 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
13 * When distributing Covered Code, include this CDDL HEADER in each
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
15 * If applicable, add the following below this CDDL HEADER, with the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
16 * fields enclosed by brackets "[]" replaced with your own identifying
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
17 * information: Portions Copyright [yyyy] [name of copyright owner]
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
18 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
19 * CDDL HEADER END
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
20 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
21 /*
10702
ca0edf2daf1c PSARC/2004/678 EOF SCF_ Smartcard APIs
Darren J Moffat <Darren.Moffat@Sun.COM>
parents: 2815
diff changeset
22 * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
23 * Use is subject to license terms.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
24 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
25
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
26 #ifndef _PAM_APPL_H
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
27 #define _PAM_APPL_H
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
28
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
29 #include <sys/types.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
30
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
31 #ifdef __cplusplus
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
32 extern "C" {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
33 #endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
34
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
35 /* Generic PAM errors */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
36 #define PAM_SUCCESS 0 /* Normal function return */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
37 #define PAM_OPEN_ERR 1 /* Dlopen failure */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
38 #define PAM_SYMBOL_ERR 2 /* Symbol not found */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
39 #define PAM_SERVICE_ERR 3 /* Error in underlying service module */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
40 #define PAM_SYSTEM_ERR 4 /* System error */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
41 #define PAM_BUF_ERR 5 /* Memory buffer error */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
42 #define PAM_CONV_ERR 6 /* Conversation failure */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
43 #define PAM_PERM_DENIED 7 /* Permission denied */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
44
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
45 /* Errors returned by pam_authenticate, pam_acct_mgmt(), and pam_setcred() */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
46 #define PAM_MAXTRIES 8 /* Maximum number of tries exceeded */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
47 #define PAM_AUTH_ERR 9 /* Authentication failure */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
48 #define PAM_NEW_AUTHTOK_REQD 10 /* Get new auth token from the user */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
49 #define PAM_CRED_INSUFFICIENT 11 /* can not access auth data b/c */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
50 /* of insufficient credentials */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
51 #define PAM_AUTHINFO_UNAVAIL 12 /* Can not retrieve auth information */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
52 #define PAM_USER_UNKNOWN 13 /* No account present for user */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
53
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
54 /* Errors returned by pam_setcred() */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
55 #define PAM_CRED_UNAVAIL 14 /* can not retrieve user credentials */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
56 #define PAM_CRED_EXPIRED 15 /* user credentials expired */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
57 #define PAM_CRED_ERR 16 /* failure setting user credentials */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
58
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
59 /* Errors returned by pam_acct_mgmt() */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
60 #define PAM_ACCT_EXPIRED 17 /* user account has expired */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
61 #define PAM_AUTHTOK_EXPIRED 18 /* Password expired and no longer */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
62 /* usable */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
63
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
64 /* Errors returned by pam_open/close_session() */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
65 #define PAM_SESSION_ERR 19 /* can not make/remove entry for */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
66 /* specified session */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
67
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
68 /* Errors returned by pam_chauthtok() */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
69 #define PAM_AUTHTOK_ERR 20 /* Authentication token */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
70 /* manipulation error */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
71 #define PAM_AUTHTOK_RECOVERY_ERR 21 /* Old authentication token */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
72 /* cannot be recovered */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
73 #define PAM_AUTHTOK_LOCK_BUSY 22 /* Authentication token */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
74 /* lock busy */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
75 #define PAM_AUTHTOK_DISABLE_AGING 23 /* Authentication token aging */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
76 /* is disabled */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
77
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
78 /* Errors returned by pam_get_data */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
79 #define PAM_NO_MODULE_DATA 24 /* module data not found */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
80
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
81 /* Errors returned by modules */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
82 #define PAM_IGNORE 25 /* ignore module */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
83
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
84 #define PAM_ABORT 26 /* General PAM failure */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
85 #define PAM_TRY_AGAIN 27 /* Unable to update password */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
86 /* Try again another time */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
87 #define PAM_TOTAL_ERRNUM 28
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
88
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
89 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
90 * structure pam_message is used to pass prompt, error message,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
91 * or any text information from scheme to application/user.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
92 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
93
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
94 struct pam_message {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
95 int msg_style; /* Msg_style - see below */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
96 char *msg; /* Message string */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
97 };
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
98
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
99 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
100 * msg_style defines the interaction style between the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
101 * scheme and the application.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
102 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
103 #define PAM_PROMPT_ECHO_OFF 1 /* Echo off when getting response */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
104 #define PAM_PROMPT_ECHO_ON 2 /* Echo on when getting response */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
105 #define PAM_ERROR_MSG 3 /* Error message */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
106 #define PAM_TEXT_INFO 4 /* Textual information */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
107
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
108 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
109 * max # of messages passed to the application through the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
110 * conversation function call
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
111 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
112 #define PAM_MAX_NUM_MSG 32
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
113
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
114 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
115 * max size (in chars) of each messages passed to the application
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
116 * through the conversation function call
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
117 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
118 #define PAM_MAX_MSG_SIZE 512
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
119
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
120 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
121 * max size (in chars) of each response passed from the application
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
122 * through the conversation function call
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
123 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
124 #define PAM_MAX_RESP_SIZE 512
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
125
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
126 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
127 * structure pam_response is used by the scheme to get the user's
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
128 * response back from the application/user.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
129 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
130
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
131 struct pam_response {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
132 char *resp; /* Response string */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
133 int resp_retcode; /* Return code - for future use */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
134 };
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
135
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
136 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
137 * structure pam_conv is used by authentication applications for passing
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
138 * call back function pointers and application data pointers to the scheme
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
139 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
140 struct pam_conv {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
141 int (*conv)(int, struct pam_message **,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
142 struct pam_response **, void *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
143 void *appdata_ptr; /* Application data ptr */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
144 };
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
145
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
146 /* the pam handle */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
147 typedef struct pam_handle pam_handle_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
148
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
149 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
150 * pam_start() is called to initiate an authentication exchange
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
151 * with PAM.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
152 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
153 extern int
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
154 pam_start(
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
155 const char *service_name, /* Service Name */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
156 const char *user, /* User Name */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
157 const struct pam_conv *pam_conv, /* Conversation structure */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
158 pam_handle_t **pamh /* Address to store handle */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
159 );
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
160
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
161 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
162 * pam_end() is called to end an authentication exchange with PAM.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
163 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
164 extern int
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
165 pam_end(
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
166 pam_handle_t *pamh, /* handle from pam_start() */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
167 int status /* the final status value that */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
168 /* gets passed to cleanup functions */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
169 );
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
170
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
171 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
172 * pam_set_item is called to store an object in PAM handle.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
173 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
174 extern int
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
175 pam_set_item(
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
176 pam_handle_t *pamh, /* PAM handle */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
177 int item_type, /* Type of object - see below */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
178 const void *item /* Address of place to put pointer */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
179 /* to object */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
180 );
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
181
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
182 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
183 * pam_get_item is called to retrieve an object from the static data area
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
184 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
185 extern int
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
186 pam_get_item(
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
187 const pam_handle_t *pamh, /* PAM handle */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
188 int item_type, /* Type of object - see below */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
189 void ** item /* Address of place to put pointer */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
190 /* to object */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
191 );
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
192
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
193 /* Items supported by pam_[sg]et_item() calls */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
194 #define PAM_SERVICE 1 /* The program/service name */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
195 #define PAM_USER 2 /* The user name */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
196 #define PAM_TTY 3 /* The tty name */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
197 #define PAM_RHOST 4 /* The remote host name */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
198 #define PAM_CONV 5 /* The conversation structure */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
199 #define PAM_AUTHTOK 6 /* The authentication token */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
200 #define PAM_OLDAUTHTOK 7 /* Old authentication token */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
201 #define PAM_RUSER 8 /* The remote user name */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
202 #define PAM_USER_PROMPT 9 /* The user prompt */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
203 #define PAM_REPOSITORY 10 /* The repository to be updated */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
204 #define PAM_RESOURCE 11 /* Resource management info */
2815
7c6b0ab715f4 PSARC/2006/534 remote user audit attribution update
gww
parents: 0
diff changeset
205 #define PAM_AUSER 12 /* The authenticated user name */
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
206
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
207 /* pam repository structure */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
208
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
209 struct pam_repository {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
210 char *type; /* Repository type, e.g., files, nis, ldap */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
211 void *scope; /* Optional scope information */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
212 size_t scope_len; /* length of scope inforamtion */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
213 };
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
214
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
215 typedef struct pam_repository pam_repository_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
216
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
217 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
218 * pam_get_user is called to retrieve the user name (PAM_USER). If PAM_USER
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
219 * is not set then this call will prompt for the user name using the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
220 * conversation function. This function should only be used by modules, not
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
221 * applications.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
222 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
223
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
224 extern int
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
225 pam_get_user(
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
226 pam_handle_t *pamh, /* PAM handle */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
227 char **user, /* User Name */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
228 const char *prompt /* Prompt */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
229 );
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
230
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
231 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
232 * PAM equivalent to strerror();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
233 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
234 extern const char *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
235 pam_strerror(
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
236 pam_handle_t *pamh, /* pam handle */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
237 int errnum /* error number */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
238 );
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
239
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
240 /* general flag for pam_* functions */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
241 #define PAM_SILENT 0x80000000
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
242
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
243 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
244 * pam_authenticate is called to authenticate the current user.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
245 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
246 extern int
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
247 pam_authenticate(
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
248 pam_handle_t *pamh,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
249 int flags
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
250 );
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
251
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
252 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
253 * Flags for pam_authenticate
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
254 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
255
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
256 #define PAM_DISALLOW_NULL_AUTHTOK 0x1 /* The password must be non-null */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
257
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
258 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
259 * pam_acct_mgmt is called to perform account management processing
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
260 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
261 extern int
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
262 pam_acct_mgmt(
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
263 pam_handle_t *pamh,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
264 int flags
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
265 );
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
266
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
267 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
268 * pam_open_session is called to note the initiation of new session in the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
269 * appropriate administrative data bases.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
270 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
271 extern int
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
272 pam_open_session(
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
273 pam_handle_t *pamh,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
274 int flags
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
275 );
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
276
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
277 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
278 * pam_close_session records the termination of a session.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
279 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
280 extern int
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
281 pam_close_session(
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
282 pam_handle_t *pamh,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
283 int flags
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
284 );
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
285
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
286 /* pam_setcred is called to set the credentials of the current user */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
287 extern int
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
288 pam_setcred(
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
289 pam_handle_t *pamh,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
290 int flags
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
291 );
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
292
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
293 /* flags for pam_setcred() */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
294 #define PAM_ESTABLISH_CRED 0x1 /* set scheme specific user id */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
295 #define PAM_DELETE_CRED 0x2 /* unset scheme specific user id */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
296 #define PAM_REINITIALIZE_CRED 0x4 /* reinitialize user credentials */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
297 /* (after a password has changed */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
298 #define PAM_REFRESH_CRED 0x8 /* extend lifetime of credentials */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
299
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
300 /* pam_chauthtok is called to change authentication token */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
301
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
302 extern int
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
303 pam_chauthtok(
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
304 pam_handle_t *pamh,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
305 int flags
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
306 );
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
307
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
308 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
309 * Be careful - there are flags defined for pam_sm_chauthtok() in
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
310 * pam_modules.h also:
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
311 * PAM_PRELIM_CHECK 0x1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
312 * PAM_UPDATE_AUTHTOK 0x2
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
313 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
314 #define PAM_CHANGE_EXPIRED_AUTHTOK 0x4 /* update expired passwords only */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
315 #define PAM_NO_AUTHTOK_CHECK 0x8 /* bypass password strength tests */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
316
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
317 /* pam_putenv is called to add environment variables to the PAM handle */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
318
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
319 extern int
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
320 pam_putenv(
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
321 pam_handle_t *pamh,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
322 const char *name_value
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
323 );
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
324
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
325 /* pam_getenv is called to retrieve an env variable from the PAM handle */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
326
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
327 extern char *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
328 pam_getenv(
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
329 pam_handle_t *pamh,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
330 const char *name
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
331 );
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
332
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
333 /* pam_getenvlist is called to retrieve all env variables from the PAM handle */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
334
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
335 extern char **
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
336 pam_getenvlist(
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
337 pam_handle_t *pamh
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
338 );
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
339
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
340 #ifdef __cplusplus
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
341 }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
342 #endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
343
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
344 #endif /* _PAM_APPL_H */