Better doc with examples
This commit is contained in:
parent
8a236fbdea
commit
c9b81c70c1
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "totp-rs"
|
name = "totp-rs"
|
||||||
version = "0.2.1"
|
version = "0.2.2"
|
||||||
authors = ["Cleo Rebert <cleo.rebert@gmail.com>"]
|
authors = ["Cleo Rebert <cleo.rebert@gmail.com>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
|
13
README.md
13
README.md
|
@ -9,3 +9,16 @@ Add it to your `Cargo.toml`:
|
||||||
[dependencies]
|
[dependencies]
|
||||||
totp-rs = "~0.2"
|
totp-rs = "~0.2"
|
||||||
```
|
```
|
||||||
|
You can then do something like:
|
||||||
|
```Rust
|
||||||
|
use totp_rs::{TOTP, Algorithm};
|
||||||
|
use std::time::SystemTime;
|
||||||
|
|
||||||
|
let username = "example".to_string();
|
||||||
|
let totp = TOTP::new(Algorithm::SHA1, 6, 1, 30, "supersecret".to_string().into_bytes());
|
||||||
|
let time = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH)?.as_secs();
|
||||||
|
let url = totp.get_url(format!("account:{}", username), "my-org.com".to_string());
|
||||||
|
println!("{}", url);
|
||||||
|
let token = totp.generate(time);
|
||||||
|
println!("{}", token);
|
||||||
|
```
|
||||||
|
|
21
src/lib.rs
21
src/lib.rs
|
@ -1,4 +1,19 @@
|
||||||
//! This library permits the creation of 2FA authentification tokens per TOTP, the verification of said tokens, with configurable time skew, validity time of each token, algorithm and number of digits!
|
//! This library permits the creation of 2FA authentification tokens per TOTP, the verification of said tokens, with configurable time skew, validity time of each token, algorithm and number of digits!
|
||||||
|
//!
|
||||||
|
//! # Examples
|
||||||
|
//!
|
||||||
|
//! ```
|
||||||
|
//! use totp_rs::{TOTP, Algorithm};
|
||||||
|
//! use std::time::SystemTime;
|
||||||
|
//!
|
||||||
|
//! let username = "example".to_string();
|
||||||
|
//! let totp = TOTP::new(Algorithm::SHA1, 6, 1, 30, "supersecret".to_string().into_bytes());
|
||||||
|
//! let time = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH)?.as_secs();
|
||||||
|
//! let url = totp.get_url(format!("account:{}", username), "my-org.com".to_string());
|
||||||
|
//! println!("{}", url);
|
||||||
|
//! let token = totp.generate(time);
|
||||||
|
//! println!("{}", token);
|
||||||
|
//! ```
|
||||||
|
|
||||||
use base32;
|
use base32;
|
||||||
use byteorder::{BigEndian, ReadBytesExt};
|
use byteorder::{BigEndian, ReadBytesExt};
|
||||||
|
@ -113,6 +128,12 @@ impl TOTP {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Will return a qrcode to automatically add a TOTP as a base64 string
|
/// Will return a qrcode to automatically add a TOTP as a base64 string
|
||||||
|
///
|
||||||
|
/// # Errors
|
||||||
|
///
|
||||||
|
/// This will return an error in case the URL gets too long to encode into a QR code
|
||||||
|
///
|
||||||
|
/// It will also return an error in case it can't encode the qr into a png. This shouldn't happen unless either the qrcode library returns malformed data, or the image library doesn't encode the data correctly
|
||||||
pub fn get_qr(
|
pub fn get_qr(
|
||||||
&self,
|
&self,
|
||||||
label: String,
|
label: String,
|
||||||
|
|
Loading…
Reference in New Issue