12 releases (breaking)
| 0.8.0 | Jan 3, 2026 |
|---|---|
| 0.6.2 | Jan 3, 2026 |
| 0.6.0 | Nov 3, 2024 |
| 0.5.0 | Aug 28, 2021 |
| 0.1.0 | Jan 30, 2020 |
#151 in Authentication
16,617 downloads per month
Used in 21 crates
(14 directly)
39KB
667 lines
pinentry is a library for interacting with the pinentry binaries available on
various platforms.
Examples
Request passphrase or PIN
use pinentry::PassphraseInput;
use secrecy::SecretString;
let passphrase = if let Some(mut input) = PassphraseInput::with_default_binary() {
// pinentry binary is available!
input
.with_description("Enter new passphrase for FooBar")
.with_prompt("Passphrase:")
.with_confirmation("Confirm passphrase:", "Passphrases do not match")
.interact()
} else {
// Fall back to some other passphrase entry method.
Ok("a better passphrase than this".to_owned().into())
}?;
Ask user for confirmation
use pinentry::ConfirmationDialog;
if let Some(mut input) = ConfirmationDialog::with_default_binary() {
input
.with_ok("Definitely!")
.with_not_ok("No thanks")
.with_cancel("Maybe later")
.confirm("Would you like to play a game?")?;
};
Display a message
use pinentry::MessageDialog;
if let Some(mut input) = MessageDialog::with_default_binary() {
input.with_ok("Got it!").show_message("This will be shown with a single button.")?;
};
pinentry
pinentry is a library for interacting with the pinentry binaries available on various platforms.
Usage
Add this line to your Cargo.toml:
pinentry = "0.6"
See the documentation for examples.
pinentry requires Rust version 1.70 or greater.
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~1MB
~21K SLoC