From 0e9cc34ac0e702357cff32a5dd738653f7243575 Mon Sep 17 00:00:00 2001 From: SET Date: Sun, 15 Nov 2020 20:55:05 +0100 Subject: [PATCH] Prefer key fingerprints anywhere. During delete process, keys were identified by Key::keyID(). It seems that collisions are possible; so use fingerprints instead. --- KeyringIO.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/KeyringIO.cpp b/KeyringIO.cpp index 3d2375c..0914bf7 100644 --- a/KeyringIO.cpp +++ b/KeyringIO.cpp @@ -117,7 +117,7 @@ bool KeyringIO::CanKeyBeDeleted(const WString& fullKeyID) {// Is a public key k = gpgw.FindKey(fullKeyID.toUTF8().c_str(), e, false); // Prepare actual delete - m_btnDelete->setAttributeValue("keyid", k.keyID()); + m_btnDelete->setAttributeValue("fpr", k.primaryFingerprint()); m_btnDelete->setAttributeValue("hasSecret", "0"); return true; } @@ -131,7 +131,7 @@ bool KeyringIO::CanKeyBeDeleted(const WString& fullKeyID) { if (Tools::ConfigKeyIdMatchesKey(k, *it)) { - m_btnDelete->setAttributeValue("keyid", k.keyID()); + m_btnDelete->setAttributeValue("fpr", k.primaryFingerprint()); m_btnDelete->setAttributeValue("hasSecret", "1"); return true; } @@ -157,13 +157,13 @@ void KeyringIO::DoDeleteKey() Error c_e, e; GpgMECWorker gpgcw; GpgMEWorker gpgw; - const WString fullKeyID = m_btnDelete->attributeValue("keyid"); + const WString fprToDelete = m_btnDelete->attributeValue("fpr"); const WString hasSecret = m_btnDelete->attributeValue("hasSecret"); bool secret = true; if (hasSecret == WString("0")) secret = false; // Get the key before deletion, to show its ID on success - GpgME::Key k = gpgw.FindKey(fullKeyID.toUTF8().c_str(), e, secret); + GpgME::Key k = gpgw.FindKey(fprToDelete.toUTF8().c_str(), e, secret); if (e.code() != 0) { m_tmwMessage->SetText(e.asString());