rs-password-utils 0.1.0

Password utilities, writen in Rust
Documentation
# rs-password-utils

![pipeline](https://gitlab.com/astonbitecode/rs-password-utils/badges/master/pipeline.svg)

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 <count>)]
   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)