コード例 #1
0
ファイル: frmPink.cs プロジェクト: cdi10meyer/JobChannel
 private void Hub_EncryptionKey(string symmetricKey)
 {
     Task.Factory.StartNew(() =>
     {
         if (!String.IsNullOrEmpty(symmetricKey))
         {
             string keyAES    = _RSA.DecryptStringURL(symmetricKey);
             _AES             = new SymmetricEncryptionAES(keyAES);
             lblCryptage.Text = keyAES;
         }
         else
         {
             _AES             = null;
             lblCryptage.Text = null;
         }
     }, CancellationToken.None, TaskCreationOptions.None, _scheduler);
 }
コード例 #2
0
ファイル: frmPink.cs プロジェクト: cdi10meyer/JobChannel
        private async void btCnx_Click(object sender, EventArgs e)
        {
            gbxConnection.Enabled = false;
            btCnx.Enabled         = false;

            if (btCnx.Text == "Connecter")
            {
                try
                {
                    var ks = AsymmetricEncryptionRSA.GenerateKeys();
                    _RSA = new AsymmetricEncryptionRSA(ks.privateKey, ks.publicKey);

                    HubConnectionBuilder builder = new HubConnectionBuilder();
                    builder.WithUrl($"{txtAdresse.Text}/chat?pseudo={txtPseudo.Text}&language={cbxLanguage.Text}&publicKey={ks.publicKey.EncodeURL()}");
                    _connection = builder.Build();
                    _connection.On <string, string>("BroadcastMessage", Hub_BroadcastMessage);
                    _connection.On <string, string>("SendMessage", Hub_SendMessage);
                    _connection.On <IList <string> >("UsersList", Hub_UsersList);
                    _connection.On <string>("EncryptionKey", Hub_EncryptionKey);

                    _connection.Closed += (error) =>
                    {
                        Task.Factory.StartNew(() =>
                        {
                            gbxConnection.Enabled = true;
                            btCnx.Text            = "Connecter";
                            btCnx.Enabled         = true;
                            gbxChat.Enabled       = false;
                            gbxUsers.Enabled      = false;
                            lbxUsers.Items.Clear();
                            gbxReception.Enabled = false;
                            lblCryptage.Text     = null;
                            _RSA = null;
                            _AES = null;
                        }, CancellationToken.None, TaskCreationOptions.None, _scheduler);
                        return(Task.CompletedTask);
                    };

                    await _connection.StartAsync();

                    btCnx.Text           = "Déconnecter";
                    gbxChat.Enabled      = true;
                    btSend.Enabled       = false;
                    gbxUsers.Enabled     = true;
                    gbxReception.Enabled = true;
                    Settings.Default.AdresseHubWebService = txtAdresse.Text;
                    Settings.Default.Save();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    gbxConnection.Enabled = true;
                }
                finally
                {
                    btCnx.Enabled = true;
                }
            }
            else
            {
                try
                {
                    await _connection.StopAsync();;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }