OTP generation and validation library.
HmacSha1
, HmacSha256
, and HmacSha512
digestsNote: HmacSha1
support is provided for RFC compliance.
It is recommended to use HmacSha256
or HmacSha512
for better security.
To use the rusotp
library for HOTP, follow these steps:
Add rusotp
to your Cargo.toml
:
[dependencies]
rusotp = "0.2.0"
Import the necessary components in your Rust code:
use rusotp::{Algorithm, HOTP};
Create a new HOTP instance and generate an OTP:
const ALGORITHM: Algorithm = Algorithm::SHA256;
const SECRET: &str = "12345678901234567890";
const LENGTH: u8 = 6;
const COUNTER: u64 = 1;
let hotp = HOTP::new(ALGORITHM, SECRET, LENGTH, 10).unwrap();
let otp = hotp.generate(COUNTER).unwrap();
println!("Generated OTP: {}", otp);
Verify an OTP:
let is_valid = hotp.verify("287082", COUNTER, 0).unwrap();
println!("Is OTP valid? {}", is_valid);
Generate a provisioning URI for use with OTP apps like Google Authenticator:
const ISSUER: &str = "MyService";
const NAME: &str = "user@example.com";
let uri = hotp.provisioning_uri(ISSUER, NAME, COUNTER).unwrap();
println!("Provisioning URI: {}", uri);
For more examples and detailed usage, refer to the documentation.
To use the rusotp
library, follow these steps:
Add rusotp
to your Cargo.toml
:
[dependencies]
rusotp = "0.2.0"
Import the necessary components in your Rust code:
use rusotp::{Algorithm, TOTP};
Create a new TOTP instance and generate an OTP:
const ALGORITHM: Algorithm = Algorithm::SHA256;
const SECRET: &str = "12345678901234567890";
const LENGTH: u8 = 6;
const RADIX: u8 = 10;
const INTERVAL: u8 = 30;
let totp = TOTP::new(ALGORITHM, SECRET, LENGTH, RADIX, INTERVAL).unwrap();
let otp = totp.generate().unwrap();
println!("Generated OTP: {}", otp);
Verify an OTP:
let is_valid = totp.verify(&otp);
println!("Is OTP valid? {}", is_valid);
Generate a provisioning URI for use with OTP apps like Google Authenticator:
const ISSUER: &str = "MyService";
const NAME: &str = "user@example.com";
let uri = totp.provisioning_uri(ISSUER, NAME).unwrap();
println!("Provisioning URI: {}", uri);
For more examples and detailed usage, refer to the documentation.
We welcome contributions to the rusotp project! Here are some ways you can help:
git checkout -b my-new-feature
)git commit -am 'Add some feature'
)git push origin my-new-feature
)Please make sure your contributions adhere to our Code of Conduct.