comparison src/lib.rs @ 62:d83623951070

Further improve docs and put `conv` behind a feature gate.
author Paul Fisher <paul@pfish.zone>
date Wed, 21 May 2025 23:10:09 -0400
parents 05cc2c27334f
children a7aa5ca0d00d
comparison
equal deleted inserted replaced
61:5eecd797fc69 62:d83623951070
1 //! A safe, nonstick interface to PAM. 1 //! A safe, nonstick interface to PAM.
2 //! 2 //!
3 //! This implements a type-safe library to interact with PAM. 3 //! This implements a type-safe library to interact with PAM.
4 //! Currently, it implements the subset of PAM useful for implementing a module. 4 //! Currently, it implements a subset of PAM useful for implementing a module.
5 //! 5 //!
6 //! To write a new PAM module using this crate: 6 //! To write a new PAM module using this crate:
7 //! 7 //!
8 //! 1. Create a `dylib` crate. 8 //! 1. Create a `dylib` crate.
9 //! 2. Implement a subset of the functions in the [PamModule] trait 9 //! 2. Implement a subset of the functions in the [`PamModule`] trait
10 //! corresponding to what you want your module to do. 10 //! corresponding to what you want your module to do.
11 //! In the simplest case (for a password-authentication system), 11 //! In the simplest case (for a new password-based authenticator),
12 //! this will be the [PamModule::sm_authenticate] function. 12 //! this will be the [`sm_authenticate`](PamModule::sm_authenticate) function.
13 //! 3. Export your PAM module using the [pam_hooks!] macro. 13 //! 3. Export your PAM module using the [`pam_hooks!`] macro.
14 //! 4. Build and install the dynamic library. 14 //! 4. Build and install the dynamic library.
15 //! This usually entails placing it at 15 //! This usually entails placing it at
16 //! `/usr/lib/security/pam_your_module.so`, 16 //! <code>/usr/lib/security/pam_<var>your_module</var>.so</code>,
17 //! or maybe 17 //! or maybe
18 //! <code>/usr/lib/<var>your-architecture</var>/security/pam_your_module.so</code>. 18 //! <code>/usr/lib/<var>your-architecture</var>/security/pam_<var>your_module</var>.so</code>.
19 //! 19 //!
20 //! For general information on writing PAM modules, see 20 //! For general information on writing PAM modules, see
21 //! [The Linux-PAM Module Writers' Guide][module-guide] 21 //! [The Linux-PAM Module Writers' Guide][module-guide]
22 //! 22 //!
23 //! [module-guide]: https://www.chiark.greenend.org.uk/doc/libpam-doc/html/Linux-PAM_MWG.html 23 //! [module-guide]: https://www.chiark.greenend.org.uk/doc/libpam-doc/html/Linux-PAM_MWG.html
24 24
25 pub mod constants; 25 pub mod constants;
26 #[cfg(feature = "experimental")]
26 pub mod conv; 27 pub mod conv;
27 pub mod items; 28 pub mod items;
28 pub mod module; 29 pub mod module;
29 30
30 mod memory; 31 mod memory;
31 mod pam_ffi; 32 mod pam_ffi;
32 33
33 #[doc(inline)] 34 #[doc(inline)]
34 pub use crate::{ 35 pub use crate::{
35 constants::{ErrorCode, Flags, MessageStyle, Result}, 36 constants::{ErrorCode, Flags, MessageStyle, Result},
36 conv::Conversation,
37 module::{PamHandle, PamModule}, 37 module::{PamHandle, PamModule},
38 }; 38 };