summaryrefslogtreecommitdiffstats
path: root/crypt/hybridcrypt.cpp
diff options
context:
space:
mode:
authorStefan Suhren <suhren.stefan@fh-swf.de>2015-09-04 22:17:14 +0200
committerStefan Suhren <suhren.stefan@fh-swf.de>2015-09-04 22:17:14 +0200
commit240930cdb922f3fed2442234ce6fdeaf67aaed33 (patch)
tree3f62c482c35e35034cedc91d5d9f11facbaae465 /crypt/hybridcrypt.cpp
parenta1aa74e5edb90266637c529dd96dd3487ac7d712 (diff)
downloadsrc-240930cdb922f3fed2442234ce6fdeaf67aaed33.tar.gz
src-240930cdb922f3fed2442234ce6fdeaf67aaed33.zip
Initialisiere OpenSSL und fÃge Fehlerbehandlung ein
Diffstat (limited to 'crypt/hybridcrypt.cpp')
-rw-r--r--crypt/hybridcrypt.cpp54
1 files changed, 51 insertions, 3 deletions
diff --git a/crypt/hybridcrypt.cpp b/crypt/hybridcrypt.cpp
index b197f75..0802397 100644
--- a/crypt/hybridcrypt.cpp
+++ b/crypt/hybridcrypt.cpp
@@ -2,14 +2,56 @@
HybridCrypt::HybridCrypt()
{
- // Teste ob der Zufallszahlengenerator initialisiert ist
- qDebug() << "Zufallszahlengenerator wurde erfolgreich initialisiert: " << isCsprngSeeded();
+ // Initialisiere Nutzerschlüssel mit NULL
+ privateUserkey = NULL;
+ publicUserkey = NULL;
+
+ // Lade die menschenlesbaren Fehlerstrings für LibCrypto
+ ERR_load_crypto_strings();
+
+ // Lade alle Hash- und Verschlüsselungsalgorithmen
+ OpenSSL_add_all_algorithms();
+
+ // Lade Konfigurationsdatei und andere wichtige Initialisierungen
+ OPENSSL_config(NULL);
+
+ // Zeige ob der Zufallszahlengenerator initialisiert wurde
+ qDebug() << "Zufallszahlengenerator erfolgreich initialisiert: " <<
+ isCsprngSeeded();
+}
+
+HybridCrypt::~HybridCrypt()
+{
+ // Räume Nutzerschlüssel auf
+ if (privateUserkey != NULL)
+ {
+ EVP_PKEY_free(privateUserkey);
+ }
+
+ if (publicUserkey != NULL)
+ {
+ EVP_PKEY_free(publicUserkey);
+ }
+
+ // Räume OpenSSL auf
+ // Entferne alle Hash- und Verschlüsselungsalgorithmen
+ EVP_cleanup();
+
+ // Falls das nächste Ausgelassen wird, könnte ein Speicherleck auftreten,
+ // wenn die BIO Api verwendet wurde (Base64 transformationen)
+ CRYPTO_cleanup_all_ex_data();
+
+ // Lösche den CSPRNG sicher
+ RAND_cleanup();
+
+ // Entferne Fehlerstrings
+ ERR_free_strings();
}
void HybridCrypt::encrypt(QString infileName, QString outfileName,
QVector<QString> recipientKeyfileNames)
{
- qDebug() << "Zufallszahlengenerator wurde ausreichend geseeded: " << isCsprngSeeded();
+
}
void HybridCrypt::decrypt(QString infileName, QString outfileName)
@@ -42,3 +84,9 @@ bool HybridCrypt::isCsprngSeeded()
return RAND_status() == 1;
}
+void HybridCrypt::throwOpenSslException()
+{
+ QString errorMsg("OpenSSL Fehler. Fehlermeldung: ");
+ errorMsg.append(ERR_error_string(ERR_get_error(), NULL));
+ throw new CryptException(errorMsg.toStdString(), 5);
+}