Linux/macOSX: always display random gathering dialog/interface before performing sensitive operations that needs good quality random.

This commit is contained in:
Mounir IDRASSI 2014-12-11 18:27:08 +01:00
parent 134ef04140
commit d328269492
3 changed files with 20 additions and 0 deletions

View File

@ -102,6 +102,8 @@ namespace VeraCrypt
else if (DialogMode != Mode::RemoveAllKeyfiles)
newKeyfiles = CurrentPasswordPanel->GetKeyfiles();
/* force the display of the random enriching interface */
RandomNumberGenerator::SetEnrichedByUserStatus (false);
Gui->UserEnrichRandomPool (this, NewPasswordPanel->GetPkcs5Kdf() ? NewPasswordPanel->GetPkcs5Kdf()->GetHash() : shared_ptr <Hash>());
{

View File

@ -252,6 +252,8 @@ namespace VeraCrypt
backupFile.Open (*files.front(), File::CreateWrite);
RandomNumberGenerator::Start();
/* force the display of the random enriching interface */
RandomNumberGenerator::SetEnrichedByUserStatus (false);
UserEnrichRandomPool (nullptr);
{
@ -1234,6 +1236,9 @@ namespace VeraCrypt
return;
}
/* force the display of the random enriching interface */
RandomNumberGenerator::SetEnrichedByUserStatus (false);
if (restoreInternalBackup)
{
// Restore header from the internal backup
@ -1282,6 +1287,7 @@ namespace VeraCrypt
UserEnrichRandomPool (nullptr);
// Re-encrypt volume header
wxBusyCursor busy;
SecureBuffer newHeaderBuffer (volume->GetLayout()->GetHeaderSize());
Core->ReEncryptVolumeHeaderWithNewSalt (newHeaderBuffer, volume->GetHeader(), options.Password, options.Keyfiles);
@ -1390,6 +1396,7 @@ namespace VeraCrypt
UserEnrichRandomPool (nullptr);
// Re-encrypt volume header
wxBusyCursor busy;
SecureBuffer newHeaderBuffer (decryptedLayout->GetHeaderSize());
Core->ReEncryptVolumeHeaderWithNewSalt (newHeaderBuffer, decryptedLayout->GetHeader(), options.Password, options.Keyfiles);

View File

@ -330,6 +330,8 @@ namespace VeraCrypt
backupFile.Open (filePath, File::CreateWrite);
RandomNumberGenerator::Start();
/* force the display of the random enriching interface */
RandomNumberGenerator::SetEnrichedByUserStatus (false);
UserEnrichRandomPool();
// Re-encrypt volume header
@ -443,6 +445,8 @@ namespace VeraCrypt
newKeyfiles = AskKeyfiles (_("Enter new keyfile"));
}
/* force the display of the random enriching interface */
RandomNumberGenerator::SetEnrichedByUserStatus (false);
UserEnrichRandomPool();
Core->ChangePassword (volume, newPassword, newKeyfiles,
@ -456,6 +460,8 @@ namespace VeraCrypt
FilePath path;
RandomNumberGenerator::Start();
/* force the display of the random enriching interface */
RandomNumberGenerator::SetEnrichedByUserStatus (false);
UserEnrichRandomPool();
if (keyfilePath)
@ -742,6 +748,8 @@ namespace VeraCrypt
// Random data
RandomNumberGenerator::Start();
/* force the display of the random enriching interface */
RandomNumberGenerator::SetEnrichedByUserStatus (false);
UserEnrichRandomPool();
ShowString (L"\n");
@ -1295,6 +1303,9 @@ namespace VeraCrypt
throw UserAbort (SRC_POS);
}
/* force the display of the random enriching interface */
RandomNumberGenerator::SetEnrichedByUserStatus (false);
if (restoreInternalBackup)
{
// Restore header from the internal backup