6 releases (breaking)

0.5.0 Aug 28, 2021
0.4.0 Aug 3, 2021
0.3.0 Jan 11, 2021
0.2.0 Jul 13, 2020
0.0.0 Jan 12, 2020

#412 in Authentication

Download history 850/week @ 2024-02-13 702/week @ 2024-02-20 929/week @ 2024-02-27 1839/week @ 2024-03-05 1011/week @ 2024-03-12 1309/week @ 2024-03-19 1810/week @ 2024-03-26 2122/week @ 2024-04-02 1359/week @ 2024-04-09 1680/week @ 2024-04-16 1550/week @ 2024-04-23 3183/week @ 2024-04-30 2767/week @ 2024-05-07 3039/week @ 2024-05-14 1155/week @ 2024-05-21 1756/week @ 2024-05-28

9,303 downloads per month
Used in 5 crates

MIT/Apache

29KB
482 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

~3–12MB
~130K SLoC