summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crypt/cryptexception.h17
-rw-r--r--crypt/hybridcrypt.h63
2 files changed, 36 insertions, 44 deletions
diff --git a/crypt/cryptexception.h b/crypt/cryptexception.h
index 513fb8d..0a4edae 100644
--- a/crypt/cryptexception.h
+++ b/crypt/cryptexception.h
@@ -5,11 +5,15 @@
#include <QString>
+/**
+ * @brief Eine Klasse für Fehler in Verschlüsselungsklassen.
+ */
class CryptException : public std::exception
{
public:
/**
- * @brief The ReturnCode enum
+ * @brief Die Fehler und ihre Codes,
+ * die diese Klasse wirft.
*/
enum ReturnCode
{
@@ -25,28 +29,25 @@ public:
};
/**
- * @brief CryptException
- * Erzeugt eine Exception mit den angegebenen Werten.
+ * @brief Erzeugt eine Exception mit den angegebenen Werten.
* @param what Die Fehlermeldung, die dem Nutzer gezeigt wird.
* @param returnCode Der Rückgabewert für die Konsole.
*/
CryptException(std::string what, ReturnCode returnCode);
/**
- * @brief ~CryptException
+ * @brief Räumt die Exception ab.
*/
virtual ~CryptException() throw();
/**
- * @brief what
- * Gibt die Fehlermelung für den Nutzer zurück.
+ * @brief Gibt die Fehlermelung für den Nutzer zurück.
* @return Die Fehlermeldung für den Nutzer.
*/
virtual const char *what() const throw();
/**
- * @brief returnCode
- * Gibt den Konsolenrückgabewert zurück.
+ * @brief Gibt den Konsolenrückgabewert zurück.
* @return Der Rückgabewert für die Konsole.
*/
ReturnCode returnCode() const;
diff --git a/crypt/hybridcrypt.h b/crypt/hybridcrypt.h
index 6cf92df..a9d9dc2 100644
--- a/crypt/hybridcrypt.h
+++ b/crypt/hybridcrypt.h
@@ -19,70 +19,71 @@
#include "cryptexception.h"
+/**
+ * @brief Eine Klasse die sich um hybride Verschlüsselung mittels RSA und AES kümmert.
+ */
class HybridCrypt
{
public:
/**
- * @brief HybridCrypt::HybridCrypt
- * Initialisiert OpenSSL.
+ * @brief Initialisiert OpenSSL.
*/
HybridCrypt();
/**
- * @brief HybridCrypt::~HybridCrypt
- * Räumt OpenSSL auf.
+ * @brief Räumt OpenSSL auf.
*/
~HybridCrypt();
/**
- * @brief HybridCrypt::encrypt
- * Ließt eine Datei ein und schreibt diese verschlüsselt
+ * @brief 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 (Sollte nicht den Nutzerschlüssel enthalten).
+ * @throws CryptException Fehler, die bei der Verschlüsselung auftreten können.
*/
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.
+ * @brief 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).
+ * @throws CryptException Fehler, die bei der Verschlüsselung auftreten können.
*/
void decrypt(QString infileName, QString outfileName);
/**
- * @brief HybridCrypt::createKeypair
- * Erzeugt sicher ein neues RSA Schlüsselpaar zur Verwendung in #encrypt und #decrypt.
+ * @brief Erzeugt sicher ein neues RSA Schlüsselpaar zur Verwendung in #encrypt und #decrypt.
* Sollte mittel #exportUserKeypair exportiert werden.
+ * @throws CryptException Fehler, die bei der Verschlüsselung auftreten können.
*/
void createKeypair();
/**
- * @brief HybridCrypt::importUserKeypair
- * Importiert das Schlüsselpaar des Nutzers zur Verwendung in #encrypt und #decrypt.
+ * @brief 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.
+ * @throws CryptException Fehler, die bei der Verschlüsselung auftreten können.
*/
void importUserKeypair(QString keyfileName, QString password);
/**
- * @brief HybridCrypt::exportUserKeypair
- * Exportiert das Schlüsselpaar des Nutzers im (PEM|DER|NET|ASC) Format.
+ * @brief 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 (wird angelegt/überschrieben).
* @param password Das Password mit dem der private Schlüssel des Nutzers verschlüsselt wird.
+ * @throws CryptException Fehler, die bei der Verschlüsselung auftreten können.
*/
void exportUserKeypair(QString keyfileName, QString password);
/**
- * @brief HybridCrypt::exportPublicUserKey
- * Exportiert den öffentlichen Schlüssel des Nutzers im (PEM|DER|NET|ASC) Format.
+ * @brief 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 (wird angelegt/überschrieben).
+ * @throws CryptException Fehler, die bei der Verschlüsselung auftreten können.
*/
void exportPublicUserKey(QString keyfileName);
@@ -90,8 +91,7 @@ private:
EVP_PKEY *userKeypair; // Enthält nur den privaten Schlüssel, da OpenSSL nicht mehr braucht.
/**
- * @brief encryptAesData
- * Verschlüsselt den IV und den Key vom AES mit RSA.
+ * @brief Verschlüsselt den IV und den Key vom AES mit RSA.
* Und nutzt als Padding RSA_OAEP_PADDING.
* @param pkey Der EVP_PKEY mit dem Verschlüsselt wird.
* @param data Der AES Key und IV.
@@ -100,44 +100,38 @@ private:
QByteArray encryptAesData(EVP_PKEY *pkey, QByteArray data);
/**
- * @brief isCsprngSeeded
- * Gibt an, ob der Zufallszahlengenerator von OpenSSL mit ausreichend Entropie initialisiert wurde.
+ * @brief Gibt an, ob der Zufallszahlengenerator von OpenSSL mit ausreichend Entropie initialisiert wurde.
* @return Gibt wahr zurück wenn ausreichend intialisert wurde, ansonsten falsch.
*/
bool isCsprngSeeded();
/**
- * @brief getCsprngData
- * Holt Zufallsblöcke aus dem Csprng.
+ * @brief Holt Zufallsblöcke aus dem Csprng.
* @param count Die Anzahl der Zufallsbytes die geholt werden sollen.
* @return Ein QByteArray mit den Zufallsblöcken.
*/
QByteArray getCsprngBytes(int count);
/**
- * @brief isKeyRsa
- * Überprüft, ob der Schlüssel vom Typ RSA ist.
+ * @brief Überprüft, ob der Schlüssel vom Typ RSA ist.
* @param key Der Schlüssel, der überprüft wird.
* @return Gibt wahr zurück, falls Key vom Typ RSA ist, ansonsten flasch.
*/
bool isKeyRsa(EVP_PKEY *key);
/**
- * @brief throwOpenSslException
- * Wirft eine CryptException mit dem OpenSSL Fehler.
+ * @brief Wirft eine CryptException mit dem OpenSSL Fehler.
*/
void throwOpenSslException();
/**
- * @brief throwExceptionIfEvpKeyIsNotRsa
- * Wirft eine CryptException, falls der Schlüssel nicht RSA ist.
+ * @brief Wirft eine CryptException, falls der Schlüssel nicht RSA ist.
* @param key Der Pointer, der auf NULL gesetzt wird, nachdem der Schlüssel abgräumt wurde.
*/
void throwExceptionIfEvpKeyIsNotRsa(EVP_PKEY **key);
/**
- * @brief throwExceptionIfCsprngIsNotSeeded
- * Wirft eine Exception, falls der Zufallszahlengenerator nicht initialisiert wurde.
+ * @brief Wirft eine Exception, falls der Zufallszahlengenerator nicht initialisiert wurde.
*/
void throwExceptionIfCsprngIsNotSeeded();
@@ -148,22 +142,19 @@ private:
void throwExceptionIfUserKeyIsNull();
/**
- * @brief freeEvpKey
- * Räumt den Schlüssel hinter key ab.
+ * @brief Räumt den Schlüssel hinter key ab.
* @param key Der Pointer, der auf NULL gesetzt wird.
*/
void freeEvpKey(EVP_PKEY **key);
/**
- * @brief freeCipherCtx
- * Räumt den Kontext hinter ctx ab.
+ * @brief Räumt den Kontext hinter ctx ab.
* @param ctx Der Pointer, der auf NULL gesetzt wird.
*/
void freeCipherCtx(EVP_CIPHER_CTX **ctx);
/**
- * @brief freePkeyCtx
- * Räumt den Kontext hinter ctx ab.
+ * @brief Räumt den Kontext hinter ctx ab.
* @param ctx Der Pointer, der auf NULL gesetzt wird.
*/
void freePkeyCtx(EVP_PKEY_CTX **ctx);