# 🍳 nonstick
Nonstick lets you use PAM (Pluggable Authentication Modules) from Rust without getting stuck in unsafe code.
## Status
This 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).
A very immature implementation of the PAM Conversation structure is gated behind the `experimental` feature.
At the moment, [Linux-PAM](https://github.com/linux-pam/linux-pam) is the only supported PAM implementation.
*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).
APIs are likely to break before v0.1.0, and thereafter should stabilize to an eventual 1.0 release.
Goals include:
- Bindings for PAM clients.
- A robust and mature implementation of Conversation.
- 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)