source: trunk/CrypPlugins/P2PEditor/GUI/Controls/GetNewCertificateView.xaml.cs @ 2399

Last change on this file since 2399 was 2399, checked in by krueger, 11 years ago

DLLs updated
Changes to make newest version of certificateclient work

override-bad-extension: Bdev.Net.Dns.dll
override-bad-extension: Bootstrapper.dll
override-bad-extension: CertificateLibrary.dll
override-bad-extension: CertServices.dll
override-bad-extension: Chord.dll
override-bad-extension: FullMeshDHT.dll
override-bad-extension: FullMeshOverlay.dll
override-bad-extension: Gears4Net.dll
override-bad-extension: LinkManager.dll
override-bad-extension: log4net.dll
override-bad-extension: PacketDotNet.dll
override-bad-extension: PapsClient.dll
override-bad-extension: PeersAtPlayBase.dll
override-bad-extension: RUDP.dll
override-bad-extension: SharpPcap.dll
override-bad-extension: Stun.dll
override-bad-extension: Util.dll
override-bad-extension: WebDHT.dll

File size: 12.5 KB
Line 
1using System;
2using System.ComponentModel;
3using System.IO;
4using System.Windows;
5using System.Windows.Forms;
6using Cryptool.P2PEditor.Distributed;
7using Cryptool.P2PEditor.Worker;
8using Cryptool.PluginBase;
9using PeersAtPlay.CertificateLibrary.Network;
10using System.Threading;
11using PeersAtPlay.CertificateLibrary.Util;
12using System.Windows.Threading;
13using System.Windows.Media.Animation;
14
15namespace Cryptool.P2PEditor.GUI.Controls
16{
17    public partial class GetNewCertificate
18    {
19        public static string WorldName = ".*";
20
21        public GetNewCertificate()
22        {
23            InitializeComponent();           
24        }
25
26        private void Request_Click(object sender, RoutedEventArgs e)
27        {
28            this.MessageLabel.Visibility = Visibility.Hidden;
29            if (!Verification.IsValidAvatar(this.UsernameField.Text))
30            {
31
32                this.MessageLabel.Content = "Username is not valid.";
33                this.MessageLabel.Visibility = Visibility.Visible;     
34                this.UsernameField.Focus();
35                this.UsernameField.SelectAll();
36                return;
37            }
38
39            if (!Verification.IsValidEmailAddress(this.EmailField.Text))
40            {
41                this.MessageLabel.Content = "Email is not valid.";
42                this.MessageLabel.Visibility = Visibility.Visible; 
43                this.EmailField.Focus();
44                this.EmailField.SelectAll();
45                return;
46            }
47           
48            if (this.PasswordField.Password != this.ConfirmField.Password)
49            {
50                this.MessageLabel.Content = "Passwords did not match.";
51                this.MessageLabel.Visibility = Visibility.Visible;
52                this.PasswordField.Password = "";
53                this.ConfirmField.Password = "";
54                this.PasswordField.Focus();
55                return;
56            }   
57
58            if (!Verification.IsValidPassword(this.PasswordField.Password))
59            {
60                this.MessageLabel.Content = "Password is not valid.";
61                this.MessageLabel.Visibility = Visibility.Visible;
62                this.PasswordField.Password = "";
63                this.ConfirmField.Password = "";
64                this.PasswordField.Focus();
65                return;
66            }
67           
68            Requesting = true;
69            Thread thread = new Thread(new ParameterizedThreadStart(RetrieveCertificate));
70            CertificateRegistration certReg = new CertificateRegistration(this.UsernameField.Text,
71                                                     this.EmailField.Text,
72                                                     WorldName,
73                                                     this.PasswordField.Password);
74            thread.Start(certReg);
75        }
76
77        public void RetrieveCertificate(object o)
78        {
79            CertificateRegistration certReg = (CertificateRegistration)o;
80
81            try
82            {
83                CertificateClient certificateClient = new CertificateClient();
84                certificateClient.ProgramName = System.Reflection.Assembly.GetEntryAssembly().GetName().Name;
85                certificateClient.ProgramVersion = System.Reflection.Assembly.GetEntryAssembly().GetName().Version.ToString();
86
87                certificateClient.CertificateAuthorizationRequired += new EventHandler<EventArgs>(delegate
88                {
89                    this.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
90                    {
91                        this.MessageLabel.Content = "Certificate authorization required";
92                        this.MessageLabel.Visibility = Visibility.Visible;
93                    }, null);
94                });
95
96                certificateClient.EmailVerificationRequired += new EventHandler<EventArgs>(delegate
97                {
98                    this.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
99                    {
100                        this.MessageLabel.Content = "Registration successful. To activate your account, you need to validate your email address. A verification code was sent per email.";
101                        this.MessageLabel.Visibility = Visibility.Visible;
102                    }, null);
103                });
104
105                certificateClient.CertificateReceived += CertificateReceived;
106
107                certificateClient.InvalidCertificateRegistration += InvalidCertificateRegistration;
108
109                certificateClient.ServerErrorOccurred += new EventHandler<ProcessingErrorEventArgs>(delegate
110                {
111                    this.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
112                    {
113                        this.MessageLabel.Content = "Server error occurred. Please try again later";
114                        this.MessageLabel.Visibility = Visibility.Visible;
115                    }, null);
116                });
117
118                certificateClient.NewProtocolVersion += new EventHandler<EventArgs>(delegate
119                {
120                    this.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
121                    {
122                        this.MessageLabel.Content = "New ProtocolVersion. Please update CrypTool 2.0";
123                        this.MessageLabel.Visibility = Visibility.Visible;
124                    }, null); 
125                });
126
127                certificateClient.RegisterCertificate(certReg);
128
129            }
130            catch (NetworkException nex)
131            {
132                this.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
133                {
134                    this.MessageLabel.Content = "There was a communication problem with the server: " + nex.Message + "\n" + "Please try again later";
135                    this.MessageLabel.Visibility = Visibility.Visible;
136                }, null);
137            }
138            catch (Exception ex)
139            {
140                this.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
141                {
142                    this.MessageLabel.Content = "An exception occured: " + ex.Message;
143                    this.MessageLabel.Visibility = Visibility.Visible;
144                }, null);
145            }
146            finally
147            {
148                Requesting = false;               
149            }
150        }
151
152        public void InvalidCertificateRegistration(object sender, ProcessingErrorEventArgs args)
153        {
154            try
155            {
156                switch (args.Type)
157                {
158                    case ErrorType.AvatarAlreadyExists:
159                        this.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
160                        {
161                            this.MessageLabel.Content = "The username already exists. Please choose another one.";
162                            this.MessageLabel.Visibility = Visibility.Visible;
163                        }, null);
164                        break;
165                    case ErrorType.EmailAlreadyExists:
166                        this.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
167                        {
168                            this.MessageLabel.Content = "The email already exists. Please choose another one.";
169                            this.MessageLabel.Visibility = Visibility.Visible;
170                        }, null);
171                        break;
172                    case ErrorType.WrongPassword:
173                        this.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
174                        {
175                            this.MessageLabel.Content = "The username and email already exist but the entered password was wrong.";
176                            this.MessageLabel.Visibility = Visibility.Visible;
177                        }, null);
178                        this.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
179                        {                           ;
180                            this.PasswordField.Password = "";
181                            this.ConfirmField.Password = "";
182                            this.PasswordField.Focus();
183                        }, null);       
184                        break;
185                    default:
186                        this.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
187                        {
188                            this.MessageLabel.Content = "Invalid registration: " + args.Type;
189                            this.MessageLabel.Visibility = Visibility.Visible;
190                        }, null);
191                        break;
192                }
193            }
194            catch (Exception) 
195            { 
196            }
197            finally
198            {
199                Requesting = false;
200            } 
201        }
202
203        public void CertificateReceived(object sender, CertificateReceivedEventArgs args)
204        {
205            try
206            {
207                args.Certificate.SaveCrtToAppData();
208                args.Certificate.SavePkcs12ToAppData(args.Certificate.Password);               
209                this.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
210                {                   
211                    ((P2PEditorPresentation)((P2PEditor)GetValue(P2PEditorProperty)).Presentation).Connect.Username.Text = this.UsernameField.Text;
212                    ((P2PEditorPresentation)((P2PEditor)GetValue(P2PEditorProperty)).Presentation).Connect.Password.Password = this.PasswordField.Password;
213                    this.UsernameField.Text = "";
214                    this.EmailField.Text = "";
215                    this.PasswordField.Password = "";
216                    this.ConfirmField.Password = "";
217                    this.RequestPage.Visibility = System.Windows.Visibility.Hidden;
218                    this.OKPage.Visibility = System.Windows.Visibility.Visible;
219                }, null);               
220            }
221            catch (Exception ex)
222            {
223                 this.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
224                        {
225                            this.MessageLabel.Content = "Could not save the received certificate to your AppData folder:\n\n" +
226                                (ex.GetBaseException() != null && ex.GetBaseException().Message != null ? ex.GetBaseException().Message : ex.Message);
227                            this.MessageLabel.Visibility = Visibility.Visible;
228                        }, null);
229            }
230            finally
231            {
232                Requesting = false;
233            }
234        }
235
236        private bool requesting = false;
237        public bool Requesting
238        {
239            get { return requesting; }
240            set
241            {
242                requesting = value;
243                try
244                {
245                    this.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
246                    {
247                        Storyboard storyboard = (Storyboard)FindResource("AnimateWorldIcon");
248                        if (requesting)
249                        {
250                            this.RequestLabel.Visibility = System.Windows.Visibility.Visible;
251                            this.RequestButton.IsEnabled = false;
252                            storyboard.Begin();
253                        }
254                        else
255                        {
256                            this.RequestLabel.Visibility = System.Windows.Visibility.Hidden;
257                            this.RequestButton.IsEnabled = true;
258                            storyboard.Stop();
259                        }
260                    }, null);
261                }
262                catch (Exception)
263                {                   
264                }
265            }
266        }
267
268        private void BackButton_Click(object sender, RoutedEventArgs e)
269        {
270            this.P2PEditorPresentation.ShowConnectView();
271        }
272
273        private void OKButton_Click(object sender, RoutedEventArgs e)
274        {
275            this.RequestPage.Visibility = Visibility.Visible;
276            this.OKPage.Visibility = Visibility.Hidden;
277            this.P2PEditorPresentation.ShowConnectView();
278        }
279
280        private void ActivateButton_Click(object sender, RoutedEventArgs e)
281        {
282            this.P2PEditorPresentation.ShowActivateEmailView();
283        }
284    }
285}
Note: See TracBrowser for help on using the repository browser.