# rs-password-utils ![pipeline](https://gitlab.com/astonbitecode/rs-password-utils/badges/master/pipeline.svg) [![crates.io](https://img.shields.io/crates/v/rs-password-utils.svg)](https://crates.io/crates/rs-password-utils) This library contains password utilities and is written in [Rust](https://www.rust-lang.org/). Currently it offers: * Checking passwords against [pwned passwords list](https://www.troyhunt.com/ive-just-launched-pwned-passwords-version-2/). The check implementation leverages the [k-anonimity API](https://blog.cloudflare.com/validating-leaked-passwords-with-k-anonymity/) and therefore, the password is not used in the API calls in any form (not even hashed). * [Diceware](https://theworld.com/~reinhold/diceware.html) for generating passphrases ## Usage The utility can be used as a library, or as an executable: ### Library ```rust extern crate rs_password_utils; use std::result::Result; #[tokio::main] async fn main() -> Result<(), rs_password_utils::PasswordUtilsError> { let is_pwned = rs_password_utils::pwned::is_pwned("test").await?; println!("The password is pwned: {}", is_pwned); Ok(()) } ``` ### Executable Having rust [installed](https://www.rust-lang.org/tools/install), you may install rs-password-utils using cargo: * From crates.io: `cargo install rs-password-utils --features executable` * From gitlab: `cargo install --git https://gitlab.com/astonbitecode/rs-password-utils.git --features executable` When the installation completes, issuing the following command: `rs-password-utils --help` should give you an output like: ```rust Password utilities, written in Rust. Usage: rs-password-utils pwned rs-password-utils dice [(-w )] rs-password-utils [-h] Options: -w --words The amount of words that should comprise the passphrase -h --help Show this screen. ``` ## License At your option, under: * Apache License, Version 2.0, (http://www.apache.org/licenses/LICENSE-2.0) * MIT license (http://opensource.org/licenses/MIT)