|
|
1.1 ! root 1: /* ! 2: Copyright (c) 2008 TrueCrypt Foundation. All rights reserved. ! 3: ! 4: Governed by the TrueCrypt License 2.4 the full text of which is contained ! 5: in the file License.txt included in TrueCrypt binary and source code ! 6: distribution packages. ! 7: */ ! 8: ! 9: #include "System.h" ! 10: #include "Volume/EncryptionTest.h" ! 11: #include "Volume/Hash.h" ! 12: #include "Main/GraphicUserInterface.h" ! 13: #include "EncryptionOptionsWizardPage.h" ! 14: ! 15: namespace TrueCrypt ! 16: { ! 17: EncryptionOptionsWizardPage::EncryptionOptionsWizardPage (wxPanel* parent) ! 18: : EncryptionOptionsWizardPageBase (parent) ! 19: { ! 20: ! 21: EncryptionAlgorithms = EncryptionAlgorithm::GetAvailableAlgorithms(); ! 22: foreach (shared_ptr <EncryptionAlgorithm> ea, EncryptionAlgorithms) ! 23: { ! 24: if (!ea->IsDeprecated()) ! 25: EncryptionAlgorithmChoice->Append (ea->GetName(), ea.get()); ! 26: } ! 27: ! 28: EncryptionAlgorithmChoice->Select (0); ! 29: ! 30: Hashes = Hash::GetAvailableAlgorithms(); ! 31: foreach (shared_ptr <Hash> hash, Hashes) ! 32: { ! 33: if (!hash->IsDeprecated()) ! 34: HashChoice->Append (hash->GetName(), hash.get()); ! 35: } ! 36: ! 37: HashChoice->Select (0); ! 38: OnEncryptionAlgorithmSelected(); ! 39: ! 40: } ! 41: ! 42: shared_ptr <EncryptionAlgorithm> EncryptionOptionsWizardPage::GetEncryptionAlgorithm () const ! 43: { ! 44: return Gui->GetSelectedData <EncryptionAlgorithm> (EncryptionAlgorithmChoice)->GetNew(); ! 45: } ! 46: ! 47: shared_ptr <Hash> EncryptionOptionsWizardPage::GetHash () const ! 48: { ! 49: return Gui->GetSelectedData <Hash> (HashChoice)->GetNew(); ! 50: } ! 51: ! 52: void EncryptionOptionsWizardPage::OnBenchmarkButtonClick (wxCommandEvent& event) ! 53: { ! 54: } ! 55: ! 56: void EncryptionOptionsWizardPage::OnEncryptionAlgorithmSelected () ! 57: { ! 58: FreezeScope freeze (this); ! 59: ! 60: shared_ptr <EncryptionAlgorithm> ea = GetEncryptionAlgorithm(); ! 61: CipherList ciphers = ea->GetCiphers(); ! 62: ! 63: if (ciphers.size() == 1) ! 64: { ! 65: EncryptionAlgorithmHyperlink->SetLabel (StringFormatter (LangString["MORE_INFO_ABOUT"], ea->GetName())); ! 66: ! 67: if (typeid (*ea) == typeid (AES)) ! 68: EncryptionAlgorithmStaticText->SetLabel (LangString["AES_HELP"]); ! 69: else if (typeid (*ea) == typeid (Serpent)) ! 70: EncryptionAlgorithmStaticText->SetLabel (LangString["SERPENT_HELP"]); ! 71: else if (typeid (*ea) == typeid (Twofish)) ! 72: EncryptionAlgorithmStaticText->SetLabel (LangString["TWOFISH_HELP"]); ! 73: else ! 74: EncryptionAlgorithmStaticText->SetLabel (L""); ! 75: } ! 76: else ! 77: { ! 78: if (ciphers.size() == 2) ! 79: { ! 80: EncryptionAlgorithmStaticText->SetLabel (StringFormatter (LangString["TWO_LAYER_CASCADE_HELP"], ! 81: ciphers[0]->GetName(), ciphers[0]->GetKeySize() * 8, ! 82: ciphers[1]->GetName(), ciphers[1]->GetKeySize() * 8)); ! 83: } ! 84: else if (ciphers.size() == 3) ! 85: { ! 86: EncryptionAlgorithmStaticText->SetLabel (StringFormatter (LangString["THREE_LAYER_CASCADE_HELP"], ! 87: ciphers[0]->GetName(), ciphers[0]->GetKeySize() * 8, ! 88: ciphers[1]->GetName(), ciphers[1]->GetKeySize() * 8, ! 89: ciphers[2]->GetName(), ciphers[2]->GetKeySize() * 8)); ! 90: } ! 91: else ! 92: EncryptionAlgorithmStaticText->SetLabel (L""); ! 93: ! 94: EncryptionAlgorithmHyperlink->SetLabel (_("More information")); ! 95: } ! 96: ! 97: Layout(); ! 98: } ! 99: ! 100: void EncryptionOptionsWizardPage::OnEncryptionAlgorithmHyperlinkClick (wxHyperlinkEvent& event) ! 101: { ! 102: if (GetEncryptionAlgorithm()->GetCiphers().size() == 1) ! 103: Gui->OpenHomepageLink (this, wxString (GetEncryptionAlgorithm()->GetName()).Lower()); ! 104: else ! 105: Gui->OpenHomepageLink (this, L"cascades"); ! 106: } ! 107: ! 108: void EncryptionOptionsWizardPage::OnHashHyperlinkClick (wxHyperlinkEvent& event) ! 109: { ! 110: Gui->OpenHomepageLink (this, L"hashalgorithms"); ! 111: } ! 112: ! 113: void EncryptionOptionsWizardPage::OnTestButtonClick (wxCommandEvent& event) ! 114: { ! 115: try ! 116: { ! 117: EncryptionTest::TestAll(); ! 118: Gui->ShowInfo ("TESTS_PASSED"); ! 119: } ! 120: catch (Exception &e) ! 121: { ! 122: Gui->ShowError (e); ! 123: Gui->ShowError ("TESTS_FAILED"); ! 124: } ! 125: } ! 126: ! 127: void EncryptionOptionsWizardPage::SetEncryptionAlgorithm (shared_ptr <EncryptionAlgorithm> algorithm) ! 128: { ! 129: if (algorithm) ! 130: { ! 131: EncryptionAlgorithmChoice->SetStringSelection (algorithm->GetName()); ! 132: OnEncryptionAlgorithmSelected (); ! 133: } ! 134: } ! 135: ! 136: void EncryptionOptionsWizardPage::SetHash (shared_ptr <Hash> hash) ! 137: { ! 138: if (hash) ! 139: HashChoice->SetStringSelection (hash->GetName()); ! 140: } ! 141: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.