summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crypt/hybridcrypt.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/crypt/hybridcrypt.cpp b/crypt/hybridcrypt.cpp
index 9c0e437..cdc7239 100644
--- a/crypt/hybridcrypt.cpp
+++ b/crypt/hybridcrypt.cpp
@@ -91,7 +91,32 @@ void HybridCrypt::createKeypair()
void HybridCrypt::importUserKeypair(QString keyfileName, QString password)
{
+ if (isCsprngSeeded())
+ {
+ // Räume den alten Schlüssel vorher ab
+ freeKeyIfNotNull();
+
+ FILE *keyfile = fopen(keyfileName.toStdString().c_str(), "r");
+
+ // Datei existiert nicht
+ if (keyfile == NULL)
+ {
+ throw CryptException("Datei nicht gefunden: " + keyfileName.toStdString(), 1);
+ }
+ // Ließ den Schlüssel des Nutzers ein
+ userKeypair = PEM_read_PrivateKey(keyfile, NULL, NULL,
+ (void *) password.toStdString().c_str());
+
+ // Räume die Ressourcen auf
+ fclose(keyfile);
+
+ // Wirf einen Fehler, falls OpenSSL ein Problem hatte
+ if (userKeypair == NULL)
+ {
+ throwOpenSslException();
+ }
+ }
}
void HybridCrypt::exportUserKeypair(QString keyfileName, QString password)