Mercurial > crates > nonstick
view src/lib.rs @ 60:05cc2c27334f
The Big Refactor: clean up docs and exports.
- Brings the most important symbols in the library to the root
with `pub use` statements.
- Expands and updates documentation.
- Rearranges things extensively to make the external interface nicer
and make the structure easier to understand.
- Renames a few things (e.g. `Result`).
author | Paul Fisher <paul@pfish.zone> |
---|---|
date | Wed, 21 May 2025 19:00:51 -0400 |
parents | 2a5c83d04b93 |
children | d83623951070 |
line wrap: on
line source
//! A safe, nonstick interface to PAM. //! //! This implements a type-safe library to interact with PAM. //! Currently, it implements the subset of PAM useful for implementing a module. //! //! To write a new PAM module using this crate: //! //! 1. Create a `dylib` crate. //! 2. Implement a subset of the functions in the [PamModule] trait //! corresponding to what you want your module to do. //! In the simplest case (for a password-authentication system), //! this will be the [PamModule::sm_authenticate] function. //! 3. Export your PAM module using the [pam_hooks!] macro. //! 4. Build and install the dynamic library. //! This usually entails placing it at //! `/usr/lib/security/pam_your_module.so`, //! or maybe //! <code>/usr/lib/<var>your-architecture</var>/security/pam_your_module.so</code>. //! //! For general information on writing PAM modules, see //! [The Linux-PAM Module Writers' Guide][module-guide] //! //! [module-guide]: https://www.chiark.greenend.org.uk/doc/libpam-doc/html/Linux-PAM_MWG.html pub mod constants; pub mod conv; pub mod items; pub mod module; mod memory; mod pam_ffi; #[doc(inline)] pub use crate::{ constants::{ErrorCode, Flags, MessageStyle, Result}, conv::Conversation, module::{PamHandle, PamModule}, };