dart_otp - Null Safety
Test
This is a fork of the dart_otp repository, thank you for this contribution. Currently the original repo is not compatible with null safety so we made an update to make it compatible with newer versions of dart, e.g. 2.12.0.
dart_otp
is a dart package to generate and verify one-time passwords that were used to implement 2FA and MFA authentication method in web applications and other login-required systems.
The package was implement based on RFC4226 (HOTP: An HMAC-Based One-Time Password Algorithm) and RFC6238 (TOTP: Time-Based One-Time Password Algorithm).
Feature
- Create and verify a HOTP object
- Create and verify a TOTP object
- Generate a
otpauth url
with the b32 encoded string - Support for OTP tokens encrypted with SHA1, SHA256, SHA384 and SHA512
Installation
Pubspec
Add dart_otp
as a dependency in your pubspec.yaml
file.
dependencies:
dart_dash_otp: ^1.3.2
Example
Time-based OTPs
import 'package:dart_otp/dart_otp.dart';
void main() {
/// default initialization for intervals of 30 seconds and 6 digit tokens
TOTP totp = TOTP(secret: "J22U6B3WIWRRBTAV");
/// initialization for custom interval and digit values
TOTP totp = TOTP(secret: "J22U6B3WIWRRBTAV", interval: 60, digits: 8);
totp.now(); /// => 432143
/// verify for the current time
totp.verify(otp: 432143); /// => true
/// verify after 30s
totp.verify(otp: 432143); /// => false
}
Counter-based OTPs
import 'package:dart_otp/dart_otp.dart';
void main() {
/// default initialization 6 digit tokens
HOTP hotp = HOTP(secret: "J22U6B3WIWRRBTAV");
/// initialization for custom digit value
HOTP hotp = HOTP(secret: "J22U6B3WIWRRBTAV", counter: 50, digits: 8);
hotp.at(counter: 0); /// => 432143
hotp.at(counter: 1); /// => 231434
hotp.at(counter: 2132); /// => 242432
/// verify with a counter
hotp.verify(otp: 242432, counter: 2132); /// => true
hotp.verify(otp: 242432, counter: 2133); /// => false
}
Release notes
See CHANGELOG.md.
Libraries
- dart_dash_otp
- @project : dart_dash_otp @author : Gin (gin.lance.inside@hotmail.com) @link : https://github.com/BrunoMiguens/dart_dash_otp @Disc : a dart package to generate and verify one-time passwords