8 releases (breaking)

new 0.6.0 Nov 3, 2024
0.5.1 Aug 31, 2024
0.5.0 Aug 28, 2021
0.4.0 Aug 3, 2021
0.0.0 Jan 12, 2020

#176 in Authentication

Download history 367/week @ 2024-07-14 408/week @ 2024-07-21 764/week @ 2024-07-28 1165/week @ 2024-08-04 1705/week @ 2024-08-11 2475/week @ 2024-08-18 1327/week @ 2024-08-25 948/week @ 2024-09-01 1179/week @ 2024-09-08 1000/week @ 2024-09-15 924/week @ 2024-09-22 1859/week @ 2024-09-29 920/week @ 2024-10-06 1231/week @ 2024-10-13 1258/week @ 2024-10-20 1210/week @ 2024-10-27

4,695 downloads per month
Used in 6 crates

MIT/Apache

31KB
524 lines

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.5"

See the documentation for examples.

pinentry requires Rust version 1.51 or greater.

License

Licensed under either of

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.


lib.rs:

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(SecretString::new("a better passphrase than this".to_owned()))
}?;

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.")?;
};

Dependencies

~2–11MB
~135K SLoC