public ImReceivedMessageEventArgs(IMLibrary.Message message) { this._message = message; }
private void ChatDialogoue_PreviewKeyDown(object sender, KeyEventArgs e) { IMLibrary.Client selectedClient = (IMLibrary.Client)ListBuddies.Items[ListBuddies.SelectedIndex]; if (selectedClient == null) { return; } if (e.Key != Key.Enter) { return; } e.Handled = true; if (_clientPromtList.Find(c => c.Item1.UserName == selectedClient.UserName).Item2.txtSend.Text == "") { return; } string message = _clientPromtList.Find(c => c.Item1 == selectedClient).Item2.txtSend.Text; /* Actual message that is to be sent, this is where we can encrypt it*/ GeneratedClientList.ToList().Find(cli => cli.UserName == selectedClient.UserName).NewMessages = false; GeneratedClientList.ToList().Find(cli => cli.UserName == selectedClient.UserName).Received = 0; string encryptedMessage = ""; try { if (_clientKeyIvDictionary.ContainsKey(selectedClient.UserName)) { int selectedEncryptionMethod = _clientPromtList.Find(c => c.Item1 == selectedClient).Item2.EncryptionMethod.SelectedIndex; switch (selectedEncryptionMethod) { case 0: //symmetrical encryption int selectedStandard = _clientPromtList.Find(c => c.Item1 == selectedClient).Item2.EncryptionStandard.SelectedIndex; switch (selectedStandard) { case 0: encryptedMessage = Cryptography.Encrypt <AesManaged>(message, _clientKeyIvDictionary[selectedClient.UserName].Item1, Encoding.Unicode.GetString(_clientKeyIvDictionary[selectedClient.UserName].Item2)); break; case 1: // encryptedMessage = Cryptography.Encrypt <TripleDESCryptoServiceProvider>(message, _clientKeyIvDictionary[selectedClient.UserName].Item1, Encoding.Unicode.GetString(_clientKeyIvDictionary[selectedClient.UserName].Item2)); break; //case 2: // encryptedMessage = Cryptography.Encrypt<RC2CryptoServiceProvider>(message, _clientKeyIvDictionary[selectedClient.UserName].Item1, Encoding.Unicode.GetString(_clientKeyIvDictionary[selectedClient.UserName].Item2)); // break; } break; case 1: //one-time-pad if (_clientPromtList.Find(c => c.Item1 == selectedClient).Item2.txtOneTimePad.Text.Length >= message.Length) { encryptedMessage = Cryptography.EncryptMessageWithPad(_clientPromtList.Find(c => c.Item1 == selectedClient).Item2.txtOneTimePad.Text, message); } break; } } else { encryptedMessage = Cryptography.EncryptData(message, selectedClient.PublicKey); } var isChecked = _clientPromtList.Find(c => c.Item1 == selectedClient).Item2.SynchroniseCheckBox.IsChecked; bool syncFlag = isChecked != null && (bool)isChecked; int encryptionStandardFlag = _clientPromtList.Find(c => c.Item1 == selectedClient).Item2.EncryptionStandard.SelectedIndex; int encryptionMethodFlag = _clientPromtList.Find(c => c.Item1 == selectedClient).Item2.EncryptionMethod.SelectedIndex; IMLibrary.Message messagePacket = new IMLibrary.Message(encryptedMessage, selectedClient.UserName, this._clientHandler.ClientInfo.UserName, encryptionStandardFlag, encryptionMethodFlag, syncFlag); _clientPromtList.Find(c => c.Item1 == selectedClient).Item2.RecieveText.AppendNewLine(String.Format("[{0}] << {1}", DateTime.Now.ToString("HH:mm:ss"), _clientPromtList.Find(c => c.Item1 == selectedClient).Item2.txtSend.Text)); _clientPromtList.Find(c => c.Item1 == selectedClient).Item2.txtSend.Text = ""; this._clientHandler.SendMessage(messagePacket); } catch { _clientPromtList.Find(c => c.Item1 == selectedClient).Item2.RecieveText.AppendNewLine(String.Format("[{0}] << {1}", DateTime.Now.ToString("HH:mm:ss"), "This user may have removed their public key from the server; this message cannot be sent to ensure security integrity.")); } }