Mercurial > crates > nonstick
comparison libpam-sys/src/ffi.rs @ 133:32b2a545ca3e
Add functions and constants from openpam.h.
| author | Paul Fisher <paul@pfish.zone> |
|---|---|
| date | Wed, 02 Jul 2025 03:33:09 -0400 |
| parents | a632a8874131 |
| children | 6c1e1bdb4164 |
comparison
equal
deleted
inserted
replaced
| 132:0b6a17f8c894 | 133:32b2a545ca3e |
|---|---|
| 64 msg: *const *const pam_message, | 64 msg: *const *const pam_message, |
| 65 resp: *mut *mut pam_response, | 65 resp: *mut *mut pam_response, |
| 66 appdata: *mut AppData, | 66 appdata: *mut AppData, |
| 67 ) -> c_int; | 67 ) -> c_int; |
| 68 | 68 |
| 69 /// Alias for the callback to [`pam_set_data`](crate::pam_set_data). | 69 /// Alias for the callback to [`pam_set_data`](pam_set_data). |
| 70 /// | 70 /// |
| 71 /// ```no_run | 71 /// ```no_run |
| 72 /// # use std::ffi::CString; | 72 /// # use std::ffi::CString; |
| 73 /// use libpam_sys::{CleanupCallback, pam_set_data}; | 73 /// use libpam_sys::{CleanupCallback, pam_set_data}; |
| 74 /// # use libpam_sys::pam_handle; | 74 /// # use libpam_sys::pam_handle; |
| 146 old_gid: libc::gid_t, | 146 old_gid: libc::gid_t, |
| 147 old_uid: libc::uid_t, | 147 old_uid: libc::uid_t, |
| 148 is_dropped: c_int, | 148 is_dropped: c_int, |
| 149 } | 149 } |
| 150 | 150 |
| 151 #[cfg(_hack_impl = "OpenPam")] | |
| 152 pub type pam_func_t = unsafe extern "C" fn( | |
| 153 handle: *mut pam_handle, | |
| 154 flags: c_int, | |
| 155 argc: c_int, | |
| 156 argv: *const *const c_char, | |
| 157 ) -> c_int; | |
| 158 | |
| 159 #[cfg(_hack_impl = "OpenPam")] | |
| 160 #[derive(Debug)] | |
| 161 #[repr(C)] | |
| 162 pub struct pam_module { | |
| 163 path: *mut c_char, | |
| 164 func: [pam_func_t; 6], | |
| 165 dlh: *mut c_void, | |
| 166 } | |
| 167 | |
| 168 #[cfg(_hack_impl = "OpenPam")] | |
| 169 #[derive(Debug)] | |
| 170 #[repr(C)] | |
| 171 pub struct pam_repository { | |
| 172 typ: *mut c_char, | |
| 173 scope: *mut c_void, | |
| 174 scope_len: usize, | |
| 175 } | |
| 176 | |
| 151 // These are the functions specified in X/SSO. Everybody exports them. | 177 // These are the functions specified in X/SSO. Everybody exports them. |
| 152 extern "C" { | 178 extern "C" { |
| 153 /// Account validation. | 179 /// Account validation. |
| 154 pub fn pam_acct_mgmt(pamh: *mut pam_handle, flags: c_int) -> c_int; | 180 pub fn pam_acct_mgmt(pamh: *mut pam_handle, flags: c_int) -> c_int; |
| 155 | 181 |
| 257 pamh: *mut pam_handle, | 283 pamh: *mut pam_handle, |
| 258 item: c_int, | 284 item: c_int, |
| 259 authtok: *mut *const c_char, | 285 authtok: *mut *const c_char, |
| 260 prompt: *const c_char, | 286 prompt: *const c_char, |
| 261 ) -> c_int; | 287 ) -> c_int; |
| 288 | |
| 289 pub fn pam_prompt( | |
| 290 pamh: *const pam_handle, | |
| 291 style: c_int, | |
| 292 response: *mut *mut c_char, | |
| 293 fmt: *const c_char, | |
| 294 ... | |
| 295 ) -> c_int; | |
| 296 | |
| 262 } | 297 } |
| 263 | 298 |
| 264 #[cfg(_hack_impl = "LinuxPam")] | 299 #[cfg(_hack_impl = "LinuxPam")] |
| 265 extern "C" { | 300 extern "C" { |
| 266 pub fn pam_fail_delay(pamh: *mut pam_handle, musec_delay: c_uint) -> c_int; | 301 pub fn pam_fail_delay(pamh: *mut pam_handle, musec_delay: c_uint) -> c_int; |
| 276 | 311 |
| 277 // We don't export the v-variants of the formatting functions. | 312 // We don't export the v-variants of the formatting functions. |
| 278 | 313 |
| 279 pub fn pam_syslog(pamh: *const pam_handle, priority: c_int, fmt: *const c_char, ...); | 314 pub fn pam_syslog(pamh: *const pam_handle, priority: c_int, fmt: *const c_char, ...); |
| 280 | 315 |
| 281 pub fn pam_prompt( | |
| 282 pamh: *const pam_handle, | |
| 283 style: c_int, | |
| 284 response: *mut *mut c_char, | |
| 285 fmt: *const c_char, | |
| 286 ... | |
| 287 ) -> c_int; | |
| 288 | |
| 289 pub fn pam_get_authtok_noverify( | 316 pub fn pam_get_authtok_noverify( |
| 290 pamh: *const pam_handle, | 317 pamh: *const pam_handle, |
| 291 authtok: *mut *const c_char, | 318 authtok: *mut *const c_char, |
| 292 prompt: *const c_char, | 319 prompt: *const c_char, |
| 293 ) -> c_int; | 320 ) -> c_int; |
| 371 pamh: *mut pam_handle, | 398 pamh: *mut pam_handle, |
| 372 file_name: *const c_char, | 399 file_name: *const c_char, |
| 373 key: *const c_char, | 400 key: *const c_char, |
| 374 ) -> *mut c_char; | 401 ) -> *mut c_char; |
| 375 } | 402 } |
| 403 | |
| 404 #[cfg(_hack_impl = "OpenPam")] | |
| 405 extern "C" { | |
| 406 pub fn openpam_borrow_cred(pamh: *mut pam_handle, passwd: *const libc::passwd) -> c_int; | |
| 407 | |
| 408 pub fn openpam_subst( | |
| 409 pamh: *const pam_handle, | |
| 410 buf: *mut c_char, | |
| 411 _bufsize: *mut usize, | |
| 412 _template: *const c_char, | |
| 413 ) -> c_int; | |
| 414 | |
| 415 pub fn openpam_free_data(pamh: *mut pam_handle, data: *mut c_void, status: c_int); | |
| 416 | |
| 417 pub fn openpam_free_envlist(_envlist: *mut *mut c_char); | |
| 418 | |
| 419 pub fn openpam_get_option(_pamh: *mut pam_handle, _option: *const c_char) -> *const c_char; | |
| 420 | |
| 421 pub fn openpam_restore_cred(pamh: *mut pam_handle) -> c_int; | |
| 422 | |
| 423 pub fn openpam_set_option( | |
| 424 _pamh: *mut pam_handle, | |
| 425 _option: *const c_char, | |
| 426 _value: *const c_char, | |
| 427 ) -> c_int; | |
| 428 | |
| 429 pub fn pam_error(pamh: *const pam_handle, _fmt: *const c_char, ...) -> c_int; | |
| 430 | |
| 431 pub fn pam_info(_pamh: *const pam_handle, _fmt: *const c_char, ...) -> c_int; | |
| 432 | |
| 433 pub fn openpam_readline( | |
| 434 _f: *mut libc::FILE, | |
| 435 _lineno: *mut c_int, | |
| 436 _lenp: *mut usize, | |
| 437 ) -> *mut c_char; | |
| 438 | |
| 439 pub fn openpam_readlinev( | |
| 440 _f: *mut libc::FILE, | |
| 441 _lineno: *mut c_int, | |
| 442 _lenp: *mut c_int, | |
| 443 ) -> *mut *mut c_char; | |
| 444 | |
| 445 pub fn openpam_readword( | |
| 446 _f: *mut libc::FILE, | |
| 447 _lineno: *mut c_int, | |
| 448 _lenp: *mut usize, | |
| 449 ) -> *mut c_char; | |
| 450 | |
| 451 pub fn openpam_straddch( | |
| 452 _str: *mut *mut c_char, | |
| 453 _sizep: *mut usize, | |
| 454 _lenp: *mut usize, | |
| 455 ch: c_int, | |
| 456 ) -> c_int; | |
| 457 | |
| 458 pub fn openpam_set_feature(_feature: c_int, _onoff: c_int) -> c_int; | |
| 459 | |
| 460 pub fn openpam_get_feature(_feature: c_int, _onoff: *mut c_int) -> c_int; | |
| 461 | |
| 462 pub fn _openpam_log(_level: c_int, _func: *const c_char, _fmt: *const c_char, ...); | |
| 463 | |
| 464 /// A premade conversation function that talks to the TTY. | |
| 465 /// | |
| 466 /// ```no_run | |
| 467 /// # use std::ffi::CString; | |
| 468 /// # use std::ptr; | |
| 469 /// use libpam_sys::*; | |
| 470 /// # let service = CString::new("whatever").unwrap(); | |
| 471 /// # let user = CString::new("whatever").unwrap(); | |
| 472 /// let mut handle: *mut pam_handle = ptr::null_mut(); | |
| 473 /// let mut conv = pam_conv{ | |
| 474 /// conv: openpam_ttyconv, | |
| 475 /// appdata_ptr: ptr::null_mut(), | |
| 476 /// }; | |
| 477 /// let result = unsafe { pam_start( | |
| 478 /// service.as_ptr(), user.as_ptr(), &mut conv, &mut handle | |
| 479 /// ) }; | |
| 480 /// ``` | |
| 481 pub fn openpam_ttyconv( | |
| 482 n: c_int, | |
| 483 _msg: *const *const pam_message, | |
| 484 _resp: *mut *mut pam_response, | |
| 485 _data: *mut AppData, | |
| 486 ) -> c_int; | |
| 487 | |
| 488 pub static mut openpam_ttyconv_timeout: c_int; | |
| 489 | |
| 490 /// A null conversation function. | |
| 491 /// | |
| 492 /// ```no_run | |
| 493 /// # use std::ffi::CString; | |
| 494 /// # use std::ptr; | |
| 495 /// use libpam_sys::*; | |
| 496 /// # let service = CString::new("whatever").unwrap(); | |
| 497 /// # let user = CString::new("whatever").unwrap(); | |
| 498 /// let mut handle: *mut pam_handle = ptr::null_mut(); | |
| 499 /// let mut conv = pam_conv{ | |
| 500 /// conv: openpam_nullconv, | |
| 501 /// appdata_ptr: ptr::null_mut(), | |
| 502 /// }; | |
| 503 /// let result = unsafe { pam_start( | |
| 504 /// service.as_ptr(), user.as_ptr(), &mut conv, &mut handle | |
| 505 /// ) }; | |
| 506 /// ``` | |
| 507 pub fn openpam_nullconv( | |
| 508 n: c_int, | |
| 509 _msg: *const *const pam_message, | |
| 510 _resp: *mut *mut pam_response, | |
| 511 _data: *mut AppData, | |
| 512 ) -> c_int; | |
| 513 } |
