source: trunk/CrypPlugins/RSA/RSAKeyGeneratorSettings.cs @ 727

Last change on this file since 727 was 727, checked in by kopal, 12 years ago
  • cleaned up the source code of RSA (added comments header for each method, sorted methods and so on)
  • also corrected a failure which appeared because of the context menu (icons missing) -> RSAKeyGenerator now do not have (and do not need) a context menu for selecting the src of the keys
File size: 11.9 KB
Line 
1/*                             
2   Copyright 2009 Team CrypTool (Sven Rech,Dennis Nolte,Raoul Falk,Nils Kopal), Uni Duisburg-Essen
3
4   Licensed under the Apache License, Version 2.0 (the "License");
5   you may not use this file except in compliance with the License.
6   You may obtain a copy of the License at
7
8       http://www.apache.org/licenses/LICENSE-2.0
9
10   Unless required by applicable law or agreed to in writing, software
11   distributed under the License is distributed on an "AS IS" BASIS,
12   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   See the License for the specific language governing permissions and
14   limitations under the License.
15*/
16
17using System;
18using System.Collections.Generic;
19using System.Linq;
20using System.Text;
21using Cryptool.PluginBase;
22using System.ComponentModel;
23using System.Windows;
24
25namespace Cryptool.Plugins.RSA
26{
27    /// <summary>
28    /// Settings class for the RSAKeyGenerator plugin
29    /// </summary>
30    class RSAKeyGeneratorSettings : ISettings
31    {
32
33        #region private members
34
35        private int source;
36        private String p = "23";
37        private String q = "13";
38        private String n = "299";
39        private String e = "23";
40        private String d = "23";
41        private string certificateFile;
42        private String password = "";
43        private bool hasChanges = false;
44       
45        #endregion
46
47        #region events
48       
49        public event TaskPaneAttributeChangedHandler TaskPaneAttributeChanged;
50        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
51
52        #endregion
53
54        #region public
55
56        /// <summary>
57        /// Getter/Setter for the source of the Key Data
58        /// </summary>
59        [TaskPane("Source", "Select the source of the Key Data", null, 1, false, DisplayLevel.Beginner, ControlType.ComboBox, new string[] { "Manual Primes", "Manual Keys", "Random", "Certificate" })]
60        public int Source
61        {
62            get { return this.source; }
63            set
64            {
65                if (((int)value) != source) hasChanges = true;
66                this.source = (int)value;
67
68                if (TaskPaneAttributeChanged != null)
69                    switch (source)
70                    {
71                        case 0:
72                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("CertificateFile", Visibility.Collapsed)));
73                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("CloseFile", Visibility.Collapsed)));
74                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("Password", Visibility.Collapsed)));
75                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("P", Visibility.Visible)));
76                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("Q", Visibility.Visible)));
77                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("E", Visibility.Visible)));
78                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("D", Visibility.Collapsed)));
79                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("N", Visibility.Collapsed)));
80                            break;
81                        case 1:
82                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("CertificateFile", Visibility.Collapsed)));
83                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("CloseFile", Visibility.Collapsed)));
84                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("Password", Visibility.Collapsed)));
85                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("P", Visibility.Collapsed)));
86                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("Q", Visibility.Collapsed)));
87                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("E", Visibility.Visible)));
88                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("D", Visibility.Visible)));
89                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("N", Visibility.Visible)));
90                            break;
91                        case 2:
92                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("CertificateFile", Visibility.Collapsed)));
93                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("CloseFile", Visibility.Collapsed)));
94                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("Password", Visibility.Collapsed)));
95                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("P", Visibility.Collapsed)));
96                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("Q", Visibility.Collapsed)));
97                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("E", Visibility.Collapsed)));
98                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("D", Visibility.Collapsed)));
99                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("N", Visibility.Collapsed)));
100                            break;
101                        case 3:
102                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("CertificateFile", Visibility.Visible)));
103                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("CloseFile", Visibility.Visible)));
104                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("Password", Visibility.Visible)));
105                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("P", Visibility.Collapsed)));
106                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("Q", Visibility.Collapsed)));
107                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("E", Visibility.Collapsed)));
108                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("D", Visibility.Collapsed)));
109                            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("N", Visibility.Collapsed)));
110                            break;
111                    }
112
113                OnPropertyChanged("Source");
114            }
115        }
116
117        /// <summary>
118        /// Getter/Setter for prime P
119        /// </summary>
120        [TaskPane("P", "P", null, 2, false, DisplayLevel.Beginner, ControlType.TextBox)]
121        public String P
122        {
123            get
124            {
125                return p;
126            }
127            set
128            {
129                p = value;
130                OnPropertyChanged("P");
131            }
132        }
133       
134        /// <summary>
135        /// Getter/Setter for the prime Q
136        /// </summary>
137        [TaskPane("Q", "Q", null, 3, false, DisplayLevel.Beginner, ControlType.TextBox)]
138        public String Q
139        {
140            get
141            {
142                return q;
143            }
144            set
145            {
146                q = value;
147                OnPropertyChanged("Q");
148            }
149        }
150
151        /// <summary>
152        /// Getter/Setter for the N
153        /// </summary>
154        [TaskPane("N", "N", null, 4, false, DisplayLevel.Beginner, ControlType.TextBox)]
155        public String N
156        {
157            get
158            {
159                return n;
160            }
161            set
162            {
163                n = value;
164                OnPropertyChanged("N");
165            }
166        }
167
168        /// <summary>
169        /// Getter/Setter for the E
170        /// </summary>
171        [TaskPane("E", "E", null, 5, false, DisplayLevel.Beginner, ControlType.TextBox)]
172        public String E
173        {
174            get
175            {
176                return e;
177            }
178            set
179            {
180                e = value;
181                OnPropertyChanged("E");
182            }
183        }
184
185        /// <summary>
186        /// Getter/Setter for the D
187        /// </summary>
188        [TaskPane("D", "D", null, 6, false, DisplayLevel.Beginner, ControlType.TextBox)]
189        public String D
190        {
191            get
192            {
193                return d;
194            }
195            set
196            {
197                d = value;
198                OnPropertyChanged("D");
199            }
200        }
201
202        /// <summary>
203        /// Getter/Setter for the certificate file
204        /// </summary>
205        [TaskPane("Open X.509 Certificate", "Select the X.509 certificate you want to open.", null, 5, false, DisplayLevel.Beginner, ControlType.OpenFileDialog, FileExtension = "X.509 certificates (*.cer)|*.cer")]
206        public string CertificateFile
207        {
208            get { return certificateFile; }
209            set
210            {
211                if (value != certificateFile)
212                {
213                    certificateFile = value;
214                    HasChanges = true;
215                    OnPropertyChanged("CertificateFile");
216                }
217            }
218        }
219
220        /// <summary>
221        /// Getter/Setter for the password of the certificate
222        /// </summary>
223        [TaskPane("Password", "Password", null, 4, false, DisplayLevel.Beginner, ControlType.TextBoxHidden)]
224        public String Password
225        {
226            get
227            {
228                return password;
229            }
230            set
231            {
232                password = value;
233                OnPropertyChanged("Password");
234            }
235        }
236
237        /// <summary>
238        /// Button to "close" the certificate file. That means it will not appear any more in the text field
239        /// </summary>
240        [TaskPane("Close file", "Close file", null, 6, false, DisplayLevel.Beginner, ControlType.Button)]
241        public void CloseFile()
242        {
243            CertificateFile = null;
244        }
245
246        public bool HasChanges
247        {
248            get
249            {
250                return hasChanges;
251            }
252            set
253            {
254                hasChanges = value;
255            }
256        }
257
258        #endregion
259
260        #region private
261
262        /// <summary>
263        /// The property p changed
264        /// </summary>
265        /// <param name="p">p</param>
266        private void OnPropertyChanged(string p)
267        {
268            if (PropertyChanged != null)
269            {
270                PropertyChanged(this, new PropertyChangedEventArgs(p));
271            }
272        }
273
274        #endregion
275
276    }//end RSAKeyGeneratorSettings
277
278}//end Cryptool.Plugins.RSA
Note: See TracBrowser for help on using the repository browser.