comparison libpam-sys/libpam-sys-test/xsso_pam_appl.h @ 125:2b255c92417b

Introduce base PAM functions; use the real X/SSO PAM header for tests.
author Paul Fisher <paul@pfish.zone>
date Mon, 30 Jun 2025 17:47:32 -0400
parents libpam-sys/libpam-sys-test/xsso_constants.h@f469b8d9ad78
children
comparison
equal deleted inserted replaced
124:f469b8d9ad78 125:2b255c92417b
1 /*
2 * The contents of this header are copied directly from the X/SSO PAM spec,
3 * with comments and unpopular functions removed.
4 *
5 * https://pubs.opengroup.org/onlinepubs/8329799/apdxa.htm
6 */
7 #define PAM_SUCCESS 0
8 #define PAM_OPEN_ERR 1
9 #define PAM_SYMBOL_ERR 2
10 #define PAM_SERVICE_ERR 3
11 #define PAM_SYSTEM_ERR 4
12 #define PAM_BUF_ERR 5
13 #define PAM_CONV_ERR 6
14 #define PAM_PERM_DENIED 7
15 #define PAM_MAXTRIES 8
16 #define PAM_AUTH_ERR 9
17 #define PAM_NEW_AUTHTOK_REQD 10
18 #define PAM_CRED_INSUFFICIENT 11
19 #define PAM_AUTHINFO_UNAVAIL 12
20 #define PAM_USER_UNKNOWN 13
21 #define PAM_CRED_UNAVAIL 14
22 #define PAM_CRED_EXPIRED 15
23 #define PAM_CRED_ERR 16
24 #define PAM_ACCT_EXPIRED 17
25 #define PAM_AUTHTOK_EXPIRED 18
26 #define PAM_SESSION_ERR 19
27 #define PAM_AUTHTOK_ERR 20
28 #define PAM_AUTHTOK_RECOVERY_ERR 21
29 #define PAM_AUTHTOK_LOCK_BUSY 22
30 #define PAM_AUTHTOK_DISABLE_AGING 23
31 #define PAM_NO_MODULE_DATA 24
32 #define PAM_IGNORE 25
33 #define PAM_ABORT 26
34 #define PAM_TRY_AGAIN 27
35 /* PAM_MODULE_UNKNOWN and PAM_DOMAIN_UNKNOWN are not universal. */
36
37 struct pam_message {
38 int msg_style;
39 char *msg;
40 };
41
42 #define PAM_PROMPT_ECHO_OFF 1
43 #define PAM_PROMPT_ECHO_ON 2
44 #define PAM_ERROR_MSG 3
45 #define PAM_TEXT_INFO 4
46
47 #define PAM_MAX_NUM_MSG 32
48 #define PAM_MAX_MSG_SIZE 512
49 #define PAM_MAX_RESP_SIZE 512
50
51 struct pam_response {
52 char *resp;
53 int resp_retcode;
54 };
55
56 struct pam_conv {
57 int (*conv)(int, struct pam_message **, struct pam_response **, void *);
58 void *appdata_ptr;
59 };
60
61 typedef struct pam_handle pam_handle_t;
62
63 extern int pam_start(const char *service_name,
64 const char *user,
65 const struct pam_conv *pam_conv,
66 pam_handle_t **pamh);
67
68 extern int pam_end(pam_handle_t *pamh, int status);
69
70 extern int pam_set_item(pam_handle_t *pamh, int item_type, const void *item);
71
72 extern int pam_get_item(const pam_handle_t *pamh, int item_type, void **item);
73
74 #define PAM_SERVICE 1
75 #define PAM_USER 2
76 #define PAM_TTY 3
77 #define PAM_RHOST 4
78 #define PAM_CONV 5
79 #define PAM_AUTHTOK 6
80 #define PAM_OLDAUTHTOK 7
81 #define PAM_RUSER 8
82 #define PAM_USER_PROMPT 9
83
84 extern int pam_get_user(pam_handle_t *pamh, char **user, const char *prompt);
85
86 extern int pam_set_data(pam_handle_t *pamh,
87 const char *module_data_name,
88 const void *data,
89 void (*cleanup)(pam_handle_t *pamh,
90 void *data,
91 int pam_end_status));
92
93 extern int pam_get_data(const pam_handle_t *pamh,
94 const char *module_data_name,
95 void **data);
96
97 extern char *pam_strerror(pam_handle_t *pamh, int errnum);
98
99 #define PAM_SILENT 0x80000000
100
101 extern int pam_authenticate(pam_handle_t *pamh, int flags);
102
103 #define PAM_DISALLOW_NULL_AUTHTOK 0x1
104
105 /* Nobody implements pam_authenticate_secondary. */
106
107 extern int pam_acct_mgmt(pam_handle_t *pamh, int flags);
108
109 extern int pam_open_session(pam_handle_t *pamh, int flags);
110
111 extern int pam_close_session(pam_handle_t *pamh, int flags);
112
113 extern int pam_setcred(pam_handle_t *pamh, int flags);
114
115 #define PAM_ESTABLISH_CRED 0x1
116 #define PAM_DELETE_CRED 0x2
117 #define PAM_REINITIALIZE_CRED 0x4
118
119 #define PAM_REFRESH_CRED 0x8
120
121 extern int pam_chauthtok(pam_handle_t *pamh, int flags);
122
123 #define PAM_CHANGE_EXPIRED_AUTHTOK 0x4
124
125 extern char *pam_getenv(pam_handle_t *pamh, const char *name);
126
127 extern char **pam_getenvlist(pam_handle_t *pamh);
128
129 extern int pam_putenv(pam_handle_t *pamh, const char *namevalue);
130
131 /* Nobody implements the _mapped functions. */
132
133 extern int pam_get_user(pam_handle_t *pamh, char **user, const char *prompt);
134
135 /* The following constants come from the `pam_module.h` part of the page. */
136 #define PAM_PRELIM_CHECK 0x1
137 #define PAM_UPDATE_AUTHTOK 0x2
138
139 /* The _sm functions are not exported symbols, but prototypes for modules. */