6 stable releases

2.0.1 Oct 30, 2023
2.0.0 May 20, 2022
1.1.0 May 18, 2022
1.0.3 May 28, 2021
1.0.1 Aug 21, 2020

#47 in Authentication

Download history 1886/week @ 2023-11-02 1764/week @ 2023-11-09 1855/week @ 2023-11-16 1205/week @ 2023-11-23 1723/week @ 2023-11-30 2313/week @ 2023-12-07 2210/week @ 2023-12-14 1092/week @ 2023-12-21 1573/week @ 2023-12-28 1794/week @ 2024-01-04 1786/week @ 2024-01-11 1613/week @ 2024-01-18 1966/week @ 2024-01-25 2011/week @ 2024-02-01 2030/week @ 2024-02-08 1591/week @ 2024-02-15

7,864 downloads per month
Used in 11 crates (8 directly)

MIT license

11KB
130 lines

Workflow Status

totp-lite

A simple, correct TOTP library.

Time-based One-time Passwords are a useful way to authenticate a client, since a valid password expires long before it could ever be guessed by an attacker. This library provides an implementation of TOTP that matches its specification RFC6238, along with a simple interface.

Usage

The totp function is likely what you need. It uses the default time step of 30 seconds and produces 8 digits of output:

use std::time::{SystemTime, UNIX_EPOCH};
use totp_lite::{totp, Sha512};

// Negotiated between you and the authenticating service.
let password: &[u8] = b"secret";

// The number of seconds since the Unix Epoch.
let seconds: u64 = SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_secs();

// Specify the desired Hash algorithm via a type parameter.
// `Sha1` and `Sha256` are also available.
let result: String = totp::<Sha512>(password, seconds);
assert_eq!(8, result.len());

For full control over how the algorithm is configured, consider totp_custom.

Resources

License: MIT

Dependencies

~540KB
~11K SLoC