Passwords are now saved in a password manager.
The password manager uses strong encryption using a key derived from the passphrase using scrypt key strengthening algorithm. This ensures encryption is performed using a strong key and that brute forcing the passphrase is time consuming. If the user loses his passphrase no recovery is possible.
This commit is contained in:
parent
2230a4bd61
commit
e36924c087
27 changed files with 605 additions and 346 deletions
|
|
@ -2,14 +2,21 @@
|
|||
#define MASTERCONTROLLER_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QSqlDatabase>
|
||||
#include <atomic>
|
||||
#include <future>
|
||||
#include <map>
|
||||
#include <memory>
|
||||
|
||||
//namespace Botan {
|
||||
// class Sqlite3_Database;
|
||||
//}
|
||||
|
||||
class ConnectionConfig;
|
||||
class ConnectionList;
|
||||
class ConnectionListModel;
|
||||
class ConnectionManagerWindow;
|
||||
class PasswordManager;
|
||||
|
||||
/** \brief Controller class responsible for all things global.
|
||||
*/
|
||||
|
|
@ -30,8 +37,10 @@ public:
|
|||
|
||||
void showConnectionManager();
|
||||
void openSqlWindowForConnection(size_t connection_index);
|
||||
void openServerWindowForConnection(int connection_index);
|
||||
void openBackupDlgForConnection(int connection_index);
|
||||
void openServerWindowForConnection(size_t connection_index);
|
||||
void openBackupDlgForConnection(size_t connection_index);
|
||||
|
||||
// std::shared_ptr<Botan::Sqlite3_Database> getUserConfigDatabase();
|
||||
|
||||
signals:
|
||||
|
||||
|
|
@ -41,6 +50,12 @@ private:
|
|||
ConnectionList *m_connectionList = nullptr;
|
||||
ConnectionListModel *m_connectionListModel = nullptr;
|
||||
ConnectionManagerWindow *m_connectionManagerWindow = nullptr;
|
||||
//std::shared_ptr<Botan::Sqlite3_Database> m_userConfigDatabase;
|
||||
QSqlDatabase m_userConfigDatabase;
|
||||
/** Using long lived object so it can remember its master password for sometime
|
||||
* if the user wishes it.
|
||||
*/
|
||||
std::shared_ptr<PasswordManager> m_passwordManager;
|
||||
|
||||
/** Retrieves the connection password from the user (directly or through the psk db)
|
||||
*
|
||||
|
|
@ -50,6 +65,10 @@ private:
|
|||
bool getPasswordFromPskdb(const std::string &password_id, std::string &password);
|
||||
|
||||
bool storePasswordInPskdb(const std::string &password_id, const std::string password);
|
||||
|
||||
bool UnlockPasswordManagerIfNeeded();
|
||||
|
||||
static std::string getPskId(const ConnectionConfig &cc);
|
||||
};
|
||||
|
||||
#endif // MASTERCONTROLLER_H
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue