mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-02-05 01:15:33 -05:00
Add a method to get databases by uuid.
Each database gets a random uuid on construction which is not saved by KeePass2XmlWriter and only valid until the database object is deleted.
This commit is contained in:
parent
0d20955920
commit
d5cd0dcd14
@ -25,19 +25,29 @@
|
|||||||
#include "crypto/Random.h"
|
#include "crypto/Random.h"
|
||||||
#include "format/KeePass2.h"
|
#include "format/KeePass2.h"
|
||||||
|
|
||||||
|
QHash<Uuid, Database*> Database::m_uuidMap;
|
||||||
|
|
||||||
Database::Database()
|
Database::Database()
|
||||||
: m_metadata(new Metadata(this))
|
: m_metadata(new Metadata(this))
|
||||||
, m_cipher(KeePass2::CIPHER_AES)
|
, m_cipher(KeePass2::CIPHER_AES)
|
||||||
, m_compressionAlgo(CompressionGZip)
|
, m_compressionAlgo(CompressionGZip)
|
||||||
, m_transformRounds(50000)
|
, m_transformRounds(50000)
|
||||||
, m_hasKey(false)
|
, m_hasKey(false)
|
||||||
|
, m_uuid(Uuid::random())
|
||||||
{
|
{
|
||||||
setRootGroup(new Group());
|
setRootGroup(new Group());
|
||||||
rootGroup()->setUuid(Uuid::random());
|
rootGroup()->setUuid(Uuid::random());
|
||||||
|
|
||||||
|
m_uuidMap.insert(m_uuid, this);
|
||||||
|
|
||||||
connect(m_metadata, SIGNAL(modified()), this, SIGNAL(modified()));
|
connect(m_metadata, SIGNAL(modified()), this, SIGNAL(modified()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Database::~Database()
|
||||||
|
{
|
||||||
|
m_uuidMap.remove(m_uuid);
|
||||||
|
}
|
||||||
|
|
||||||
Group* Database::rootGroup()
|
Group* Database::rootGroup()
|
||||||
{
|
{
|
||||||
return m_rootGroup;
|
return m_rootGroup;
|
||||||
@ -240,3 +250,13 @@ void Database::recycleGroup(Group* group)
|
|||||||
delete group;
|
delete group;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Uuid Database::uuid()
|
||||||
|
{
|
||||||
|
return m_uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
Database* Database::databaseByUuid(const Uuid& uuid)
|
||||||
|
{
|
||||||
|
return m_uuidMap.value(uuid, 0);
|
||||||
|
}
|
||||||
|
@ -49,6 +49,7 @@ public:
|
|||||||
static const quint32 CompressionAlgorithmMax = CompressionGZip;
|
static const quint32 CompressionAlgorithmMax = CompressionGZip;
|
||||||
|
|
||||||
Database();
|
Database();
|
||||||
|
~Database();
|
||||||
Group* rootGroup();
|
Group* rootGroup();
|
||||||
const Group* rootGroup() const;
|
const Group* rootGroup() const;
|
||||||
|
|
||||||
@ -89,6 +90,13 @@ public:
|
|||||||
void recycleEntry(Entry* entry);
|
void recycleEntry(Entry* entry);
|
||||||
void recycleGroup(Group* group);
|
void recycleGroup(Group* group);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a unique id that is only valid as long as the Database exists.
|
||||||
|
*/
|
||||||
|
Uuid uuid();
|
||||||
|
|
||||||
|
static Database* databaseByUuid(const Uuid& uuid);
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void groupDataChanged(Group* group);
|
void groupDataChanged(Group* group);
|
||||||
void groupAboutToAdd(Group* group, int index);
|
void groupAboutToAdd(Group* group, int index);
|
||||||
@ -117,6 +125,9 @@ private:
|
|||||||
|
|
||||||
CompositeKey m_key;
|
CompositeKey m_key;
|
||||||
bool m_hasKey;
|
bool m_hasKey;
|
||||||
|
|
||||||
|
Uuid m_uuid;
|
||||||
|
static QHash<Uuid, Database*> m_uuidMap;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // KEEPASSX_DATABASE_H
|
#endif // KEEPASSX_DATABASE_H
|
||||||
|
Loading…
x
Reference in New Issue
Block a user