Allow exporting secret keys.

Requests the passphrase with a popup.

As from GPGME 1.15.0, the loopback pinentry is functional when exporting secret keys. It works fine when the exact passphrase is provided. If it's a wrong passphrase, GPGME does not generate an ::Error, but the app crashes with 'free(): double free detected in tcache 2'.

Hence, this patch cannot be committed to master.

Status : dangerous
Result : works and works not
Reason : a wrong passphrase means a crash
This commit is contained in:
SET
2020-11-20 22:41:29 +01:00
parent bb174075df
commit 82b8810f62
15 changed files with 241 additions and 142 deletions

View File

@@ -142,7 +142,6 @@ K7Main::Create()
vblButtons->addStretch(1);
// Everyone can export a key
m_btnExport = new WPushButton(TR("Export"));
m_btnExport->setToolTip(TR("TTTExport"));
m_btnExport->hide();
vblButtons->addWidget(unique_ptr<WPushButton> (m_btnExport));
if (m_config->CanCreateKeys())
@@ -314,7 +313,8 @@ void K7Main::OnKeyAnchorClicked(WAnchor * source)
DisplaySubKeys(id, secret);
if (m_config->CanDelete()) // m_btnDelete is NULL otherwise
m_btnDelete->setHidden(!m_keyringIO->CanKeyBeDeleted(id));
m_btnExport->show();
m_keyringIO->PrepareExport(id, secret);
}