blob: d2a3b34ff14275e5c1d566bb98d9dee145183413 (
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
63
64
65
66
67
68
69
70
71
72
73
74
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
|