[][src]Struct libreauth::oath::TOTP

pub struct TOTP { /* fields omitted */ }

Generates and checks TOTP codes.

Methods

impl TOTP[src]

pub fn generate(&self) -> String[src]

Generate the current TOTP value.

Examples

let key_base32 = "GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ".to_owned();
let mut totp = libreauth::oath::TOTPBuilder::new()
    .base32_key(&key_base32)
    .finalize()
    .unwrap();

let code = totp.generate();
assert_eq!(code.len(), 6);

pub fn is_valid(&self, code: &str) -> bool[src]

Checks if the given code is valid. This implementation uses the double HMAC verification in order to prevent a timing side channel attack.

Examples

let key_ascii = "12345678901234567890".to_owned();
let user_code = "755224".to_owned();
let valid = libreauth::oath::TOTPBuilder::new()
    .ascii_key(&key_ascii)
    .finalize()
    .unwrap()
    .is_valid(&user_code);

pub fn key_uri_format<'a>(
    &'a self,
    issuer: &'a str,
    account_name: &'a str
) -> KeyUriBuilder<'a>
[src]

Creates the Key Uri Format according to the Google authenticator specification. This value can be used to generete QR codes which allow easy scanning by the end user. The returned KeyUriBuilder allows for additional customizations.

WARNING: The finalized value contains the secret key of the authentication process and should only be displayed to the corresponding user!

Example

let key_ascii = "12345678901234567890".to_owned();
let mut totp = libreauth::oath::TOTPBuilder::new()
    .ascii_key(&key_ascii)
    .finalize()
    .unwrap();

let uri = totp
    .key_uri_format("Provider1", "alice@example.com")
    .finalize();

assert_eq!(
    uri,
    "otpauth://totp/Provider1:alice@example.com?secret=GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ&issuer=Provider1"
);

Auto Trait Implementations

impl Unpin for TOTP

impl Sync for TOTP

impl Send for TOTP

impl UnwindSafe for TOTP

impl RefUnwindSafe for TOTP

Blanket Implementations

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 

impl<T> Same<T> for T

type Output = T

Should always be Self