diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpam-sys/libpam-sys-test/xsso_pam_appl.h	Mon Jun 30 17:47:32 2025 -0400
@@ -0,0 +1,139 @@
+/*
+ * The contents of this header are copied directly from the X/SSO PAM spec,
+ * with comments and unpopular functions removed.
+ *
+ * https://pubs.opengroup.org/onlinepubs/8329799/apdxa.htm
+ */
+#define PAM_SUCCESS 0
+#define PAM_OPEN_ERR 1
+#define PAM_SYMBOL_ERR 2
+#define PAM_SERVICE_ERR 3
+#define PAM_SYSTEM_ERR 4
+#define PAM_BUF_ERR 5
+#define PAM_CONV_ERR 6
+#define PAM_PERM_DENIED 7
+#define PAM_MAXTRIES 8
+#define PAM_AUTH_ERR 9
+#define PAM_NEW_AUTHTOK_REQD 10
+#define PAM_CRED_INSUFFICIENT 11
+#define PAM_AUTHINFO_UNAVAIL 12
+#define PAM_USER_UNKNOWN 13
+#define PAM_CRED_UNAVAIL 14
+#define PAM_CRED_EXPIRED 15
+#define PAM_CRED_ERR 16
+#define PAM_ACCT_EXPIRED 17
+#define PAM_AUTHTOK_EXPIRED 18
+#define PAM_SESSION_ERR 19
+#define PAM_AUTHTOK_ERR 20
+#define PAM_AUTHTOK_RECOVERY_ERR 21
+#define PAM_AUTHTOK_LOCK_BUSY 22
+#define PAM_AUTHTOK_DISABLE_AGING 23
+#define PAM_NO_MODULE_DATA 24
+#define PAM_IGNORE 25
+#define PAM_ABORT 26
+#define PAM_TRY_AGAIN 27
+/* PAM_MODULE_UNKNOWN and PAM_DOMAIN_UNKNOWN are not universal. */
+
+struct pam_message {
+  int msg_style;
+  char *msg;
+};
+
+#define PAM_PROMPT_ECHO_OFF 1
+#define PAM_PROMPT_ECHO_ON 2
+#define PAM_ERROR_MSG 3
+#define PAM_TEXT_INFO 4
+
+#define PAM_MAX_NUM_MSG 32
+#define PAM_MAX_MSG_SIZE 512
+#define PAM_MAX_RESP_SIZE 512
+
+struct pam_response {
+  char *resp;
+  int resp_retcode;
+};
+
+struct pam_conv {
+  int (*conv)(int, struct pam_message **, struct pam_response **, void *);
+  void *appdata_ptr;
+};
+
+typedef struct pam_handle pam_handle_t;
+
+extern int pam_start(const char *service_name,
+                     const char *user,
+                     const struct pam_conv *pam_conv,
+                     pam_handle_t **pamh);
+
+extern int pam_end(pam_handle_t *pamh, int status);
+
+extern int pam_set_item(pam_handle_t *pamh, int item_type, const void *item);
+
+extern int pam_get_item(const pam_handle_t *pamh, int item_type, void **item);
+
+#define PAM_SERVICE 1
+#define PAM_USER 2
+#define PAM_TTY 3
+#define PAM_RHOST 4
+#define PAM_CONV 5
+#define PAM_AUTHTOK 6
+#define PAM_OLDAUTHTOK 7
+#define PAM_RUSER 8
+#define PAM_USER_PROMPT 9
+
+extern int pam_get_user(pam_handle_t *pamh, char **user, const char *prompt);
+
+extern int pam_set_data(pam_handle_t *pamh,
+                        const char *module_data_name,
+                        const void *data,
+                        void (*cleanup)(pam_handle_t *pamh,
+                                        void *data,
+                                        int pam_end_status));
+
+extern int pam_get_data(const pam_handle_t *pamh,
+                        const char *module_data_name,
+                        void **data);
+
+extern char *pam_strerror(pam_handle_t *pamh, int errnum);
+
+#define PAM_SILENT 0x80000000
+
+extern int pam_authenticate(pam_handle_t *pamh, int flags);
+
+#define PAM_DISALLOW_NULL_AUTHTOK 0x1
+
+/* Nobody implements pam_authenticate_secondary. */
+
+extern int pam_acct_mgmt(pam_handle_t *pamh, int flags);
+
+extern int pam_open_session(pam_handle_t *pamh, int flags);
+
+extern int pam_close_session(pam_handle_t *pamh, int flags);
+
+extern int pam_setcred(pam_handle_t *pamh, int flags);
+
+#define PAM_ESTABLISH_CRED 0x1
+#define PAM_DELETE_CRED 0x2
+#define PAM_REINITIALIZE_CRED 0x4
+
+#define PAM_REFRESH_CRED 0x8
+
+extern int pam_chauthtok(pam_handle_t *pamh, int flags);
+
+#define PAM_CHANGE_EXPIRED_AUTHTOK 0x4
+
+extern char *pam_getenv(pam_handle_t *pamh, const char *name);
+
+extern char **pam_getenvlist(pam_handle_t *pamh);
+
+extern int pam_putenv(pam_handle_t *pamh, const char *namevalue);
+
+/* Nobody implements the _mapped functions. */
+
+extern int pam_get_user(pam_handle_t *pamh, char **user, const char *prompt);
+
+/* The following constants come from the `pam_module.h` part of the page. */
+#define PAM_PRELIM_CHECK 0x1
+#define PAM_UPDATE_AUTHTOK 0x2
+
+/* The _sm functions are not exported symbols, but prototypes for modules. */