From 240930cdb922f3fed2442234ce6fdeaf67aaed33 Mon Sep 17 00:00:00 2001 From: Stefan Suhren Date: Fri, 4 Sep 2015 22:17:14 +0200 Subject: Initialisiere OpenSSL und fÃge Fehlerbehandlung ein MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crypt/hybridcrypt.cpp | 54 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 51 insertions(+), 3 deletions(-) (limited to 'crypt/hybridcrypt.cpp') 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 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); +} -- cgit v1.2.3-70-g09d2