From 96aa529561d6eaf3227e1f9764e5bb8ae5fafead Mon Sep 17 00:00:00 2001 From: Stefan Suhren Date: Wed, 2 Sep 2015 17:31:25 +0200 Subject: Füge die HybridCrypt Klasse hinzu und dokumentiere diese MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CryptLog.pro | 6 +++-- crypt/hybridcrypt.cpp | 38 ++++++++++++++++++++++++++ crypt/hybridcrypt.h | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 crypt/hybridcrypt.cpp create mode 100644 crypt/hybridcrypt.h diff --git a/CryptLog.pro b/CryptLog.pro index 158f480..eaa7502 100644 --- a/CryptLog.pro +++ b/CryptLog.pro @@ -15,11 +15,13 @@ TEMPLATE = app SOURCES += main.cpp\ mainwindow.cpp \ passworddialog.cpp \ - publickeyimport.cpp + publickeyimport.cpp \ + crypt/hybridcrypt.cpp HEADERS += mainwindow.h \ passworddialog.h \ - publickeyimport.h + publickeyimport.h \ + crypt/hybridcrypt.h FORMS += mainwindow.ui \ passworddialog.ui \ diff --git a/crypt/hybridcrypt.cpp b/crypt/hybridcrypt.cpp new file mode 100644 index 0000000..199c513 --- /dev/null +++ b/crypt/hybridcrypt.cpp @@ -0,0 +1,38 @@ +#include "hybridcrypt.h" + +HybridCrypt::HybridCrypt() +{ + +} + +void HybridCrypt::encrypt(QString infileName, QString outfileName, + QVector recipientKeyfileNames) +{ + +} + +void HybridCrypt::decrypt(QString infileName, QString outfileName) +{ + +} + +void HybridCrypt::createKeypair() +{ + +} + +void HybridCrypt::importUserKeypair(QString keyfileName, QString password) +{ + +} + +void HybridCrypt::exportUserKeypair(QString keyfileName, QString password) +{ + +} + +void HybridCrypt::exportPublicUserKey(QString keyfileName) +{ + +} + diff --git a/crypt/hybridcrypt.h b/crypt/hybridcrypt.h new file mode 100644 index 0000000..d2a3b34 --- /dev/null +++ b/crypt/hybridcrypt.h @@ -0,0 +1,75 @@ +#ifndef HYBRIDCRYPT_H +#define HYBRIDCRYPT_H + +#include +#include +#include +#include + +#include + +class HybridCrypt +{ +public: + + /** + * @brief HybridCrypt::HybridCrypt + * Initialisiert den CSPRNG von OpenSSL mittels /dev/random. + */ + HybridCrypt(); + + /** + * @brief HybridCrypt::encrypt + * Ließt eine Datei ein und schreibt diese verschlüsselt + * mit den übergebenen Schlüsseln und dem Nutzerschlüssel. + * @param infileName Der Name der zu verschlüsselnde Datei. + * @param outfileName Der Name der verschlüsselten Datei (wird angelegt/überschrieben). + * @param recipientKeyfileNames Die Schlüssel der empfänger, mit denen die Datei verschlüsselt wird. + */ + void encrypt(QString infileName, QString outfileName, QVector recipientKeyfileNames); + + /** + * @brief HybridCrypt::decrypt + * Entschlüsselt die übergeben Datei mit dem Nutzerschlüssel und schreibt diese entschlüsselt. + * @param infileName Der Name der zu entschlüsselnden Datei. + * @param outfileName Der Name der entschlüsselten Datei (wird angelegt/überschrieben). + */ + void decrypt(QString infileName, QString outfileName); + + /** + * @brief HybridCrypt::createKeypair + * Erzeugt sicher ein neues RSA Schlüsselpaar zur Verwendung in #encrypt und #decrypt. + * Sollte mittel #exportUserKeypair exportiert werden. + */ + void createKeypair(); + + /** + * @brief HybridCrypt::importUserKeypair + * Importiert das Schlüsselpaar des Nutzers zur Verwendung in #encrypt und #decrypt. + * @param keyfileName Der Name der Schlüsseldatei im (PEM|DER|NET|ASC) Format, die importiert werden soll. + * @param password Das Password mit dem der private Schlüssel in der Datei verschlüsselt ist. + */ + void importUserKeypair(QString keyfileName, QString password); + + /** + * @brief HybridCrypt::exportUserKeypair + * Exportiert das Schlüsselpaar des Nutzers im (PEM|DER|NET|ASC) Format. + * @param keyfileName Der Name der Datei in die das Schlüsselpaar exportiert wird. + * @param password Das Password mit dem der private Schlüssel des Nutzers verschlüsselt wird. + */ + void exportUserKeypair(QString keyfileName, QString password); + + + /** + * @brief HybridCrypt::exportPublicUserKey + * Exportiert den öffentlichen Schlüssel des Nutzers im (PEM|DER|NET|ASC) Format. + * @param keyfileName Der Name der Datei in den der öffentliche Schlüssel exportiert wird. + */ + void exportPublicUserKey(QString keyfileName); + +private: + EVP_PKEY privateUserkey; + EVP_PKEY publicUserkey; +}; + +#endif // HYBRIDCRYPT_H -- cgit v1.2.3-70-g09d2