Merge pull request #581 from keepassxreboot/feature/support_for_dbhash_update

Support for updating legacy database hashes
This commit is contained in:
Sami Vänttinen 2019-07-28 15:28:20 +03:00 committed by GitHub
commit 6c407cb3cd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -521,7 +521,8 @@ keepass.getDatabaseHash = function(callback, tab, enableTimeout = false, trigger
const incrementedNonce = keepass.incrementedNonce(nonce);
const messageData = {
action: kpAction
action: kpAction,
connectedKeys: Object.keys(keepass.keyRing) // This will be removed in the future
};
const encrypted = keepass.encrypt(messageData, nonce);
@ -565,6 +566,12 @@ keepass.getDatabaseHash = function(callback, tab, enableTimeout = false, trigger
keepass.isDatabaseClosed = false;
keepass.isKeePassXCAvailable = true;
// Update the databaseHash from legacy hash
if (parsed.oldHash) {
keepass.updateDatabaseHash(parsed.oldHash, parsed.hash);
}
callback(parsed.hash);
return;
} else if (parsed.errorCode) {
@ -884,6 +891,19 @@ keepass.updateLastUsed = function(hash) {
browser.storage.local.set({ 'keyRing': keepass.keyRing });
}
};
// Update the databaseHash from legacy hash
keepass.updateDatabaseHash = function(oldHash, newHash) {
if (!oldHash || !newHash) {
return;
}
if ((oldHash in keepass.keyRing)) {
keepass.keyRing[newHash] = keepass.keyRing[oldHash];
keepass.keyRing[newHash].hash = newHash;
delete keepass.keyRing[oldHash];
browser.storage.local.set({ 'keyRing': keepass.keyRing });
}
};
keepass.deleteKey = function(hash) {
delete keepass.keyRing[hash];