summaryrefslogtreecommitdiffstats
path: root/crypt/cryptexception.h
blob: 59db9bbfd76b6ebf67f3ead1d0268ff8910cd27d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#ifndef CRYPTEXCEPTION_H
#define CRYPTEXCEPTION_H

#include <exception>

#include <QString>

/**
 * @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