From 7b4ee43df0b129517b348386af9ae50e1cebb789 Mon Sep 17 00:00:00 2001 From: Stefan Suhren Date: Tue, 8 Sep 2015 22:02:14 +0200 Subject: Implementiere auch den Import von SchlÃsseln MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Im Moment funktioniert nur der Im- bzw. Export von bzw. in PEM Dateien. --- crypt/hybridcrypt.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) 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) -- cgit v1.2.3-70-g09d2