Example #1
0
        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, "Непредвиденная ошибка");
            }
        }
Example #2
0
 private void updateBooksWorker_DoWork(object sender, DoWorkEventArgs e)
 {
     e.Result = DBRSABooks.GetBooks(DBConnection.Connection, StudMail.UserId);
 }
Example #3
0
        // 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);
            }
        }