diff options
Diffstat (limited to 'crypt')
| -rw-r--r-- | crypt/hybridcrypt.cpp | 25 |
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) |
