private void decryptMsgBtn_Click(object sender, EventArgs e) { var userId = StudMail.UserId; var msg = CurrentLetter; var books = DBRSABooks.GetBooks(DBConnection.Connection, userId); var body = string.IsNullOrEmpty(msg.TextBody) ? msg.HtmlBody : msg.TextBody; var decryptedTxt = ""; bool isFound = false; try { foreach (var book in books) { if (book.Email == msg.From[0].ToString()) { decryptedTxt = MailHelper.ReturnMsg(body, book.OwnPrivate); if (decryptedTxt != null) { SaveMsgLocal(decryptedTxt); isFound = true; } break; } } MessageBox.Show(isFound ? decryptedTxt : body, "Расшифрованное сообщение"); } catch (Exception ex) { MessageBox.Show(ex.Message, "Непредвиденная ошибка"); } }
private void updateBooksWorker_DoWork(object sender, DoWorkEventArgs e) { e.Result = DBRSABooks.GetBooks(DBConnection.Connection, StudMail.UserId); }
// TODO: private void letterSendBtn_Click(object sender, EventArgs e) { lock (MailClient.ObjLock) { if (MailClient.CurrentNetwork == NetworkStatus.Disconnected) { MessageBox.Show("Отсутствует интернет! Отправка письма невозможна!"); return; } } // Зашифровать текст сообщения TripleDES // Получить ключ и вектор сообщения TripleDES // Зашифровать ключ при помощи RSA и получить ключи // Получить ЭЦП и ключи // Сформировать конечную строку - зашифрованный текст&зашифрованный ключ&вектор&ЭЦП // Сформировать сообщение MimeMessage // Отправить сообщение на сервер // Сохранить сообщение в БД в зашифрованном виде var msg = new MimeMessage(); var to = receiverEmailTxt.Text.Trim(); var subject = themeSendTxt.Text.Trim(); var body = msgSendTxt.Text.Trim(); var receivers = to.Split(';'); var userId = StudMail.UserId; var books = DBRSABooks.GetBooks(DBConnection.Connection, userId); if (string.IsNullOrEmpty(to)) { checkInputPrv.SetError(receiverEmailTxt, "Заполните данное поле"); return; } try { msg.From.Add(new MailboxAddress(StudMail.CurrentUser.Email)); foreach (var item in receivers) { msg.To.Add(new MailboxAddress(item)); } msg.Subject = subject; var found = false; // Находим для каждого адресата свой ключ foreach (var receiver in msg.To) { if (!isEncryptMsg) { var mailMsg = MailHelper.GenMsg(msg, body, currentPaths); if (StudMail.SendLetter(mailMsg)) { MessageBox.Show($"Сообщение отправлено адресату: {receiver.ToString()}"); } else { MessageBox.Show($"Не удалось отправить сообщение адресату: {receiver.ToString()}"); } } else { foreach (var book in books) { if (book.Email == receiver.ToString()) { if (book.EmailPublic != "") { var mailMsg = MailHelper.GenEncryptedMsg(msg, body, currentPaths, book); if (StudMail.SendLetter(mailMsg)) { MessageBox.Show($"Сообщение отправлено адресату: {receiver.ToString()}"); } else { MessageBox.Show($"Не удалось отправить сообщение адресату: {receiver.ToString()}"); } found = true; } // Нужно ещё записать в БД в зашифрованном виде, но не хватает uid break; } } if (!found) { MessageBox.Show($"Вы не имеете публичного ключа {receiver.ToString()}"); } } } } catch (Exception err) { MessageBox.Show("Произошла непредвиденная ошибка\n" + err.Message); } }