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
|
|
@ -12,7 +12,7 @@
|
|||
#include <memory>
|
||||
#include <tuple>
|
||||
#include <vector>
|
||||
#include <boost/optional.hpp>
|
||||
#include <optional>
|
||||
|
||||
class PgConstraint;
|
||||
class OpenDatabase;
|
||||
|
|
@ -121,7 +121,7 @@ private:
|
|||
|
||||
// std::shared_ptr<RowList> resultToRowList(std::shared_ptr<Pgsql::Result> result);
|
||||
|
||||
using Value = boost::optional<std::string>;
|
||||
using Value = std::optional<std::string>;
|
||||
|
||||
/** Used to remember the changes that have been made to rows.
|
||||
*
|
||||
|
|
@ -194,7 +194,7 @@ private:
|
|||
iter->second.setValue(col, value);
|
||||
}
|
||||
|
||||
boost::optional<Value> getValue(int col, int row) const
|
||||
std::optional<Value> getValue(int col, int row) const
|
||||
{
|
||||
auto iter = m_rows.find(row);
|
||||
if (iter != m_rows.end()) {
|
||||
|
|
@ -204,7 +204,7 @@ private:
|
|||
return cell->second;
|
||||
|
||||
}
|
||||
return boost::none;
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
auto begin() { return m_rows.begin(); }
|
||||
|
|
@ -233,7 +233,7 @@ private:
|
|||
ASyncWindow * m_asyncWindow;
|
||||
std::shared_ptr<OpenDatabase> m_database;
|
||||
PgClass m_table;
|
||||
boost::optional<PgConstraint> m_primaryKey;
|
||||
std::optional<PgConstraint> m_primaryKey;
|
||||
ASyncDBConnection m_dbConn;
|
||||
|
||||
bool callLoadData = false;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue