fix: treat steam host same as totp with 5 digits
This commit is contained in:
parent
a6ee7ac2bd
commit
1418741229
|
@ -2,6 +2,7 @@ import 'package:ente_auth/utils/totp_util.dart';
|
||||||
|
|
||||||
class Code {
|
class Code {
|
||||||
static const defaultDigits = 6;
|
static const defaultDigits = 6;
|
||||||
|
static const steamDigits = 5;
|
||||||
static const defaultPeriod = 30;
|
static const defaultPeriod = 30;
|
||||||
|
|
||||||
int? generatedID;
|
int? generatedID;
|
||||||
|
@ -67,10 +68,12 @@ class Code {
|
||||||
String issuer,
|
String issuer,
|
||||||
String secret,
|
String secret,
|
||||||
) {
|
) {
|
||||||
|
final digits =
|
||||||
|
issuer.toLowerCase() == "steam" ? steamDigits : defaultDigits;
|
||||||
return Code(
|
return Code(
|
||||||
account,
|
account,
|
||||||
issuer,
|
issuer,
|
||||||
defaultDigits,
|
digits,
|
||||||
defaultPeriod,
|
defaultPeriod,
|
||||||
secret,
|
secret,
|
||||||
Algorithm.sha1,
|
Algorithm.sha1,
|
||||||
|
@ -82,10 +85,13 @@ class Code {
|
||||||
|
|
||||||
static Code fromRawData(String rawData) {
|
static Code fromRawData(String rawData) {
|
||||||
Uri uri = Uri.parse(rawData);
|
Uri uri = Uri.parse(rawData);
|
||||||
|
final issuer = _getIssuer(uri);
|
||||||
|
final digits = issuer.toLowerCase() == "stream" ? 5 : _getDigits(uri);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return Code(
|
return Code(
|
||||||
_getAccount(uri),
|
_getAccount(uri),
|
||||||
_getIssuer(uri),
|
issuer,
|
||||||
_getDigits(uri),
|
_getDigits(uri),
|
||||||
_getPeriod(uri),
|
_getPeriod(uri),
|
||||||
getSanitizedSecret(uri.queryParameters['secret']!),
|
getSanitizedSecret(uri.queryParameters['secret']!),
|
||||||
|
@ -184,7 +190,7 @@ class Code {
|
||||||
}
|
}
|
||||||
|
|
||||||
static Type _getType(Uri uri) {
|
static Type _getType(Uri uri) {
|
||||||
if (uri.host == "totp") {
|
if (uri.host == "totp" || uri.host == "steam") {
|
||||||
return Type.totp;
|
return Type.totp;
|
||||||
} else if (uri.host == "hotp") {
|
} else if (uri.host == "hotp") {
|
||||||
return Type.hotp;
|
return Type.hotp;
|
||||||
|
|
|
@ -3,13 +3,13 @@ import 'package:flutter/foundation.dart';
|
||||||
import 'package:otp/otp.dart' as otp;
|
import 'package:otp/otp.dart' as otp;
|
||||||
|
|
||||||
String getOTP(Code code) {
|
String getOTP(Code code) {
|
||||||
if(code.type == Type.hotp) {
|
if (code.type == Type.hotp) {
|
||||||
return _getHOTPCode(code);
|
return _getHOTPCode(code);
|
||||||
}
|
}
|
||||||
return otp.OTP.generateTOTPCodeString(
|
return otp.OTP.generateTOTPCodeString(
|
||||||
getSanitizedSecret(code.secret),
|
getSanitizedSecret(code.secret),
|
||||||
DateTime.now().millisecondsSinceEpoch,
|
DateTime.now().millisecondsSinceEpoch,
|
||||||
length: code.digits,
|
length: code.issuer.toLowerCase() == "steam" ? 5 : code.digits,
|
||||||
interval: code.period,
|
interval: code.period,
|
||||||
algorithm: _getAlgorithm(code),
|
algorithm: _getAlgorithm(code),
|
||||||
isGoogle: true,
|
isGoogle: true,
|
||||||
|
@ -20,7 +20,7 @@ String _getHOTPCode(Code code) {
|
||||||
return otp.OTP.generateHOTPCodeString(
|
return otp.OTP.generateHOTPCodeString(
|
||||||
getSanitizedSecret(code.secret),
|
getSanitizedSecret(code.secret),
|
||||||
code.counter,
|
code.counter,
|
||||||
length: code.digits,
|
length: code.issuer.toLowerCase() == "steam" ? 5 : code.digits,
|
||||||
algorithm: _getAlgorithm(code),
|
algorithm: _getAlgorithm(code),
|
||||||
isGoogle: true,
|
isGoogle: true,
|
||||||
);
|
);
|
||||||
|
@ -30,7 +30,7 @@ String getNextTotp(Code code) {
|
||||||
return otp.OTP.generateTOTPCodeString(
|
return otp.OTP.generateTOTPCodeString(
|
||||||
getSanitizedSecret(code.secret),
|
getSanitizedSecret(code.secret),
|
||||||
DateTime.now().millisecondsSinceEpoch + code.period * 1000,
|
DateTime.now().millisecondsSinceEpoch + code.period * 1000,
|
||||||
length: code.digits,
|
length: code.issuer.toLowerCase() == "stream" ? 5 : code.digits,
|
||||||
interval: code.period,
|
interval: code.period,
|
||||||
algorithm: _getAlgorithm(code),
|
algorithm: _getAlgorithm(code),
|
||||||
isGoogle: true,
|
isGoogle: true,
|
||||||
|
@ -60,4 +60,4 @@ String safeDecode(String value) {
|
||||||
debugPrint("Failed to decode $e");
|
debugPrint("Failed to decode $e");
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue