Skip to content

A fast and easy-to-use package to generate and verify Time-based One-Time Passwords (TOTP) that works with authenticator apps like Google Authenticator, Microsoft Authenticator, and more for your Flutter app.

License

Notifications You must be signed in to change notification settings

leonimeloo/totp_authenticator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TOTP Authenticator

A Dart package to generate and verify Time-based One-Time Passwords (TOTP) that works with authenticator apps like Google Authenticator, Microsoft Authenticator, and more.

Features

  • 🔑 Create Secret Key: Generates a secret key to be used for TOTP generation.
  • ✔️ Verify TOTP Code: Verifies the code input by the user against the generated code.
  • 🚀 Generate TOTP Code: Generates the TOTP code based on the secret key and current time.
  • 📸 Get QR Code or URI to Scan: Generates a URI or QR code for apps like Google Authenticator or Microsoft Authenticator to scan.

Tested Authenticator Apps

Logo Service Name Status
Google Authenticator ✅ Supported
Microsoft Authenticator ✅ Supported

Usage

generateSecret()

  • Generates a random secret key in Base32 format. The secret key is used to generate the TOTP codes that will be verified by authenticator apps.

Example:

String secretKey = TOTP.generateSecret();
print(secretKey);

generateTOTPCode(String secretKey, {int interval = 30})

  • Generates a TOTP (Time-based One-Time Password) code based on the provided secret key and the current time. The code changes every X seconds, where X is defined by the interval.
  • Parameters:
    • secretKey (required): The Base32-encoded secret key that was generated previously.
    • interval (optional, default: 30): The time interval (in seconds) for which each code is valid. Default is 30 seconds.

Example:

String otpCode = totp.generateTOTPCode(secretKey);
print('Generated TOTP code: $otpCode');

verifyCode(String secretKey, String otpCode, {int interval = 30})

  • Generates a TOTP (Time-based One-Time Password) code based on the provided secret key and the current time. The code changes every X seconds, where X is defined by the interval.
  • Parameters:
    • secretKey (required): The Base32-encoded secret key that was generated previously.
    • otpCode (required): The user-provided TOTP code that you want to verify.
    • interval (optional, default: 30): The time interval (in seconds) for which each code is valid. Default is 30 seconds.

Example:

bool isValid = totp.verifyCode(secretKey, otpCode);
print(isValid ? 'Valid code' : 'Invalid code');

generateQRCodeUri(String appName, String secretKey, {String issuer = 'totp_authenticator', int interval = 30})

  • Generates a URI that can be used by TOTP-based authenticator apps to scan and set up an account for the user. This URI can be used to create a QR code.

Example:

String uri = totp.generateQRCodeUri('MyApp', secretKey);
print('URI for QR Code: $uri');

generateQRCodeUrl(String appName, String secretKey, {String issuer = 'totp_authenticator'})

  • Same as generateQRCodeUri(), but it returns qr code direct url.

Example:

String qrCodeUrl = totp.generateQRCodeUrl('MyApp', secretKey);
print('QR Code URL: $qrCodeUrl');

//Image.Network(qrCodeUrl);

License

  • This project is licensed under the MIT License. See the LICENSE file for details.

Issues or Pull requests

Report Issues

Please report any issues or bugs to our GitHub repository.

© 2024 Leoni Melo, Licensed under MIT

About

A fast and easy-to-use package to generate and verify Time-based One-Time Passwords (TOTP) that works with authenticator apps like Google Authenticator, Microsoft Authenticator, and more for your Flutter app.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages