Page Menu
Home
GnuPG
Search
Configure Global Search
Log In
Files
F23558448
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Size
15 KB
Subscribers
None
View Options
diff --git a/src/commands/exportopenpgpcertstoservercommand.cpp b/src/commands/exportopenpgpcertstoservercommand.cpp
index 9f185ddc6..af0430601 100644
--- a/src/commands/exportopenpgpcertstoservercommand.cpp
+++ b/src/commands/exportopenpgpcertstoservercommand.cpp
@@ -1,189 +1,177 @@
/* -*- mode: c++; c-basic-offset:4 -*-
commands/exportopenpgpcertstoservercommand.cpp
This file is part of Kleopatra, the KDE keymanager
SPDX-FileCopyrightText: 2008 Klarälvdalens Datakonsult AB
SPDX-License-Identifier: GPL-2.0-or-later
*/
#include <config-kleopatra.h>
#include "exportopenpgpcertstoservercommand.h"
#include "command_p.h"
#include <Libkleo/Algorithm>
#include <Libkleo/Formatting>
#include <Libkleo/GnuPG>
#include <Libkleo/KeyHelpers>
#include <gpgme++/key.h>
#include <KLocalizedString>
#include <KMessageBox>
using namespace Kleo;
using namespace Kleo::Commands;
using namespace GpgME;
ExportOpenPGPCertsToServerCommand::ExportOpenPGPCertsToServerCommand(KeyListController *c)
: GnuPGProcessCommand(c)
{
}
ExportOpenPGPCertsToServerCommand::ExportOpenPGPCertsToServerCommand(QAbstractItemView *v, KeyListController *c)
: GnuPGProcessCommand(v, c)
{
}
ExportOpenPGPCertsToServerCommand::ExportOpenPGPCertsToServerCommand(const Key &key)
: GnuPGProcessCommand(key)
{
}
ExportOpenPGPCertsToServerCommand::ExportOpenPGPCertsToServerCommand(const std::vector<Key> &keys)
: GnuPGProcessCommand(keys)
{
}
ExportOpenPGPCertsToServerCommand::~ExportOpenPGPCertsToServerCommand() = default;
static bool confirmExport(const std::vector<Key> &pgpKeys, QWidget *parentWidget)
{
auto notCertifiedKeys = std::accumulate(pgpKeys.cbegin(), pgpKeys.cend(), QStringList{}, [](auto keyNames, const auto &key) {
const bool allValidUserIDsAreCertifiedByUser = Kleo::all_of(key.userIDs(), [](const UserID &userId) {
return userId.isBad() || Kleo::userIDIsCertifiedByUser(userId);
});
if (!allValidUserIDsAreCertifiedByUser) {
keyNames.push_back(Formatting::formatForComboBox(key));
}
return keyNames;
});
if (!notCertifiedKeys.empty()) {
if (pgpKeys.size() == 1) {
const auto answer = KMessageBox::warningContinueCancel( //
parentWidget,
xi18nc("@info",
"<para>You haven't certified all valid user IDs of this certificate "
"with an exportable certification. People relying on your certifications "
"may not be able to verify the certificate.</para>"
"<para>Do you want to continue the export?</para>"),
i18nc("@title:window", "Confirm Certificate Export"),
KGuiItem{i18ncp("@action:button", "Export Certificate", "Export Certificates", 1)},
KStandardGuiItem::cancel(),
QStringLiteral("confirm-upload-of-uncertified-keys"));
return answer == KMessageBox::Continue;
} else {
std::sort(notCertifiedKeys.begin(), notCertifiedKeys.end());
const auto answer = KMessageBox::warningContinueCancelList( //
parentWidget,
xi18nc("@info",
"<para>You haven't certified all valid user IDs of the certificates listed below "
"with exportable certifications. People relying on your certifications "
"may not be able to verify the certificates.</para>"
"<para>Do you want to continue the export?</para>"),
notCertifiedKeys,
i18nc("@title:window", "Confirm Certificate Export"),
KGuiItem{i18ncp("@action:button", "Export Certificate", "Export Certificates", pgpKeys.size())},
KStandardGuiItem::cancel(),
QStringLiteral("confirm-upload-of-uncertified-keys"));
return answer == KMessageBox::Continue;
}
}
return true;
}
bool ExportOpenPGPCertsToServerCommand::preStartHook(QWidget *parent) const
{
if (!haveKeyserverConfigured()) {
- if (KMessageBox::warningContinueCancel(parent,
- xi18nc("@info",
- "<para>No OpenPGP directory services have been configured.</para>"
- "<para>Since none is configured, <application>Kleopatra</application> will use "
- "<resource>keys.gnupg.net</resource> as the server to export to.</para>"
- "<para>You can configure OpenPGP directory servers in <application>Kleopatra</application>'s "
- "configuration dialog.</para>"
- "<para>Do you want to continue with <resource>keys.gnupg.net</resource> "
- "as the server to export to?</para>"),
- i18nc("@title:window", "OpenPGP Certificate Export"),
- KGuiItem{i18ncp("@action:button", "Export Certificate", "Export Certificates", d->keys().size())},
- KStandardGuiItem::cancel(),
- QStringLiteral("warn-export-openpgp-missing-keyserver"))
- != KMessageBox::Continue) {
- return false;
- }
+ d->error(i18ncp("@info",
+ "Exporting the certificate to a key server is not possible "
+ "because the usage of key servers has been disabled explicitly.",
+ "Exporting the certificates to a key server is not possible "
+ "because the usage of key servers has been disabled explicitly.",
+ d->keys().size()));
+ return false;
}
if (!confirmExport(d->keys(), parent)) {
return false;
}
return KMessageBox::warningContinueCancel(parent,
xi18nc("@info",
"<para>When OpenPGP certificates have been exported to a public directory server, "
"it is nearly impossible to remove them again.</para>"
"<para>Before exporting your certificate to a public directory server, make sure that you "
"have created a revocation certificate so you can revoke the certificate if needed later.</para>"
"<para>Are you sure you want to continue?</para>"),
i18nc("@title:window", "OpenPGP Certificate Export"),
KGuiItem{i18ncp("@action:button", "Export Certificate", "Export Certificates", d->keys().size())},
KStandardGuiItem::cancel(),
QStringLiteral("warn-export-openpgp-nonrevocable"))
== KMessageBox::Continue;
}
QStringList ExportOpenPGPCertsToServerCommand::arguments() const
{
QStringList result;
result << gpgPath();
- if (!haveKeyserverConfigured()) {
- result << QStringLiteral("--keyserver") << QStringLiteral("keys.gnupg.net");
- }
result << QStringLiteral("--send-keys");
const auto keys = d->keys();
for (const Key &key : keys) {
result << QLatin1String(key.primaryFingerprint());
}
return result;
}
QString ExportOpenPGPCertsToServerCommand::errorCaption() const
{
return i18nc("@title:window", "OpenPGP Certificate Export Error");
}
QString ExportOpenPGPCertsToServerCommand::successCaption() const
{
return i18nc("@title:window", "OpenPGP Certificate Export Finished");
}
QString ExportOpenPGPCertsToServerCommand::crashExitMessage(const QStringList &args) const
{
return xi18nc("@info",
"<para>The GPG process that tried to export OpenPGP certificates "
"ended prematurely because of an unexpected error.</para>"
"<para>Please check the output of <icode>%1</icode> for details.</para>",
args.join(QLatin1Char(' ')));
}
QString ExportOpenPGPCertsToServerCommand::errorExitMessage(const QStringList &args) const
{
// ki18n(" ") as initializer because initializing with empty string leads to
// (I18N_EMPTY_MESSAGE)
const auto errorLines = errorString().split(QLatin1Char{'\n'});
const auto errorText = std::accumulate(errorLines.begin(), errorLines.end(), KLocalizedString{ki18n(" ")}, [](KLocalizedString temp, const auto &line) {
return kxi18nc("@info used for concatenating multiple lines of text with line breaks; most likely this shouldn't be translated", "%1<nl />%2")
.subs(temp)
.subs(line);
});
return xi18nc("@info",
"<para>An error occurred while trying to export OpenPGP certificates.</para> "
"<para>The output of <command>%1</command> was:<nl /><message>%2</message></para>",
args[0],
errorText);
}
QString ExportOpenPGPCertsToServerCommand::successMessage(const QStringList &) const
{
return i18nc("@info", "OpenPGP certificates exported successfully.");
}
diff --git a/src/commands/refreshopenpgpcertscommand.cpp b/src/commands/refreshopenpgpcertscommand.cpp
index 4eb0537b4..24f9f1f06 100644
--- a/src/commands/refreshopenpgpcertscommand.cpp
+++ b/src/commands/refreshopenpgpcertscommand.cpp
@@ -1,117 +1,103 @@
/* -*- mode: c++; c-basic-offset:4 -*-
commands/refreshopenpgpcertscommand.cpp
This file is part of Kleopatra, the KDE keymanager
SPDX-FileCopyrightText: 2008 Klarälvdalens Datakonsult AB
SPDX-License-Identifier: GPL-2.0-or-later
*/
#include <config-kleopatra.h>
#include "refreshopenpgpcertscommand.h"
+#include "command_p.h"
+
#include <Libkleo/GnuPG>
#include <KLocalizedString>
#include <KMessageBox>
using namespace Kleo;
using namespace Kleo::Commands;
RefreshOpenPGPCertsCommand::RefreshOpenPGPCertsCommand(KeyListController *c)
: GnuPGProcessCommand(c)
{
setShowsOutputWindow(true);
}
RefreshOpenPGPCertsCommand::RefreshOpenPGPCertsCommand(QAbstractItemView *v, KeyListController *c)
: GnuPGProcessCommand(v, c)
{
setShowsOutputWindow(true);
}
RefreshOpenPGPCertsCommand::~RefreshOpenPGPCertsCommand()
{
}
bool RefreshOpenPGPCertsCommand::preStartHook(QWidget *parent) const
{
- if (!haveKeyserverConfigured())
- if (KMessageBox::warningContinueCancel(parent,
- xi18nc("@info",
- "<para>No OpenPGP directory services have been configured.</para>"
- "<para>If not all of the certificates carry the name of their preferred "
- "certificate server (few do), a fallback server is needed to fetch from.</para>"
- "<para>Since none is configured, <application>Kleopatra</application> will use "
- "<resource>keys.gnupg.net</resource> as the fallback.</para>"
- "<para>You can configure OpenPGP directory servers in Kleopatra's "
- "configuration dialog.</para>"
- "<para>Do you want to continue with <resource>keys.gnupg.net</resource> "
- "as fallback server?</para>"),
- i18nc("@title:window", "OpenPGP Certificate Refresh"),
- KStandardGuiItem::cont(),
- KStandardGuiItem::cancel(),
- QStringLiteral("warn-refresh-openpgp-missing-keyserver"))
- != KMessageBox::Continue) {
- return false;
- }
+ if (!haveKeyserverConfigured()) {
+ d->error(i18nc("@info",
+ "Refreshing the OpenPGP certificates is not possible because "
+ "the usage of key servers has been disabled explicitly."));
+ return false;
+ }
return KMessageBox::warningContinueCancel(parent,
xi18nc("@info",
"<para>Refreshing OpenPGP certificates implies downloading all certificates anew, "
"to check if any of them have been revoked in the meantime.</para>"
"<para>This can put a severe strain on your own as well as other people's network "
"connections, and can take up to an hour or more to complete, depending on "
"your network connection, and the number of certificates to check.</para> "
"<para>Are you sure you want to continue?</para>"),
i18nc("@title:window", "OpenPGP Certificate Refresh"),
KStandardGuiItem::cont(),
KStandardGuiItem::cancel(),
QStringLiteral("warn-refresh-openpgp-expensive"))
== KMessageBox::Continue;
}
QStringList RefreshOpenPGPCertsCommand::arguments() const
{
QStringList result;
result << gpgPath();
- if (!haveKeyserverConfigured()) {
- result << QStringLiteral("--keyserver") << QStringLiteral("keys.gnupg.net");
- }
result << QStringLiteral("--refresh-keys");
return result;
}
QString RefreshOpenPGPCertsCommand::errorCaption() const
{
return i18nc("@title:window", "OpenPGP Certificate Refresh Error");
}
QString RefreshOpenPGPCertsCommand::successCaption() const
{
return i18nc("@title:window", "OpenPGP Certificate Refresh Finished");
}
QString RefreshOpenPGPCertsCommand::crashExitMessage(const QStringList &args) const
{
return xi18nc("@info",
"<para>The GPG process that tried to refresh OpenPGP certificates "
"ended prematurely because of an unexpected error.</para>"
"<para>Please check the output of <icode>%1</icode> for details.</para>",
args.join(QLatin1Char(' ')));
}
QString RefreshOpenPGPCertsCommand::errorExitMessage(const QStringList &args) const
{
return xi18nc("@info",
"<para>An error occurred while trying to refresh OpenPGP certificates.</para> "
"<para>The output from <command>%1</command> was: <bcode>%2</bcode></para>",
args[0],
errorString());
}
QString RefreshOpenPGPCertsCommand::successMessage(const QStringList &) const
{
return i18nc("@info", "OpenPGP certificates refreshed successfully.");
// ### --check-trustdb
}
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Sat, May 31, 8:00 AM (9 h, 35 m)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
54/c5/313b05915d6db7df8f12be7ff218
Attached To
rKLEOPATRA Kleopatra
Event Timeline
Log In to Comment