view README.md @ 51:9d1160b02d2c

Safety and doc fixes: - Don't panic when given a string with a null character; instead return `PAM_CONV_ERR`. - Improve pattern matching and use ?s where appropriate. - Format etc.
author Paul Fisher <paul@pfish.zone>
date Sat, 03 May 2025 18:41:25 -0400
parents ce47901aab7a
children
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).
At the moment, [Linux-PAM](https://github.com/linux-pam/linux-pam) is the only supported PAM implementation.

I will make an effort not to break APIs with development, but consider it alpha, pre-1.0 software.
While the code itself should be _secure_ and mostly safe, the API may not be completely stable.

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)