diff --git a/README.md b/README.md index bbde19b..0eae427 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,8 @@

Argon2-Creds

- Argon2-Creds provides a convenient abstractions for managing - credentials + Argon2-Creds - convenient abstractions for managing credentials

-

[![Documentation](https://img.shields.io/badge/docs-master-blue)](https://realaravinth.github.io/argon2-creds/argon2_creds/index.html) ![CI (Linux)]() @@ -22,3 +20,72 @@ [Blacklist](https://github.com/shuttlecraft/The-Big-Username-Blacklist) - [x] Profanity filter - [x] Email validation(Regex validation not verification) + +## Usage: + +Add this to your `Cargo.toml`: + +```toml +argon2-creds = { version = "0.1", git = "https://github.com/realaravinth/argon2-creds" } +``` + +## Examples: + +1. The easiest way to use this crate is with the default configuration. See `Default` + implementation for the default configuration. + + ```rust + use argon2_creds::Config; + + fn main() { + let config = Config::default(); + + let password = "ironmansucks"; + let hash = config.password(password).unwrap(); + + // email validation + config.email(Some("batman@we.net")).unwrap(); + + // process username + let username = config.username("Realaravinth").unwrap(); // process username + + // generate hash + let hash = config.password(password).unwrap(); + + assert_eq!(username, "realaravinth"); + assert!(Config::verify(&hash, password).unwrap(), "verify hahsing"); + } + ``` + +2. To gain fine-grained control over how credentials are managed, consider using + [ConfigBuilder]: + +```rust + use argon2_creds::{ConfigBuilder, Config}; + + fn main() { + let config = ConfigBuilder::default() + .salt_length(32) + .username_case_mapped(false) + .profanity(true) + .blacklist(false) + .argon2(argon2::Config::default()) + .build() + .unwrap(); + + let password = "ironmansucks"; + let hash = config.password(password).unwrap(); + + // email validation + config.email(Some("batman@we.net")).unwrap(); + + // process username + let username = config.username("Realaravinth").unwrap(); // process username + + // generate hash + let hash = config.password(password).unwrap(); + + assert_eq!(username, "realaravinth"); + assert!(Config::verify(&hash, password).unwrap(), "verify hahsing"); + } +``` diff --git a/examples/complex.rs b/examples/complex.rs new file mode 100644 index 0000000..be56bc0 --- /dev/null +++ b/examples/complex.rs @@ -0,0 +1,29 @@ +//To gain fine-grained control over how credentials are managed, consider using ConfigBuilder: + +use argon2_creds::{Config, ConfigBuilder}; + +fn main() { + let config = ConfigBuilder::default() + .salt_length(32) + .username_case_mapped(false) + .profanity(true) + .blacklist(false) + .argon2(argon2::Config::default()) + .build() + .unwrap(); + + let password = "ironmansucks"; + let hash = config.password(password).unwrap(); + + // email validation + config.email(Some("batman@we.net")).unwrap(); + + // process username + let username = config.username("Realaravinth").unwrap(); // process username + + // generate hash + let hash = config.password(password).unwrap(); + + assert_eq!(username, "realaravinth"); + assert!(Config::verify(&hash, password).unwrap(), "verify hahsing"); +} diff --git a/examples/simple.rs b/examples/simple.rs new file mode 100644 index 0000000..44d049d --- /dev/null +++ b/examples/simple.rs @@ -0,0 +1,22 @@ +// The easiest way to use this crate is with the default configuration. See `Default` +// implementation for the default configuration. + +use argon2_creds::Config; + +fn main() { + let config = Config::default(); + + let password = "ironmansucks"; + + // email validation + config.email(Some("batman@we.net")).unwrap(); + + // process username + let username = config.username("Realaravinth").unwrap(); // process username + + // generate hash + let hash = config.password(password).unwrap(); + + assert_eq!(username, "realaravinth"); + assert!(Config::verify(&hash, password).unwrap(), "verify hahsing"); +}