dotp 1.0.2

  • README.md
  • CHANGELOG.md
  • Example
  • Installing
  • Versions
  • new67

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 (HOTP: An HMAC-Based One-Time Password Algorithm) and 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.

dependencies:
  dotp: ^1.0.2

Example

Time-based OTPs

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

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)

param: secret
type: String
return: TOTP
desc: generate TOTP instance.

TOTP.now()

return: String
desc: get the one-time password with current time.

TOTP.verify(String otp, [Datetime time])

param: otp
type: String
param: time
type: Datetime
return: Boolean
desc: verify the totp code.

TOTP.urlGen(String issuer)

param: issuer
type: String
return: String
desc: generate url with TOTP instance

HOTP(String secret)

param: secret
type: String
return: HOTP
desc: generate HOTP instance.

HOTP.at(int counter)

param: counter
type: int
return: String
desc: generate one-time password with counter.

HOTP.verify(String otp, int counter)

param: otp
type: String
param: counter
type: int
return: Boolean
desc: verify the hotp code.

HOTP.urlGen(String issuer)

param: issuer
type: String
return: String
desc: generate url with HOTP instance

Release notes

See CHANGELOG.md.

[1.0.1]

  • release the first stable version

[1.0.2]

  • add example file
  • add docs
  • fix dart format warning

example/example.dart

import 'package:dotp/dotp.dart';

void main() {
  TOTP totp = TOTP("J22U6B3WIWRRBTAV");
  HOTP hotp = HOTP("J22U6B3WIWRRBTAV");

  print(totp.now());
  print(hotp.at(2018));
}

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  dotp: ^1.0.2

2. Install it

You can install packages from the command line:

with pub:


$ pub get

with Flutter:


$ flutter packages get

Alternatively, your editor might support pub get or flutter packages get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:dotp/dotp.dart';
  
Version Uploaded Documentation Archive
1.0.2 Aug 22, 2018 Go to the documentation of dotp 1.0.2 Download dotp 1.0.2 archive
1.0.1 Aug 21, 2018 Go to the documentation of dotp 1.0.1 Download dotp 1.0.1 archive
Popularity:
Describes how popular the package is relative to other packages. [more]
34
Health:
Code health derived from static analysis. [more]
100
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
100
Overall:
Weighted score of the above. [more]
67
Learn more about scoring.

We analyzed this package on Sep 18, 2018, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.0.0
  • pana: 0.12.3

Platforms

Detected platforms: Flutter, web, other

No platform restriction found in primary library package:dotp/dotp.dart.

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=1.13.0 <3.0.0
base32 ^1.0.1 1.0.1
crypto ^2.0.3 2.0.6
Transitive dependencies
charcode 1.1.2
collection 1.14.11
convert 2.0.2
typed_data 1.1.6