summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Suhren <suhren.stefan@fh-swf.de>2015-09-08 22:02:14 +0200
committerStefan Suhren <suhren.stefan@fh-swf.de>2015-09-08 22:02:14 +0200
commit7b4ee43df0b129517b348386af9ae50e1cebb789 (patch)
tree5582a1f8ff26e082735025132f5a9451258991ce
parent4a1df49ff88ed854d7e9863764ebdb2946527a09 (diff)
downloadsrc-7b4ee43df0b129517b348386af9ae50e1cebb789.tar.gz
src-7b4ee43df0b129517b348386af9ae50e1cebb789.zip
Implementiere auch den Import von SchlÃsseln
Im Moment funktioniert nur der Im- bzw. Export von bzw. in PEM Dateien.
-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)