diff options
| author | Stefan Suhren <suhren.stefan@fh-swf.de> | 2015-09-04 22:17:14 +0200 |
|---|---|---|
| committer | Stefan Suhren <suhren.stefan@fh-swf.de> | 2015-09-04 22:17:14 +0200 |
| commit | 240930cdb922f3fed2442234ce6fdeaf67aaed33 (patch) | |
| tree | 3f62c482c35e35034cedc91d5d9f11facbaae465 /crypt/hybridcrypt.cpp | |
| parent | a1aa74e5edb90266637c529dd96dd3487ac7d712 (diff) | |
| download | src-240930cdb922f3fed2442234ce6fdeaf67aaed33.tar.gz src-240930cdb922f3fed2442234ce6fdeaf67aaed33.zip | |
Initialisiere OpenSSL und fÃge Fehlerbehandlung ein
Diffstat (limited to 'crypt/hybridcrypt.cpp')
| -rw-r--r-- | crypt/hybridcrypt.cpp | 54 |
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); +} |
