Crates.io | rust-otp |
lib.rs | rust-otp |
version | 2.0.0 |
source | src |
created_at | 2023-12-17 22:53:13.341685 |
updated_at | 2023-12-26 16:51:20.376282 |
description | A Rust library for performing the HMAC-based One-Time Password (HOTP) and Time-based One-Time Password (TOTP) algorithms. |
homepage | https://github.com/WesleyBatista/rust-otp |
repository | https://github.com/WesleyBatista/rust-otp |
max_upload_size | |
id | 1072791 |
size | 8,865 |
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.
Just add the library as a dependency by adding the following section to your
Cargo.toml
file.
[dependencies.otp]
git = "https://github.com/WesleyBatista/rust-otp"
// first argument is the secret, second argument is the counter
println!("HOTP: {:?}", otp::make_hotp("base32secret3232".to_ascii_uppercase().as_str(), 0).unwrap());
assert_eq!(otp::make_hotp(&"base32secret3232".to_ascii_uppercase(), 0).unwrap(), 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).
println!("TOTP: {:?}", otp::make_totp(&("base32secret3232".to_ascii_uppercase()), 30, 0).unwrap());
// there is a non-zero possibility of this assertion failing
assert_ne!(otp::make_totp(&"base32secret3232".to_ascii_uppercase(), 30, 0).unwrap(), 260182_u32);
rust-otp
is licensed under the MIT license.
The full license is included in this repository in LICENSE.md
.