#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButtonDecrypt_clicked() { if (hybridcrypt.isUserKeyInitialised()) { QString inFilename = QFileDialog::getOpenFileName(this, tr("Verschlüsselte Datei laden"), QDir::homePath(), tr("Alle Dateien")); if (!inFilename.isEmpty()) { QString outFilename = QFileDialog::getSaveFileName(this, tr("Entschlüsselte Datei speichern"), QDir::homePath(), tr("Alle Dateien")); if (!outFilename.isEmpty()) { try { statusBar()->showMessage(tr("Entschlüsselung hat begonnen."), messageTimeout); hybridcrypt.decrypt(inFilename, outFilename); statusBar()->showMessage(tr("Entschlüsselung war erfolgreich."), messageTimeout); // Zeige entschlüsselte Datei ui->lineEditFilePath->setText(outFilename); } catch (CryptException e) { QMessageBox::critical(this, tr("Fehler beim Entschlüsseln"), e.what()); } } else { QMessageBox::warning(this, tr("Keinen Seicherort ausgewählt"), tr("Sie haben keine Speicherort für die entschlüsselte Datei eingegeben.")); } } else { QMessageBox::information(this, tr("Kein Datei ausgewählt"), tr("Sie haben keine Datei eingeben die entschlüsselt werden soll.")); } } else { QMessageBox::information(this, tr("Kein Schlüssel Importiert"), tr("Bitte Importieren Sie ihr Schlüsselpaar.")); // Versuche ein Schlüssel zu Importieren. on_actionImport_triggered(); // Wenn das erfolgreich war, versuche erneut zu entschlüsseln. if (hybridcrypt.isUserKeyInitialised()) { on_pushButtonDecrypt_clicked(); } } } void MainWindow::on_pushButtonEncrypt_clicked() { if (hybridcrypt.isUserKeyInitialised() || QMessageBox::Yes == QMessageBox::question(this, tr("Kein Schlüssel Importiert"), tr("Sie haben keinen eigenen Schlüssel angelegt.\nWollen Sie trotzdem fortfahren?"))) { PublicKeyImportDialog publicKeyImport; QString inFilename = ui->lineEditFilePath->text(); // outFile Diaglog findet in PublicKeyImportDialog statt. if (!inFilename.isEmpty()) { if (publicKeyImport.exec()) { try { statusBar()->showMessage(tr("Verschlüsselung hat begonnen."), messageTimeout); hybridcrypt.encrypt(inFilename, publicKeyImport.getOutFileName(), publicKeyImport.getPublicKeyFileList()); statusBar()->showMessage(tr("Verschlüsselung war erfolgreich."), messageTimeout); } catch (CryptException e) { QMessageBox::critical(this, tr("Fehler beim Verschlüsselen"), e.what()); } } } else { QMessageBox::information(this, tr("Keine Datei ausgewählt"), tr("Sie haben keine Datei ausgewählt.\nEntschlüsselung hat nicht statt gefunden.")); ui->lineEditFilePath->setFocus(); } } } void MainWindow::on_pushButtonOpenFile_clicked() { QString fielname = QFileDialog::getOpenFileName(this, tr("Datei Öffnen"), QDir::homePath(), tr("Alle Dateien")); if (!fielname.isEmpty()) { ui->lineEditFilePath->setText(fielname); } } void MainWindow::on_actionImport_triggered() { // nur für pem und der QString filename = QFileDialog::getOpenFileName(this, tr("Schlüssel Datei für Import."), QDir::homePath(), tr("Schlüssel Datei (*.pem *.der)")); if (!filename.isEmpty()) { PasswordDialog pwd; pwd.exec(); try { hybridcrypt.importUserKeypair(filename, pwd.getPassword()); } catch (CryptException e) { QMessageBox::critical(this, tr("Fehler beim Importieren"), e.what()); } } else { QMessageBox::information(this, tr("Keine Datei ausgewählt"), tr("Sie haben keine Datei ausgewählt, der Import hat nicht statt gefunden.")); } } void MainWindow::on_actionExportMyKeypair_triggered() { if (hybridcrypt.isUserKeyInitialised()) { QString expoKeyFileName = QFileDialog::getSaveFileName(this, tr("Export Datei für den Schlüssel"), QDir::homePath(), tr("Schlüssel Dateien (*.pem)")); PasswordDialog pwd; if (!expoKeyFileName.isEmpty()) { pwd.exec(); try { hybridcrypt.exportUserKeypair(expoKeyFileName, pwd.getPassword()); } catch (CryptException e) { QMessageBox::critical(this, tr("Fehler beim Exportieren"), e.what()); } } else { QMessageBox::warning(this, tr("Keine Schlüsseldatei ausgewählt"), tr("Sie haben keinen Zielort für die Datei ausgewählt. Exportieren wurden nicht durchgeführt.")); } } } void MainWindow::on_actionExportMyPublicKey_triggered() { if (hybridcrypt.isUserKeyInitialised()) { QString expoKeyFileName = QFileDialog::getSaveFileName(this, tr("Export Datei für den Schlüssel"), QDir::homePath(), tr("Schlüssel Dateien (*.pem *.der *.asc)")); if (!expoKeyFileName.isEmpty()) { try { hybridcrypt.exportPublicUserKey(expoKeyFileName); } catch (CryptException e) { QMessageBox::critical(this, tr("Fehler beim Exportieren"), e.what()); } } else { QMessageBox::warning(this, tr("Keine Schlüsseldatei ausgewählt"), tr("Sie haben keine Zielort für die Datei ausgewählt. Exportieren wurden nicht durchgeführt.")); } } } void MainWindow::on_lineEditFilePath_textChanged(const QString &text) { if (text.right(4) == ".txt" || text.right(4) == ".log") { QFile file(text); if (file.open(QFile::ReadOnly | QFile::Text)) { ui->textEditPreview->setText(QString(file.readAll())); } } else { ui->textEditPreview->clear(); } } void MainWindow::on_actionCreateKeypair_triggered() { qDebug() << "on_actionCreateKeypair_triggered"; try { hybridcrypt.createKeypair(); QMessageBox::information(this, tr("Erzeugen war erfolgreich"), tr("Erzeugen des Schlüssels war erfolgreich.")); } catch (CryptException e) { QMessageBox::critical(this, tr("Fehler beim Erzeugen"), e.what()); } } void MainWindow::on_actionClose_triggered() { close(); }