source: trunk/CrypPlugins/PKCS1/WpfControls/Components/DatablockControl.xaml.cs @ 1885

Last change on this file since 1885 was 1885, checked in by schomburg, 11 years ago

added english menus
changed GUI a bit
added additional input for bleichenbacher signatures

File size: 5.5 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Collections.Specialized;
4using System.Linq;
5using System.Text;
6using System.Windows;
7using System.Windows.Controls;
8using System.Windows.Data;
9using System.Windows.Documents;
10using System.Windows.Input;
11using System.Windows.Media;
12using System.Windows.Media.Imaging;
13using System.Windows.Navigation;
14using System.Windows.Shapes;
15using System.Security.Cryptography;
16using System.IO;
17using PKCS1.Library;
18using PKCS1.Resources.lang.Gui;
19using Microsoft.Win32;
20
21
22namespace PKCS1.WpfControls.Components
23{
24    /// <summary>
25    /// Interaktionslogik für HwControl.xaml
26    /// </summary>
27    public partial class DatablockControl : UserControl
28    {
29        private string fileName = String.Empty;
30
31        public DatablockControl()
32        {
33            InitializeComponent();
34            Initialize();
35        }
36
37        public void Initialize()
38        {
39            // ComboBox befüllen
40            this.cbHashFunc.Items.Add(HashFuncIdentHandler.SHA1);
41            this.cbHashFunc.Items.Add(HashFuncIdentHandler.SHA256);
42            this.cbHashFunc.Items.Add(HashFuncIdentHandler.SHA384);
43            this.cbHashFunc.Items.Add(HashFuncIdentHandler.SHA512);
44            this.cbHashFunc.Items.Add(HashFuncIdentHandler.MD2);
45            this.cbHashFunc.Items.Add(HashFuncIdentHandler.MD5);
46            this.cbHashFunc.SelectedIndex = 0;
47
48            this.rbTextFromBox.IsChecked = true;
49
50            Datablock.getInstance().RaiseParamChangedEvent += handleParamChanged;
51        }
52
53        #region Eventhandlng
54
55        private void handleParamChanged(ParameterChangeType type)
56        {
57            if (ParameterChangeType.Message == type)
58            {
59                if (true == this.tbInputText.IsEnabled)
60                {
61                    this.tbInputText.Text = Encoding.ASCII.GetString(Datablock.getInstance().Message);
62                }
63                this.tbHashDigest.Text = Datablock.getInstance().GetHashDigestToHexString();
64            }
65        }
66
67        public event ParamChanged RaiseDataBlockGenerated;
68
69        private void OnRaiseDataBlockGenerated(ParameterChangeType type)
70        {
71            if (null != RaiseDataBlockGenerated)
72            {
73                RaiseDataBlockGenerated(type);
74            }
75        }
76
77        #endregion
78
79        // fired when Checkbox Selection changed
80        // Hashfunction IdentificationTextbox filled & selected Hashfunction is set
81        private void cbHashFunc_SelectionChanged(object sender, SelectionChangedEventArgs e)
82        {
83            Datablock.getInstance().HashFunctionIdent = (HashFunctionIdent)this.cbHashFunc.SelectedValue;
84            this.tbHashIdent.Text = Datablock.getInstance().HashFunctionIdent.DERIdent;
85
86            // HashDigest Textboxen leeren; werden bei Execute befüllt
87            this.tbHashDigest.Text = String.Empty;
88            this.lblHashDigestLength.Content = String.Empty;
89        }
90
91        private void bGenerate_Click(object sender, RoutedEventArgs e)
92        {
93            byte[] byteToHash;
94
95            if (this.rbTextFromBox.IsChecked == true)
96            {
97                byteToHash = Encoding.ASCII.GetBytes(this.tbInputText.Text);
98            }
99            else if (this.rbTextfromFile.IsChecked == true)
100            {
101                FileStream fs = new FileStream(this.fileName, FileMode.Open, FileAccess.Read);
102                byteToHash = new byte[fs.Length];
103                fs.Read(byteToHash,0,System.Convert.ToInt32(fs.Length));               
104                fs.Close();
105            }
106            else
107            {
108                byteToHash = Encoding.ASCII.GetBytes("Error!");
109            }
110
111            // Text setzen, Hash wird automatisch generiert, da in Datablock das Event getriggert wird und hier im Handling Hashgenerierung auslöst
112            Datablock.getInstance().Message = byteToHash;
113            OnRaiseDataBlockGenerated(ParameterChangeType.DataBlock);
114        }
115
116        private void tbHashIdent_TextChanged(object sender, TextChangedEventArgs e)
117        {
118            if(this.tbHashIdent.Text != String.Empty )
119            {
120                this.lblHashIdentLength.Content = "(" + DatablockCtrl.length +" "+ this.tbHashIdent.Text.Length*4 + " " + Common.bit + ")";
121            }
122        }
123
124        private void tbHashDigest_TextChanged(object sender, TextChangedEventArgs e)
125        {
126            if (this.tbHashDigest.Text != String.Empty)
127            {
128                this.lblHashDigestLength.Content = "(" + DatablockCtrl.length + " " + this.tbHashDigest.Text.Length * 4 + " " + Common.bit + ")";
129            }
130        }
131
132        private void rbTextfromFile_Checked(object sender, RoutedEventArgs e)
133        {
134            this.tbInputFile.IsEnabled = true;
135            this.bOpenFile.IsEnabled = true;
136            this.tbInputText.IsEnabled = false;
137        }
138
139        private void rbTextFromBox_Checked(object sender, RoutedEventArgs e)
140        {
141            this.tbInputFile.IsEnabled = false;
142            this.bOpenFile.IsEnabled = false;
143            this.tbInputText.IsEnabled = true;
144        }
145
146        private void bOpenFile_Click(object sender, RoutedEventArgs e)
147        {
148            OpenFileDialog dlg = new OpenFileDialog();
149            dlg.DefaultExt = ".*";
150
151            Nullable<bool> result = dlg.ShowDialog();
152            if (result == true)
153            {
154                this.fileName = dlg.FileName;
155                this.tbInputFile.Text = this.fileName;
156            }
157        }
158    }
159}
Note: See TracBrowser for help on using the repository browser.