Crate libotp

Source
Expand description

HMAC and Time-Based One-Time-Password implementations based on RFC4226 and RFC6238.

§Examples

use libotp::{totp, validate_totp};

const TOTP_STEP: u64 = 30;
const OTP_DIGITS: u32 = 8;

fn check_user_otp(user: User, guess: u32) -> Option<bool> {
    // get the shared secret from some database.
    let secret = user.get_totp_secret();

    validate_totp(guess, 1, secret, OTP_DIGITS, TOTP_STEP, 0)
}

fn get_user_otp(user: User) -> Option<u32> {
    // get shared secret
    let secret = user.get_totp_secret();

    totp(secret, OTP_DIGITS, TOTP_STEP, 0)
}

Structs§

HOTP
This is the secret that will be used to generate HMAC based one-time-passwords.
TOTP
Provides Time based One Time Passwords.

Enums§

HOTPAlgorithm

Functions§

hotp
HMAC One Time Password function
totp
Time based One Time Password function
validate_hotp
Validates HOTP inputs
validate_totp
Validates a user provided TOTP.