view README.md @ 59:3f4a77aa88be

Fix string copyting and improve error situation. This change is too big and includes several things: - Fix copying strings from PAM by fixing const and mut on pam funcs. - Improve error enums by simplifying conversions and removing unnecessary and ambiguous "success" variants. - Make a bunch of casts nicer. - Assorted other cleanup.
author Paul Fisher <paul@pfish.zone>
date Wed, 21 May 2025 00:27:18 -0400
parents 2a5c83d04b93
children d83623951070
line wrap: on
line source

# 🍳 nonstick

Nonstick lets you use PAM (Pluggable Authentication Modules) from Rust without having to deal with icky unsafe code.

## Status

It is currently very incomplete.
It only provides functionality for developing your own PAM authentication module (i.e., a backend that PAM calls to authenticate a user or do something similar).
If you’re looking for a library to implement a PAM client (i.e., something that authenticates using PAM), consider the [`pam` crate](https://crates.io/crates/pam).
At the moment, [Linux-PAM](https://github.com/linux-pam/linux-pam) is the only supported PAM implementation.

An earlier version of this suggested that I would try not to break APIs.
This was optimistic on my part; it is likely APIs will break before v0.1.0, after which I _will_ try to break things _less_.

Goals include:

- Bindings for PAM clients.
- Support for non–Linux-PAM implementations.

## Credits

This is a direct fork of [Anthony Nowell](http://anowell.com/)’s [`pam-rs`/`pam-bindings` crate](https://crates.io/crates/pam-bindings).
`pam-rs` was in turn inspired by:

- [`rust-pam` by tozny](https://github.com/tozny/rust-pam)
- [`pam_groupmap` by ndenev](https://github.com/ndenev/pam_groupmap)
- [`pam-http` by beatgammit](https://github.com/beatgammit/pam-http)