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 } |