https://github.com/lancegin/dotp
Dart One-Time Password module.
https://github.com/lancegin/dotp
dart2 hotp otp rfc-4226 rfc-6238 totp
Last synced: 8 months ago
JSON representation
Dart One-Time Password module.
- Host: GitHub
- URL: https://github.com/lancegin/dotp
- Owner: LanceGin
- License: mit
- Created: 2018-08-18T15:07:49.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2021-04-06T11:09:39.000Z (over 4 years ago)
- Last Synced: 2023-08-20T21:49:01.766Z (about 2 years ago)
- Topics: dart2, hotp, otp, rfc-4226, rfc-6238, totp
- Language: Dart
- Size: 186 KB
- Stars: 19
- Watchers: 2
- Forks: 16
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# dotp
`dotp` 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](https://tools.ietf.org/html/rfc4226) (HOTP: An HMAC-Based One-Time Password Algorithm) and [RFC6238](https://tools.ietf.org/html/rfc6238) (TOTP: Time-Based One-Time Password Algorithm).
### Feature
* Generate a `otpauth url` with the b32 encoded string
* Create a HOTP object with verification
* Verify a HOTP token
* Create a TOTP object with verification
* Verify a TOTP token### Installation
#### Pubspec
Add `dotp` as a dependency in your `pubspec.yaml` file.
```yaml
dependencies:
dotp: ^1.0.2
```### Example
#### Time-based OTPs
```dart
import 'package:dotp/dotp.dart';void main() {
TOTP totp = TOTP("J22U6B3WIWRRBTAV");
totp.now(); /// => 432143
/// verify for the current time
totp.verify(432143); /// => true
/// verify after 30s
totp.verify(432143); /// => false
}
```#### Counter-based OTPs
```dart
import 'package:dotp/dotp.dart';void main() {
HOTP hotp = HOTP("J22U6B3WIWRRBTAV");
hotp.at(0); /// => 432143
hotp.at(1); /// => 231434
hotp.at(2132); /// => 242432
/// verify with a counter
hotp.verify(242432, 2132); /// => true
hotp.verify(242432, 2133); /// => false
}
```### Api
#### • [TOTP(String secret)](https://github.com/LanceGin/dotp/blob/master/lib/src/totp.dart#L23)
param: secret
type: String
return: TOTP
desc: generate TOTP instance.#### • [TOTP.now()](https://github.com/LanceGin/dotp/blob/master/lib/src/totp.dart#L36)
return: String
desc: get the one-time password with current time.#### • [TOTP.verify(String otp, [Datetime time])](https://github.com/LanceGin/dotp/blob/master/lib/src/totp.dart#L64)
param: otp
type: String
param: time
type: Datetime
return: Boolean
desc: verify the totp code.#### • [TOTP.urlGen(String issuer)](https://github.com/LanceGin/dotp/blob/master/lib/src/totp.dart#L85)
param: issuer
type: String
return: String
desc: generate url with TOTP instance#### • [HOTP(String secret)](https://github.com/LanceGin/dotp/blob/master/lib/src/hotp.dart#L10)
param: secret
type: String
return: HOTP
desc: generate HOTP instance.#### • [HOTP.at(int counter)](https://github.com/LanceGin/dotp/blob/master/lib/src/hotp.dart#L25)
param: counter
type: int
return: String
desc: generate one-time password with counter.#### • [HOTP.verify(String otp, int counter)](https://github.com/LanceGin/dotp/blob/master/lib/src/hotp.dart#L50)
param: otp
type: String
param: counter
type: int
return: Boolean
desc: verify the hotp code.#### • [HOTP.urlGen(String issuer)](https://github.com/LanceGin/dotp/blob/master/lib/src/hotp.dart#L69)
param: issuer
type: String
return: String
desc: generate url with HOTP instance### Release notes
See [CHANGELOG.md](./CHANGELOG.md).