#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()) { DecryptDataDialog decryptDialog; if (decryptDialog.exec()) { try { QString inFilename = decryptDialog.getCipherFilename(); QString outFilename = decryptDialog.getOutFileName(); 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) { statusBar()->clearMessage(); QMessageBox::critical(this, tr("Fehler beim Entschlüsseln"), e.what()); } } } else { if (QMessageBox::Yes == QMessageBox::question(this, tr("Kein Schlüssel Importiert"), tr("Wollen Sie ihr Schlüsselpaar importieren."))) { // 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() { QString inFilename = ui->lineEditFilePath->text(); if (!inFilename.isEmpty()) { 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; 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) { statusBar()->clearMessage(); 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.\nWählen Sie eine Datei vor dem Entschlüsseln.")); ui->lineEditFilePath->setFocus(); } } void MainWindow::on_pushButtonOpenFile_clicked() { QString filename = QFileDialog::getOpenFileName(this, tr("Datei Öffnen"), QDir::homePath(), tr("Alle Dateien")); if (!filename.isEmpty()) { ui->lineEditFilePath->setText(filename); } } 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()); statusBar()->showMessage("Import war erfolgreich.", messageTimeout); } catch (CryptException e) { statusBar()->clearMessage(); QMessageBox::critical(this, tr("Fehler beim Importieren"), e.what()); } } } 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)")); if (!expoKeyFileName.isEmpty()) { PasswordDialog pwd; pwd.exec(); try { hybridcrypt.exportUserKeypair(expoKeyFileName, pwd.getPassword()); statusBar()->showMessage("Export war erflogreich.", messageTimeout); } catch (CryptException e) { QMessageBox::critical(this, tr("Fehler beim Exportieren"), e.what()); } } } } 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); statusBar()->showMessage("Export war erfolgreich.", messageTimeout); } catch (CryptException e) { QMessageBox::critical(this, tr("Fehler beim Exportieren"), e.what()); } } } } 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(); statusBar()->showMessage("Erzeugen war erfolgreich.", messageTimeout); } catch (CryptException e) { QMessageBox::critical(this, tr("Fehler beim Erzeugen"), e.what()); } } void MainWindow::on_actionClose_triggered() { close(); }