/rust-otp

A Rust library for performing the HMAC-based One-Time Password (HOTP) and Time-based One-Time Password (TOTP) algorithms.

Primary LanguageRustMIT LicenseMIT

rust-otp

Build Status

rust-otp is a Rust library for performing the HMAC-based One-time Passsword Algorithm as per RFC 4226 and the Time-based One-time Password Algorithm as per RFC 6238. These are also the algorithms many mobile-based 2FA apps, such as Google Authenticator and Authy, use to generate 2FA codes.

Installation

Just add the library as a dependency by adding the following section to your Cargo.toml file.

[dependencies.otp]

git = "https://github.com/dcabanaw/rust-otp"

Usage

// first argument is the secret, second argument is the counter
assert_eq!(make_hotp("base32secret3232", 0), Some(260182));

// first argument is the secret, followed by the time step in seconds (Google
// Authenticator uses a time step of 30), and then the skew in seconds
// (often used when calculating HOTPs for a sequence of consecutive
// time intervals, to deal with potential latency and desynchronization).
assert_eq!(make_totp("base32secret3232", 30, 0), Some(260182)); // true on Unix epoch

License

rust-otp is licensed under the MIT license. The full license is included in this repository in LICENSE.md.