Mercurial > crates > nonstick
comparison src/libpam/mod.rs @ 80:5aa1a010f1e8
Start using PAM headers; improve owned/borrowed distinction.
- Uses bindgen to generate bindings (only if needed).
- Gets the story together on owned vs. borrowed handles.
- Reduces number of mutable borrows in handle operation
(since `PamHandle` is neither `Send` nor `Sync`,
we never have to worry about thread safety.
- Improves a bunch of macros so we don't have our own
special syntax for docs.
- Implement question indirection for standard XSSO PAM implementations.
| author | Paul Fisher <paul@pfish.zone> |
|---|---|
| date | Tue, 10 Jun 2025 01:09:30 -0400 |
| parents | 002adfb98c5c |
| children | 5ddbcada30f2 |
comparison
equal
deleted
inserted
replaced
| 79:2128123b9406 | 80:5aa1a010f1e8 |
|---|---|
| 11 mod answer; | 11 mod answer; |
| 12 mod conversation; | 12 mod conversation; |
| 13 mod handle; | 13 mod handle; |
| 14 mod memory; | 14 mod memory; |
| 15 mod module; | 15 mod module; |
| 16 pub(crate) mod pam_ffi; | |
| 16 mod question; | 17 mod question; |
| 17 | 18 |
| 19 #[doc(inline)] | |
| 18 pub use handle::{LibPamHandle, OwnedLibPamHandle}; | 20 pub use handle::{LibPamHandle, OwnedLibPamHandle}; |
| 19 use std::ffi::{c_char, c_int, c_void}; | |
| 20 | |
| 21 #[link(name = "pam")] | |
| 22 extern "C" { | |
| 23 fn pam_get_data( | |
| 24 pamh: *mut LibPamHandle, | |
| 25 module_data_name: *const c_char, | |
| 26 data: &mut *const c_void, | |
| 27 ) -> c_int; | |
| 28 | |
| 29 fn pam_set_data( | |
| 30 pamh: *mut LibPamHandle, | |
| 31 module_data_name: *const c_char, | |
| 32 data: *const c_void, | |
| 33 cleanup: extern "C" fn(pamh: *const c_void, data: *mut c_void, error_status: c_int), | |
| 34 ) -> c_int; | |
| 35 | |
| 36 fn pam_get_item(pamh: *mut LibPamHandle, item_type: c_int, item: &mut *const c_void) -> c_int; | |
| 37 | |
| 38 fn pam_set_item(pamh: *mut LibPamHandle, item_type: c_int, item: *const c_void) -> c_int; | |
| 39 | |
| 40 fn pam_get_user( | |
| 41 pamh: *mut LibPamHandle, | |
| 42 user: &mut *const c_char, | |
| 43 prompt: *const c_char, | |
| 44 ) -> c_int; | |
| 45 | |
| 46 fn pam_get_authtok( | |
| 47 pamh: *mut LibPamHandle, | |
| 48 item_type: c_int, | |
| 49 data: &mut *const c_char, | |
| 50 prompt: *const c_char, | |
| 51 ) -> c_int; | |
| 52 | |
| 53 fn pam_end(pamh: *mut LibPamHandle, status: c_int) -> c_int; | |
| 54 | |
| 55 // TODO: pam_authenticate - app | |
| 56 // pam_setcred - app | |
| 57 // pam_acct_mgmt - app | |
| 58 // pam_chauthtok - app | |
| 59 // pam_open_session - app | |
| 60 // pam_close_session - app | |
| 61 // pam_putenv - shared | |
| 62 // pam_getenv - shared | |
| 63 // pam_getenvlist - shared | |
| 64 } |
