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:

```rust use std::time::{SystemTime, UNIXEPOCH}; use totplite::{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().durationsince(UNIXEPOCH).unwrap().as_secs();

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

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

Resources

License: MIT