verifyCode static method

bool verifyCode({
  1. required String secretKey,
  2. required String totpCode,
  3. int interval = 30,
})

Verifies a given TOTP code against a secret key.

  • secretKey : Secret key, generated by createSecret
  • totpCode : TOTP code from App
  • interval : Time interval in seconds, default is 30 seconds It will return true if code is correct, otherwise false

Implementation

static bool verifyCode(
    {required String secretKey,
    required String totpCode,
    int interval = 30}) {
  secretKey = secretKey.replaceAll(RegExp(r'[ -]'), '');
  int tolerance = 1;
  for (var i = -tolerance; i <= tolerance; i++) {
    final time =
        (DateTime.now().millisecondsSinceEpoch ~/ 1000 + i * interval) ~/
            interval;
    final generatedCode = _generateCodeAtTime(secretKey, time);
    if (generatedCode == totpCode) return true;
  }
  return false;
}