comparison src/constants.rs @ 55:676675c3d434

Make PamResultCode implement Error.
author Paul Fisher <paul@pfish.zone>
date Sun, 04 May 2025 00:58:04 -0400
parents ce47901aab7a
children daa2cde64601
comparison
equal deleted inserted replaced
54:0f1dcf5607e0 55:676675c3d434
23 pub const PAM_TEXT_INFO: PamMessageStyle = 4; 23 pub const PAM_TEXT_INFO: PamMessageStyle = 4;
24 /// yes/no/maybe conditionals 24 /// yes/no/maybe conditionals
25 pub const PAM_RADIO_TYPE: PamMessageStyle = 5; 25 pub const PAM_RADIO_TYPE: PamMessageStyle = 5;
26 pub const PAM_BINARY_PROMPT: PamMessageStyle = 7; 26 pub const PAM_BINARY_PROMPT: PamMessageStyle = 7;
27 27
28 // The Linux-PAM return values 28 /// The Linux-PAM return values.
29 // see /usr/include/security/_pam_types.h 29 /// For more detailed information, see
30 /// /usr/include/security/_pam_types.h
30 #[allow(non_camel_case_types, dead_code)] 31 #[allow(non_camel_case_types, dead_code)]
31 #[derive(Debug, PartialEq)] 32 #[derive(Debug, PartialEq, thiserror::Error)]
32 #[repr(C)] 33 #[repr(C)]
33 pub enum PamResultCode { 34 pub enum PamResultCode {
35 #[error("Not an error")]
34 PAM_SUCCESS = 0, 36 PAM_SUCCESS = 0,
37 #[error("dlopen() failure when dynamically loading a service module")]
35 PAM_OPEN_ERR = 1, 38 PAM_OPEN_ERR = 1,
39 #[error("symbol not found")]
36 PAM_SYMBOL_ERR = 2, 40 PAM_SYMBOL_ERR = 2,
41 #[error("error in service module")]
37 PAM_SERVICE_ERR = 3, 42 PAM_SERVICE_ERR = 3,
43 #[error("system error")]
38 PAM_SYSTEM_ERR = 4, 44 PAM_SYSTEM_ERR = 4,
45 #[error("memory buffer error")]
39 PAM_BUF_ERR = 5, 46 PAM_BUF_ERR = 5,
47 #[error("permission denied")]
40 PAM_PERM_DENIED = 6, 48 PAM_PERM_DENIED = 6,
49 #[error("authentication failure")]
41 PAM_AUTH_ERR = 7, 50 PAM_AUTH_ERR = 7,
51 #[error("cannot access authentication data due to insufficient credentials")]
42 PAM_CRED_INSUFFICIENT = 8, 52 PAM_CRED_INSUFFICIENT = 8,
53 #[error("underlying authentication service cannot retrieve authentication information")]
43 PAM_AUTHINFO_UNAVAIL = 9, 54 PAM_AUTHINFO_UNAVAIL = 9,
55 #[error("user not known to the underlying authentication module")]
44 PAM_USER_UNKNOWN = 10, 56 PAM_USER_UNKNOWN = 10,
57 #[error("retry limit reached; do not attempt further")]
45 PAM_MAXTRIES = 11, 58 PAM_MAXTRIES = 11,
59 #[error("new authentication token required")]
46 PAM_NEW_AUTHTOK_REQD = 12, 60 PAM_NEW_AUTHTOK_REQD = 12,
61 #[error("user account has expired")]
47 PAM_ACCT_EXPIRED = 13, 62 PAM_ACCT_EXPIRED = 13,
63 #[error("cannot make/remove an entry for the specified session")]
48 PAM_SESSION_ERR = 14, 64 PAM_SESSION_ERR = 14,
65 #[error("underlying authentication service cannot retrieve user credentials")]
49 PAM_CRED_UNAVAIL = 15, 66 PAM_CRED_UNAVAIL = 15,
67 #[error("user credentials expired")]
50 PAM_CRED_EXPIRED = 16, 68 PAM_CRED_EXPIRED = 16,
69 #[error("failure setting user credentials")]
51 PAM_CRED_ERR = 17, 70 PAM_CRED_ERR = 17,
71 #[error("no module-specific data is present")]
52 PAM_NO_MODULE_DATA = 18, 72 PAM_NO_MODULE_DATA = 18,
73 #[error("conversation error")]
53 PAM_CONV_ERR = 19, 74 PAM_CONV_ERR = 19,
75 #[error("authentication token manipulation error")]
54 PAM_AUTHTOK_ERR = 20, 76 PAM_AUTHTOK_ERR = 20,
77 #[error("authentication information cannot be recovered")]
55 PAM_AUTHTOK_RECOVERY_ERR = 21, 78 PAM_AUTHTOK_RECOVERY_ERR = 21,
79 #[error("authentication token lock busy")]
56 PAM_AUTHTOK_LOCK_BUSY = 22, 80 PAM_AUTHTOK_LOCK_BUSY = 22,
81 #[error("authentication token aging disabled")]
57 PAM_AUTHTOK_DISABLE_AGING = 23, 82 PAM_AUTHTOK_DISABLE_AGING = 23,
83 #[error("preliminary check by password service")]
58 PAM_TRY_AGAIN = 24, 84 PAM_TRY_AGAIN = 24,
85 #[error("ignore underlying account module, regardless of control flag")]
59 PAM_IGNORE = 25, 86 PAM_IGNORE = 25,
87 #[error("critical error; this module should fail now")]
60 PAM_ABORT = 26, 88 PAM_ABORT = 26,
89 #[error("authentication token has expired")]
61 PAM_AUTHTOK_EXPIRED = 27, 90 PAM_AUTHTOK_EXPIRED = 27,
91 #[error("module is not known")]
62 PAM_MODULE_UNKNOWN = 28, 92 PAM_MODULE_UNKNOWN = 28,
93 #[error("bad item passed to pam_[whatever]_item")]
63 PAM_BAD_ITEM = 29, 94 PAM_BAD_ITEM = 29,
95 #[error("conversation function is event-driven and data is not available yet")]
64 PAM_CONV_AGAIN = 30, 96 PAM_CONV_AGAIN = 30,
97 #[error("call this function again to complete authentication stack")]
65 PAM_INCOMPLETE = 31, 98 PAM_INCOMPLETE = 31,
66 } 99 }