just a remark feel-free-to-ignore: I tried to think of a way to deduplicate this adjustment logic using a lambda here, but it turned out worse :)
0 CCrypter crypter;
1
2 auto adjust_iterations = [&](unsigned int current_iterations) -> unsigned int {
3 auto start{SteadyClock::now()};
4
5 if (!crypter.SetKeyFromPassphrase(wallet_passphrase, master_key.vchSalt, current_iterations, master_key.nDerivationMethod)) {
6 return false;
7 }
8
9 return current_iterations * target / (SteadyClock::now() - start);
10 };
11
12 master_key.nDeriveIterations = adjust_iterations(master_key.nDeriveIterations);
13 master_key.nDeriveIterations = (master_key.nDeriveIterations + adjust_iterations(master_key.nDeriveIterations)) / 2;