mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-09-22 13:54:41 -04:00
Correct Argon2 settings when creating new database
* Argon2 default parallelism settings were set to the number of threads on the computer. That is excessive on high cpu count computers.
This commit is contained in:
parent
74326616c5
commit
20c65fbd1e
3 changed files with 27 additions and 18 deletions
|
@ -159,12 +159,7 @@ void DatabaseSettingsWidgetEncryption::initialize()
|
|||
// Set up KDF algorithms
|
||||
loadKdfAlgorithms();
|
||||
|
||||
// Perform Benchmark if requested
|
||||
if (isNewDatabase) {
|
||||
if (IS_ARGON2(m_ui->kdfComboBox->currentData())) {
|
||||
m_ui->memorySpinBox->setValue(16);
|
||||
m_ui->parallelismSpinBox->setValue(2);
|
||||
}
|
||||
benchmarkTransformRounds();
|
||||
}
|
||||
|
||||
|
@ -225,7 +220,7 @@ void DatabaseSettingsWidgetEncryption::loadKdfParameters()
|
|||
// Set Argon2 parameters
|
||||
auto argon2Kdf = kdf.staticCast<Argon2Kdf>();
|
||||
m_ui->transformRoundsSpinBox->setValue(argon2Kdf->rounds());
|
||||
m_ui->memorySpinBox->setValue(static_cast<int>(argon2Kdf->memory()) / (1 << 10));
|
||||
m_ui->memorySpinBox->setValue(Argon2Kdf::toMebibytes(argon2Kdf->memory()));
|
||||
m_ui->parallelismSpinBox->setValue(argon2Kdf->parallelism());
|
||||
} else if (!dbIsArgon2 && !kdfIsArgon2) {
|
||||
// Set AES KDF parameters
|
||||
|
@ -233,8 +228,8 @@ void DatabaseSettingsWidgetEncryption::loadKdfParameters()
|
|||
} else {
|
||||
// Set reasonable defaults and then benchmark
|
||||
if (kdfIsArgon2) {
|
||||
m_ui->memorySpinBox->setValue(16);
|
||||
m_ui->parallelismSpinBox->setValue(2);
|
||||
m_ui->memorySpinBox->setValue(Argon2Kdf::toMebibytes(ARGON2_DEFAULT_MEMORY));
|
||||
m_ui->parallelismSpinBox->setValue(ARGON2_DEFAULT_PARALLELISM);
|
||||
}
|
||||
benchmarkTransformRounds();
|
||||
}
|
||||
|
@ -343,7 +338,7 @@ bool DatabaseSettingsWidgetEncryption::saveSettings()
|
|||
kdf->setRounds(m_ui->transformRoundsSpinBox->value());
|
||||
if (IS_ARGON2(kdf->uuid())) {
|
||||
auto argon2Kdf = kdf.staticCast<Argon2Kdf>();
|
||||
argon2Kdf->setMemory(static_cast<quint64>(m_ui->memorySpinBox->value()) * (1 << 10));
|
||||
argon2Kdf->setMemory(Argon2Kdf::toKibibytes(m_ui->memorySpinBox->value()));
|
||||
argon2Kdf->setParallelism(static_cast<quint32>(m_ui->parallelismSpinBox->value()));
|
||||
}
|
||||
|
||||
|
@ -377,8 +372,8 @@ void DatabaseSettingsWidgetEncryption::benchmarkTransformRounds(int millisecs)
|
|||
auto argon2Kdf = kdf.staticCast<Argon2Kdf>();
|
||||
// Set a small static number of rounds for the benchmark
|
||||
argon2Kdf->setRounds(4);
|
||||
if (!argon2Kdf->setMemory(static_cast<quint64>(m_ui->memorySpinBox->value()) * (1 << 10))) {
|
||||
m_ui->memorySpinBox->setValue(static_cast<int>(argon2Kdf->memory() / (1 << 10)));
|
||||
if (!argon2Kdf->setMemory(Argon2Kdf::toKibibytes(m_ui->memorySpinBox->value()))) {
|
||||
m_ui->memorySpinBox->setValue(Argon2Kdf::toMebibytes(argon2Kdf->memory()));
|
||||
}
|
||||
if (!argon2Kdf->setParallelism(static_cast<quint32>(m_ui->parallelismSpinBox->value()))) {
|
||||
m_ui->parallelismSpinBox->setValue(argon2Kdf->parallelism());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue