Mercurial > crates > nonstick
comparison src/libpam/pam_ffi.rs @ 97:efe2f5f8b5b2
Implement "stateless" application-side PAM calls.
This introduces `authenticate`, `account_management`, and `change_authtok`.
These are the three PAM operations that are stateless (i.e., they don't start
a session or modify global credentials).
| author | Paul Fisher <paul@pfish.zone> |
|---|---|
| date | Mon, 23 Jun 2025 19:10:34 -0400 |
| parents | 5ddbcada30f2 |
| children | b87100c5eed4 |
comparison
equal
deleted
inserted
replaced
| 96:f3e260f9ddcb | 97:efe2f5f8b5b2 |
|---|---|
| 74 /// - `appdata` is the `appdata` field of the [`LibPamConversation`]. | 74 /// - `appdata` is the `appdata` field of the [`LibPamConversation`]. |
| 75 pub type ConversationCallback = unsafe extern "C" fn( | 75 pub type ConversationCallback = unsafe extern "C" fn( |
| 76 num_msg: c_int, | 76 num_msg: c_int, |
| 77 questions: *const *const Question, | 77 questions: *const *const Question, |
| 78 answers: *mut *mut Answer, | 78 answers: *mut *mut Answer, |
| 79 appdata: *mut AppData, | 79 appdata: *const AppData, |
| 80 ) -> c_int; | 80 ) -> c_int; |
| 81 | 81 |
| 82 /// The type used by PAM to call back into a conversation. | 82 /// The type used by PAM to call back into a conversation. |
| 83 #[repr(C)] | 83 #[repr(C)] |
| 84 pub struct LibPamConversation<'a> { | 84 pub struct LibPamConversation<'a> { |
| 85 /// The function that is called to get information from the user. | 85 /// The function that is called to get information from the user. |
| 86 pub callback: ConversationCallback, | 86 pub callback: ConversationCallback, |
| 87 /// The pointer that will be passed as the last parameter | 87 /// The pointer that will be passed as the last parameter |
| 88 /// to the conversation callback. | 88 /// to the conversation callback. |
| 89 pub appdata: *mut AppData, | 89 pub appdata: *const AppData, |
| 90 pub life: PhantomData<&'a mut ()>, | 90 pub life: PhantomData<&'a mut ()>, |
| 91 pub _marker: Immovable, | 91 pub _marker: Immovable, |
| 92 } | 92 } |
| 93 | 93 |
| 94 /// Gets a string version of an error message. | 94 /// Gets a string version of an error message. |
