diff options
Diffstat (limited to 'crypt/hybridcrypt.h')
| -rw-r--r-- | crypt/hybridcrypt.h | 75 |
1 files changed, 75 insertions, 0 deletions
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 <QByteArray> +#include <QFile> +#include <QString> +#include <QVector> + +#include <openssl/evp.h> + +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<QString> 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 |
