From 3cb7fdea950dd2d0377f0d9ad8a88fcb7c48b842 Mon Sep 17 00:00:00 2001 From: Jedidiah Barber Date: Wed, 14 Jul 2021 11:27:03 +1200 Subject: Initial mirror commit --- Main/Forms/RandomPoolEnrichmentDialog.cpp | 93 +++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 Main/Forms/RandomPoolEnrichmentDialog.cpp (limited to 'Main/Forms/RandomPoolEnrichmentDialog.cpp') diff --git a/Main/Forms/RandomPoolEnrichmentDialog.cpp b/Main/Forms/RandomPoolEnrichmentDialog.cpp new file mode 100644 index 0000000..44e45db --- /dev/null +++ b/Main/Forms/RandomPoolEnrichmentDialog.cpp @@ -0,0 +1,93 @@ +/* + Copyright (c) 2008-2009 TrueCrypt Developers Association. All rights reserved. + + Governed by the TrueCrypt License 3.0 the full text of which is contained in + the file License.txt included in TrueCrypt binary and source code distribution + packages. +*/ + +#include "System.h" +#include "Main/GraphicUserInterface.h" +#include "Volume/Hash.h" +#include "RandomPoolEnrichmentDialog.h" + +namespace TrueCrypt +{ + RandomPoolEnrichmentDialog::RandomPoolEnrichmentDialog (wxWindow* parent) : RandomPoolEnrichmentDialogBase (parent) + { + RandomNumberGenerator::Start(); + + Hashes = Hash::GetAvailableAlgorithms(); + foreach (shared_ptr hash, Hashes) + { + if (!hash->IsDeprecated()) + { + HashChoice->Append (hash->GetName(), hash.get()); + + if (typeid (*hash) == typeid (*RandomNumberGenerator::GetHash())) + HashChoice->Select (HashChoice->GetCount() - 1); + } + } + + ShowBytes (RandomPoolStaticText, RandomNumberGenerator::PeekPool().GetRange (0, 24)); + MouseStaticText->Wrap (Gui->GetCharWidth (MouseStaticText) * 70); + + MainSizer->SetMinSize (wxSize (-1, Gui->GetCharHeight (this) * 24)); + + Layout(); + Fit(); + Center(); + + foreach (wxWindow *c, this->GetChildren()) + c->Connect (wxEVT_MOTION, wxMouseEventHandler (RandomPoolEnrichmentDialog::OnMouseMotion), nullptr, this); + } + + RandomPoolEnrichmentDialog::~RandomPoolEnrichmentDialog () + { + } + + void RandomPoolEnrichmentDialog::OnHashSelected (wxCommandEvent& event) + { + RandomNumberGenerator::SetHash (Gui->GetSelectedData (HashChoice)->GetNew()); + } + + void RandomPoolEnrichmentDialog::OnMouseMotion (wxMouseEvent& event) + { + event.Skip(); + + RandomNumberGenerator::AddToPool (ConstBufferPtr (reinterpret_cast (&event), sizeof (event))); + + long coord = event.GetX(); + RandomNumberGenerator::AddToPool (ConstBufferPtr (reinterpret_cast (&coord), sizeof (coord))); + coord = event.GetY(); + RandomNumberGenerator::AddToPool (ConstBufferPtr (reinterpret_cast (&coord), sizeof (coord))); + + if (ShowRandomPoolCheckBox->IsChecked()) + ShowBytes (RandomPoolStaticText, RandomNumberGenerator::PeekPool().GetRange (0, 24)); + } + + void RandomPoolEnrichmentDialog::OnShowRandomPoolCheckBoxClicked (wxCommandEvent& event) + { + if (!event.IsChecked()) + RandomPoolStaticText->SetLabel (L""); + } + + void RandomPoolEnrichmentDialog::ShowBytes (wxStaticText *textCtrl, const ConstBufferPtr &buffer) + { + wxString str; + + for (size_t i = 0; i < buffer.Size(); ++i) + { + str += wxString::Format (L"%02X", buffer[i]); + } + + str += L".."; + + textCtrl->SetLabel (str.c_str()); + + for (size_t i = 0; i < str.size(); ++i) + { + str[i] = L'X'; + } + } +} -- cgit