diff --git a/Cargo.toml b/Cargo.toml index b162a37..43828b1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,12 @@ [package] name = "tag_password" +description = "An advanced Rust library leveraging the type system to statically determine password hashing status for enhanced security." +license = "MIT" +license-file = "LICENSE" +documentation = "https://docs.rs/tag_password" +homepage = "https://devs.transitions.ag/" +repository = "https://github.com/TransitionsAg/tag_password" +readme = "README.md" version = "0.1.0" edition = "2021" diff --git a/src/lib.rs b/src/lib.rs index 860e491..c533124 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,3 +1,47 @@ +//! # Transitions' password type +//! +//! `tag_password` is an simple Rust library designed to enhance security by leveraging the type system to +//! statically determine password hashing status. This approach ensures a clear distinction between plain text +//! and hashed passwords in your code, allowing for stronger security measures. +//! +//! ## Features +//! +//! - **Type-based Password Markers:** Two marker types, Hashed and Plain, are used to distinguish between +//! hashed and plain text passwords. These zero-sized types, combined with PhantomData, facilitate compile-time +//! checks for password status. +//! +//! - **Argon2 Hashing (Optional):** If the argon2 feature is enabled, the library provides hashing functionality +//! using Argon2, a secure password hashing algorithm. +//! +//! ## Usage +//! +//! Add the library to your current project using Cargo: +//! +//! ```sh +//! cargo add tag_password +//! ``` +//! +//! Then create a new password and operate on them +//! +//! ```rust +//! use tag_password::Password; +//! +//! // Create a new plain text password +//! let plain_password = Password::new("my_password"); +//! // Hash the plain text password using Argon2 +//! let hashed_password = plain_password +//! .hash(None, &salt) +//! .expect("Hashing should not fail."); +//! // Verify a hashed password against a plain text password +//! hashed_password +//! .verify(None, plain_password) +//! .expect("Verification should not fail."); +//! ``` +//! +//! ## License +//! +//! This project is licensed under the [MIT License](LICENSE). + #[cfg(feature = "argon2")] use argon2::{password_hash::Salt, Argon2, PasswordHash, PasswordHasher, PasswordVerifier}; use std::{