annotate src/items.rs @ 171:e27c5c667a5a

Create full new types for return code and flags, separate end to end. This plumbs the ReturnCode and RawFlags types through the places where we call into or are called from PAM. Also adds Sun documentation to the project.
author Paul Fisher <paul@pfish.zone>
date Fri, 25 Jul 2025 20:52:14 -0400
parents 1bc52025156b
children 9e4ce1631bd3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
146
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
1 use crate::_doc::{guide, linklist, stdlinks};
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
2 use crate::constants::Result;
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
3 #[cfg(doc)]
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
4 use crate::handle::{ModuleClient, PamShared};
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
5 use std::ffi::{OsStr, OsString};
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
6
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
7 macro_rules! getter {
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
8 ($(#[$md:meta])* $getter:ident($item:literal $(, see = $see:path)?)) => {
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
9 $(#[$md])*
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
10 #[doc = ""]
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
11 #[doc = concat!("Gets the `", $item, "` of the PAM handle.")]
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
12 $(
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
13 #[doc = concat!("See [`", stringify!($see), "`].")]
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
14 )?
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
15 fn $getter(&self) -> Result<Option<OsString>>;
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
16 };
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
17 }
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
18
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
19 pub(crate) use getter;
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
20 macro_rules! setter {
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
21 ($(#[$md:meta])* $setter:ident($item:literal $(, see = $see:path)?)) => {
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
22 $(#[$md])*
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
23 #[doc = ""]
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
24 #[doc = concat!("Sets the `", $item, "` from the PAM handle.")]
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
25 $(
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
26 #[doc = concat!("See [`", stringify!($see), "`].")]
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
27 )?
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
28 ///
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
29 /// Sets the item's value. PAM copies the string's contents.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
30 ///
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
31 /// # Panics
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
32 ///
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
33 /// If the string contains a nul byte, this will panic.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
34 ///
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
35 fn $setter(&mut self, value: Option<&OsStr>) -> Result<()>;
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
36 };
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
37 }
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
38
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
39 /// Provides access to Items, pieces of data shared by the PAM application,
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
40 /// modules, and the framework itself.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
41 ///
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
42 /// # References
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
43 ///
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
44 #[doc = linklist!(pam_get_item: mwg, adg, _std)]
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
45 ///
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
46 #[doc = guide!(adg: "adg-interface-by-app-expected.html#adg-pam_get_item")]
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
47 #[doc = guide!(mwg: "mwg-expected-by-module-item.html#mwg-pam_get_item")]
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
48 #[doc = stdlinks!(3 pam_get_item)]
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
49 pub trait Items<'a> {
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
50 getter!(
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
51 /// The identity of the user for whom service is being requested.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
52 ///
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
53 /// Unlike [`username`](PamShared::username), this will simply get
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
54 /// the current state of the user item, and not request the username.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
55 /// While PAM usually sets this automatically in the `username` call,
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
56 /// it may be changed by a module during the PAM transaction.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
57 /// Applications should check it after each step of the PAM process.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
58 user("PAM_USER", see = PamShared::username)
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
59 );
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
60
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
61 getter!(
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
62 /// If set, the identity of the remote user logging in.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
63 ///
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
64 /// This is only as trustworthy as the application calling PAM.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
65 remote_user("PAM_RUSER", see = Self::remote_host)
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
66 );
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
67
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
68 getter!(
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
69 /// If set, the remote location where the user is coming from.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
70 ///
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
71 /// This is only as trustworthy as the application calling PAM.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
72 /// This can be combined with [`Self::remote_user`] to identify
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
73 /// the account the user is attempting to log in from,
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
74 /// with `remote_user@remote_host`.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
75 ///
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
76 /// If unset, "it is unclear where the authentication request
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
77 /// is originating from."
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
78 remote_host("PAM_RHOST", see = Self::remote_user)
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
79 );
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
80
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
81 getter!(
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
82 /// The service name, which identifies the PAM stack which is used
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
83 /// to perform authentication.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
84 service("PAM_SERVICE")
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
85 );
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
86
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
87 getter!(
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
88 /// The string used to prompt for a user's name.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
89 /// By default, this is a localized version of `login: `.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
90 user_prompt("PAM_USER_PROMPT")
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
91 );
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
92
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
93 getter!(
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
94 /// The device path of the TTY being used to log in.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
95 ///
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
96 /// This is the terminal the user is logging in on,
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
97 /// specified as the full device path (e.g. `/dev/tty0`).
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
98 /// Very old applications may use this instead of `PAM_XDISPLAY`.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
99 tty_name("PAM_TTY")
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
100 );
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
101 }
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
102
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
103 /// Provides write access to PAM Items, data shared by the PAM application,
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
104 /// the framework, and modules.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
105 ///
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
106 /// # References
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
107 ///
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
108 #[doc = linklist!(pam_set_item: mwg, adg, _std)]
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
109 ///
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
110 #[doc = guide!(adg: "adg-interface-by-app-expected.html#adg-pam_set_item")]
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
111 #[doc = guide!(mwg: "mwg-expected-by-module-item.html#mwg-pam_set_item")]
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
112 #[doc = stdlinks!(3 pam_set_item)]
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
113 pub trait ItemsMut<'a>: Items<'a> {
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
114 setter!(
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
115 /// Sets the identity of the logging-in user.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
116 ///
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
117 /// Usually this will be set during the course of
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
118 /// a [`username`](PamShared::username) call, but you may set it manually
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
119 /// or change it during the PAM process.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
120 set_user("PAM_USER", see = Items::user)
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
121 );
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
122
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
123 setter!(
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
124 /// Sets the service name. It's probably a bad idea to change this.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
125 set_service("PAM_SERVICE", see = Items::service)
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
126 );
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
127
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
128 setter!(
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
129 /// Sets the string used to prompt for a user's name.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
130 set_user_prompt("PAM_USER_PROMPT", see = Items::user_prompt)
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
131 );
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
132
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
133 setter!(
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
134 /// Sets the path to the terminal where the user is logging on.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
135 set_tty_name("PAM_TTY", see = Items::tty_name)
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
136 );
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
137
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
138 setter!(
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
139 /// Sets the identity of the remote user logging in.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
140 ///
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
141 /// This may be set by the application before making calls
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
142 /// into a PAM transaction.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
143 set_remote_user("PAM_RUSER", see = Items::remote_user)
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
144 );
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
145
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
146 setter!(
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
147 /// Sets the location where the user is coming from.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
148 ///
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
149 /// This may be set by the application before making calls
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
150 /// into a PAM transaction.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
151 set_remote_host("PAM_RHOST", see = Items::remote_host)
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
152 );
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
153
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
154 setter!(
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
155 /// Gets the user's authentication token (e.g., password).
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
156 ///
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
157 /// This is usually set automatically when
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
158 /// [`authtok`](ModuleClient::authtok) is called,
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
159 /// but can be manually set.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
160 set_authtok("PAM_AUTHTOK", see = ModuleClient::authtok_item)
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
161 );
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
162 setter!(
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
163 /// Sets the user's "old authentication token" when changing passwords.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
164 ///
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
165 /// This is usually set automatically by PAM when
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
166 /// [`old_authtok`](ModuleClient::old_authtok) is called.
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
167 set_old_authtok("PAM_OLDAUTHTOK", see = ModuleClient::old_authtok_item)
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
168 );
1bc52025156b Split PAM items into their own separate struct.
Paul Fisher <paul@pfish.zone>
parents:
diff changeset
169 }