#ifndef CRYPTEXCEPTION_H #define CRYPTEXCEPTION_H #include #include /** * @brief Eine Exceptionklasse die HybridCrypt Fehler kapselt. */ class CryptException : public std::exception { public: /** * @brief Die Fehler und ihre Codes, * die diese Klasse wirft. */ enum ReturnCode { FileNotFound = 1, ///< Falls Datei nicht gefunden/geöffnet werden konnte FileNotWritable, ///< Falls Datei nicht erzeugt/geöffnet werden konnte DecryptionErrorRsa, ///< Falls alle Header einen Padding Error geworfen haben DecryptionErrorAes, ///< (Nicht verwendet) OpenSslError, ///< Alle Fehler, die unterliegende OpenSSL Funktionen werfen können KeyNotRsa, ///< Falls ein nicht RSA Schlüssel gelesen wird CsprngNotSeeded, ///< Für den Fall, dass der Zufallszahlengenrator nicht initialisiert wurde NoUserKeyCreated, ///< Falls eine Operation ohne Nutzerschlüssel aufgerufen wird, die einen benötigt NoRecipients, ///< Falls die Verschlüsselung ohne Empfängerschlüssel aufgerufen wird FormatNotSupported ///< Falls das Dateiformat für Schlüsseldateien nicht Unterstützt (wird an Dateiendung erkannt) }; /** * @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 Räumt die Exception ab. */ virtual ~CryptException() throw(); /** * @brief Gibt die Fehlermelung für den Nutzer zurück. * @return Die Fehlermeldung für den Nutzer. */ virtual const char *what() const throw(); /** * @brief Gibt den Konsolenrückgabewert zurück. * @return Der Rückgabewert für die Konsole. */ ReturnCode returnCode() const; private: std::string whatMsg; ReturnCode retId; }; #endif // CRYPTEXCEPTION_H