|
|
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.