Allow revoking key certifications.

Certified user identities in keys can be revoked using the same popup
for certification.

Requires GnuPG 2.2.24 (not available in distro's repository, not fully
tested to date).
This commit is contained in:
SET
2020-11-22 14:22:08 +01:00
parent 898764be7b
commit 110e5e4fb3
7 changed files with 168 additions and 35 deletions

View File

@@ -153,19 +153,43 @@ void KeyEdit::CertifyKey()
}
const WString signingKey = m_popupUid->GetSelectedKey();
const WString keyToSign = m_popupUid->GetKeyToSign();
int options = m_popupUid->GetCertifyOptions();
GpgMEWorker gpgWorker;
GpgME::Error e = gpgWorker.CertifyKey(signingKey.toUTF8().c_str(),
keyToSign.toUTF8().c_str(),
uidsToSign, options,
m_popupUid->GetPassphrase());
GpgME::Error e;
if (m_popupUid->WhatToDo() == PopupCertifyUserId::CertifyUid)
{
int options = m_popupUid->GetCertifyOptions();
e = gpgWorker.CertifyKey(signingKey.toUTF8().c_str(),
keyToSign.toUTF8().c_str(),
uidsToSign, options,
m_popupUid->GetPassphrase());
}
else
{
vector<GpgME::UserID> uidsToRevoke
= m_popupUid->GetUidsToRevokeCertification();
e = gpgWorker.RevokeKeyCertifications(signingKey.toUTF8().c_str(),
keyToSign.toUTF8().c_str(),
uidsToRevoke,
m_popupUid->GetPassphrase());
}
if (e.code() != 0)
{
m_owner->m_tmwMessage->SetText(TR("CertificationFailure"));
m_popupUid->ShowPassphrase(true);
return;
if (m_popupUid->WhatToDo() == PopupCertifyUserId::CertifyUid)
{
m_owner->m_tmwMessage->SetText(e.asString());
m_popupUid->ShowPassphrase(true);
return;
}
else {
m_owner->m_tmwMessage->SetText(e.asString());
m_popupUid->ShowPassphrase(true);
return;
}
}
m_owner->m_tmwMessage->SetText(TR("CertificationSuccess"));
if (m_popupUid->WhatToDo() == PopupCertifyUserId::CertifyUid)
m_owner->m_tmwMessage->SetText(TR("CertificationSuccess"));
else
m_owner->m_tmwMessage->SetText(TR("RevocationSuccess"));
m_popupUid->ShowPassphrase(false);
m_owner->DisplayUids(keyToSign);
}