Crates.io | google-authenticator |
lib.rs | google-authenticator |
version | 0.4.2 |
source | src |
created_at | 2018-04-13 17:31:37.356583 |
updated_at | 2023-05-06 18:31:21.26335 |
description | This Rust crate can be used to interact with the Google Authenticator mobile app for 2-factor-authentication. |
homepage | https://github.com/hanskorg/google-authenticator-rust.git |
repository | https://github.com/hanskorg/google-authenticator-rust.git |
max_upload_size | |
id | 60459 |
size | 36,555 |
This Rust crate can be used to interact with the Google Authenticator mobile app for 2-factor-authentication.This Rust crates can generate secrets, generate codes, validate codes and present a QR-Code for scanning the secret.It implements TOTP according to RFC6238 More about Google GoogleAuthenticator see:Wiki
Add this to your Cargo.toml
:
[dependencies]
google-authenticator = "0.4"
You can find the header file from src/authenticator.h, and then build the lib for your target.
How to make header file and build lib, you can refer to the following case.
Tools you may need: rust-lipo cbingen
## gen c/c++ header file
cbindgen ./ -l c --output src/authenticator.h
## clone registry
git clone https://github.com/hanskorg/google-authenticator-rust.git && cd google-authenticator-rust
## change Cargo.toml
crate-type = ["staticlib","cdylib"]
required-features = ["with-qrcode","clib"]
## build for MacOS and IOS
cargo lipo --features with-qrcode --targets aarch64-apple-darwin x86_64-apple-darwin aarch64-apple-ios
## build for linux musl
cargo build --all-features --lib --release --target x86_64-unknown-linux-musl
use google_authenticator::GoogleAuthenticator;
fn main() {
let secret = "I3VFM3JKMNDJCDH5BMBEEQAW6KJ6NOE3";
let auth = GoogleAuthenticator::new();
// let secret = auth.create_secret(32);
let code = auth.get_code(&secret, 0).unwrap();
assert!(auth.verify_code(&secret, &code, 1, 0).unwrap());
}
#[macro_use]
extern crate google_authenticator;
use google_authenticator::GA_AUTH;
fn main() {
let secret = "I3VFM3JKMNDJCDH5BMBEEQAW6KJ6NOE3";
if let Ok(code) = get_code!(&secret) {
println!("{}", verify_code!(&secret, &code, 1, 0));
}
}
use google_authenticator::{GoogleAuthenticator, ErrorCorrectionLevel};
fn main() {
let auth = GoogleAuthenticator::new();
let secret = "I3VFM3JKMNDJCDH5BMBEEQAW6KJ6NOE3";
println!(
"{}",
auth.qr_code_url(secret, "qr_code", "name", 200, 200, ErrorCorrectionLevel::High)
);
}
#[macro_use]
extern crate google_authenticator;
use google_authenticator::GA_AUTH;
fn main() {
let secret = "I3VFM3JKMNDJCDH5BMBEEQAW6KJ6NOE3";
println!("{}", qr_code_url!(&secret, "qr_code", "name"));
}
Change Cargo.toml
to
[dependencies.google-authenticator]
version = "0.4"
features = ["with-qrcode"]
use google_authenticator::{GoogleAuthenticator, ErrorCorrectionLevel};
fn main() {
let secret = "I3VFM3JKMNDJCDH5BMBEEQAW6KJ6NOE3";
let auth = GoogleAuthenticator::new();
println!(
"{}",
auth.qr_code(secret, "qr_code", "name", 200, 200, ErrorCorrectionLevel::High)
.unwrap()
);
}
#[macro_use]
extern crate google_authenticator;
use google_authenticator::GA_AUTH;
fn main() {
let secret = "I3VFM3JKMNDJCDH5BMBEEQAW6KJ6NOE3";
if let Ok(url) = qr_code!(&secret, "qr_code", "name") {
println!("{}", url);
}
}
You can post a new issue for help.