mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-08-02 19:46:06 -04:00
Correct issues with TOTP Setup
* Fix #3142 - Warn user when entering invalid TOTP secret key. * Fix #773 - The TOTP dialog now listens for the copy shortcut without having to press the Copy button. * Add ability to choose hash algorithm from the TOTP setup dialog * Add upgrade to "otp" attribute when custom attributes are chosen to prevent data loss Ran make format
This commit is contained in:
parent
71085838db
commit
99a2d66086
9 changed files with 211 additions and 122 deletions
|
@ -39,9 +39,10 @@ void TestTotp::testParseSecret()
|
|||
QVERIFY(!settings.isNull());
|
||||
QCOMPARE(settings->key, QString("HXDMVJECJJWSRB3HWIZR4IFUGFTMXBOZ"));
|
||||
QCOMPARE(settings->custom, false);
|
||||
QCOMPARE(settings->format, Totp::StorageFormat::OTPURL);
|
||||
QCOMPARE(settings->digits, 6u);
|
||||
QCOMPARE(settings->step, 30u);
|
||||
QCOMPARE(settings->hashType, Totp::HashType::Sha1);
|
||||
QCOMPARE(settings->algorithm, Totp::Algorithm::Sha1);
|
||||
|
||||
// OTP URL with non-default hash type
|
||||
secret = "otpauth://totp/"
|
||||
|
@ -50,10 +51,11 @@ void TestTotp::testParseSecret()
|
|||
settings = Totp::parseSettings(secret);
|
||||
QVERIFY(!settings.isNull());
|
||||
QCOMPARE(settings->key, QString("HXDMVJECJJWSRB3HWIZR4IFUGFTMXBOZ"));
|
||||
QCOMPARE(settings->custom, false);
|
||||
QCOMPARE(settings->custom, true);
|
||||
QCOMPARE(settings->format, Totp::StorageFormat::OTPURL);
|
||||
QCOMPARE(settings->digits, 6u);
|
||||
QCOMPARE(settings->step, 30u);
|
||||
QCOMPARE(settings->hashType, Totp::HashType::Sha512);
|
||||
QCOMPARE(settings->algorithm, Totp::Algorithm::Sha512);
|
||||
|
||||
// KeeOTP Parsing
|
||||
secret = "key=HXDMVJECJJWSRBY%3d&step=25&size=8&otpHashMode=Sha256";
|
||||
|
@ -61,9 +63,10 @@ void TestTotp::testParseSecret()
|
|||
QVERIFY(!settings.isNull());
|
||||
QCOMPARE(settings->key, QString("HXDMVJECJJWSRBY="));
|
||||
QCOMPARE(settings->custom, true);
|
||||
QCOMPARE(settings->format, Totp::StorageFormat::KEEOTP);
|
||||
QCOMPARE(settings->digits, 8u);
|
||||
QCOMPARE(settings->step, 25u);
|
||||
QCOMPARE(settings->hashType, Totp::HashType::Sha256);
|
||||
QCOMPARE(settings->algorithm, Totp::Algorithm::Sha256);
|
||||
|
||||
// Semi-colon delineated "TOTP Settings"
|
||||
secret = "gezdgnbvgy3tqojqgezdgnbvgy3tqojq";
|
||||
|
@ -71,9 +74,10 @@ void TestTotp::testParseSecret()
|
|||
QVERIFY(!settings.isNull());
|
||||
QCOMPARE(settings->key, QString("gezdgnbvgy3tqojqgezdgnbvgy3tqojq"));
|
||||
QCOMPARE(settings->custom, true);
|
||||
QCOMPARE(settings->format, Totp::StorageFormat::LEGACY);
|
||||
QCOMPARE(settings->digits, 8u);
|
||||
QCOMPARE(settings->step, 30u);
|
||||
QCOMPARE(settings->hashType, Totp::HashType::Sha1);
|
||||
QCOMPARE(settings->algorithm, Totp::Algorithm::Sha1);
|
||||
|
||||
// Bare secret (no "TOTP Settings" attribute)
|
||||
secret = "gezdgnbvgy3tqojqgezdgnbvgy3tqojq";
|
||||
|
@ -81,9 +85,10 @@ void TestTotp::testParseSecret()
|
|||
QVERIFY(!settings.isNull());
|
||||
QCOMPARE(settings->key, QString("gezdgnbvgy3tqojqgezdgnbvgy3tqojq"));
|
||||
QCOMPARE(settings->custom, false);
|
||||
QCOMPARE(settings->format, Totp::StorageFormat::LEGACY);
|
||||
QCOMPARE(settings->digits, 6u);
|
||||
QCOMPARE(settings->step, 30u);
|
||||
QCOMPARE(settings->hashType, Totp::HashType::Sha1);
|
||||
QCOMPARE(settings->algorithm, Totp::Algorithm::Sha1);
|
||||
}
|
||||
|
||||
void TestTotp::testTotpCode()
|
||||
|
@ -119,6 +124,7 @@ void TestTotp::testSteamTotp()
|
|||
|
||||
QCOMPARE(settings->key, QString("63BEDWCQZKTQWPESARIERL5DTTQFCJTK"));
|
||||
QCOMPARE(settings->encoder.shortName, Totp::STEAM_SHORTNAME);
|
||||
QCOMPARE(settings->format, Totp::StorageFormat::OTPURL);
|
||||
QCOMPARE(settings->digits, Totp::STEAM_DIGITS);
|
||||
QCOMPARE(settings->step, 30u);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue