From a2a7c20885f74d504e21f2850816d7fd31be8bff Mon Sep 17 00:00:00 2001 From: varjolintu Date: Tue, 16 Jul 2019 20:34:21 +0300 Subject: [PATCH] Update legacy database hashes --- keepassxc-browser/background/keepass.js | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/keepassxc-browser/background/keepass.js b/keepassxc-browser/background/keepass.js index e56d7c6..7f6a09c 100755 --- a/keepassxc-browser/background/keepass.js +++ b/keepassxc-browser/background/keepass.js @@ -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];