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 --- crypt/hybridcrypt.cpp | 38 ++++++++++++++++++++++++++ crypt/hybridcrypt.h | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 crypt/hybridcrypt.cpp create mode 100644 crypt/hybridcrypt.h (limited to 'crypt') 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