[−][src]Struct libreauth::oath::TOTP
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]
&'a self,
issuer: &'a str,
account_name: &'a str
) -> KeyUriBuilder<'a>
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]
U: From<T>,
impl<T> From<T> for T
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,
fn vzip(self) -> V
impl<T> Same<T> for T
type Output = T
Should always be Self