VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Main/Forms/KeyfileGeneratorDialog.cpp
diff options
context:
space:
mode:
authorMounir IDRASSI <mounir.idrassi@idrix.fr>2016-02-08 01:37:02 +0100
committerMounir IDRASSI <mounir.idrassi@idrix.fr>2016-02-08 01:39:50 +0100
commit0863924483c09d05948f63d1b1740f107e3e80fe (patch)
tree01edef8d504fa58bda333470e21777728c3da747 /src/Main/Forms/KeyfileGeneratorDialog.cpp
parent8e2793085e380172f412585d56b87c98a272ba82 (diff)
downloadVeraCrypt-0863924483c09d05948f63d1b1740f107e3e80fe.tar.gz
VeraCrypt-0863924483c09d05948f63d1b1740f107e3e80fe.zip
Linux/MacOSX: add progress bar for mouse collected entropy in GUI for keyfile generator and for random poll enrichment
Diffstat (limited to 'src/Main/Forms/KeyfileGeneratorDialog.cpp')
-rw-r--r--src/Main/Forms/KeyfileGeneratorDialog.cpp26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/Main/Forms/KeyfileGeneratorDialog.cpp b/src/Main/Forms/KeyfileGeneratorDialog.cpp
index bc4fb9fd..157f74e5 100644
--- a/src/Main/Forms/KeyfileGeneratorDialog.cpp
+++ b/src/Main/Forms/KeyfileGeneratorDialog.cpp
@@ -31,7 +31,7 @@ namespace VeraCrypt
HashChoice->Select (0);
RandomNumberGenerator::SetHash (Gui->GetSelectedData <Hash> (HashChoice)->GetNew());
- ShowBytes (RandomPoolStaticText, RandomNumberGenerator::PeekPool().GetRange (0, 24));
+ HideBytes (RandomPoolStaticText, 24);
MouseStaticText->Wrap (Gui->GetCharWidth (MouseStaticText) * 70);
MainSizer->SetMinSize (wxSize (-1, Gui->GetCharHeight (this) * 24));
@@ -39,6 +39,8 @@ namespace VeraCrypt
Layout();
Fit();
Center();
+
+ MouseEventsCounter = 0;
foreach (wxWindow *c, this->GetChildren())
c->Connect (wxEVT_MOTION, wxMouseEventHandler (KeyfileGeneratorDialog::OnMouseMotion), nullptr, this);
@@ -169,12 +171,20 @@ namespace VeraCrypt
if (ShowRandomPoolCheckBox->IsChecked())
ShowBytes (RandomPoolStaticText, RandomNumberGenerator::PeekPool().GetRange (0, 24));
+ else
+ HideBytes (RandomPoolStaticText, 24);
+
+ /* conservative estimate: 1 mouse move event brings 1 bit of entropy
+ * https://security.stackexchange.com/questions/32844/for-how-much-time-should-i-randomly-move-the-mouse-for-generating-encryption-key/32848#32848
+ */
+ if (MouseEventsCounter < 2560)
+ CollectedEntropy->SetValue (++MouseEventsCounter);
}
void KeyfileGeneratorDialog::OnShowRandomPoolCheckBoxClicked (wxCommandEvent& event)
{
if (!event.IsChecked())
- RandomPoolStaticText->SetLabel (L"");
+ HideBytes (RandomPoolStaticText, 24);
}
void KeyfileGeneratorDialog::OnRandomSizeCheckBoxClicked (wxCommandEvent& event)
@@ -204,4 +214,16 @@ namespace VeraCrypt
str[i] = L'X';
}
}
+
+ void KeyfileGeneratorDialog::HideBytes (wxStaticText *textCtrl, size_t len)
+ {
+ wxString str;
+
+ for (size_t i = 0; i < len + 1; ++i)
+ {
+ str += L"**";
+ }
+
+ textCtrl->SetLabel (str.c_str());
+ }
}