view src/lib.rs @ 61:5eecd797fc69

Bump version to v0.0.5.
author Paul Fisher <paul@pfish.zone>
date Wed, 21 May 2025 19:01:17 -0400
parents 05cc2c27334f
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},
};