aboutsummaryrefslogtreecommitdiffstats
path: root/lang/qt/src/qgpgmeimportjob.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lang/qt/src/qgpgmeimportjob.cpp')
-rw-r--r--lang/qt/src/qgpgmeimportjob.cpp34
1 files changed, 30 insertions, 4 deletions
diff --git a/lang/qt/src/qgpgmeimportjob.cpp b/lang/qt/src/qgpgmeimportjob.cpp
index a62d05f9..ad5c2aee 100644
--- a/lang/qt/src/qgpgmeimportjob.cpp
+++ b/lang/qt/src/qgpgmeimportjob.cpp
@@ -55,10 +55,36 @@ QGpgMEImportJob::QGpgMEImportJob(Context *context)
lateInitialization();
}
-QGpgMEImportJob::~QGpgMEImportJob() {}
+QGpgMEImportJob::~QGpgMEImportJob() = default;
-static QGpgMEImportJob::result_type import_qba(Context *ctx, const QByteArray &certData)
+static const char *originToString(Key::Origin origin)
{
+ static const std::map<Key::Origin, const char *> mapping = {
+ { Key::OriginUnknown, "unknown" },
+ { Key::OriginKS, "ks" },
+ { Key::OriginDane, "dane" },
+ { Key::OriginWKD, "wkd" },
+ { Key::OriginURL, "url" },
+ { Key::OriginFile, "file" },
+ { Key::OriginSelf, "self" },
+ };
+ const auto it = mapping.find(origin);
+ return (it != std::end(mapping)) ? it->second : nullptr;
+}
+
+static QGpgMEImportJob::result_type import_qba(Context *ctx, const QByteArray &certData, Key::Origin keyOrigin, const QString &keyOriginUrl)
+{
+ if (keyOrigin != Key::OriginUnknown) {
+ if (const auto origin = originToString(keyOrigin)) {
+ std::string value{origin};
+ if (!keyOriginUrl.isEmpty()) {
+ value += ",";
+ value += keyOriginUrl.toStdString();
+ }
+ ctx->setFlag("key-origin", value.c_str());
+ }
+ }
+
QGpgME::QByteArrayDataProvider dp(certData);
Data data(&dp);
@@ -70,13 +96,13 @@ static QGpgMEImportJob::result_type import_qba(Context *ctx, const QByteArray &c
Error QGpgMEImportJob::start(const QByteArray &certData)
{
- run(std::bind(&import_qba, std::placeholders::_1, certData));
+ run(std::bind(&import_qba, std::placeholders::_1, certData, keyOrigin(), keyOriginUrl()));
return Error();
}
GpgME::ImportResult QGpgME::QGpgMEImportJob::exec(const QByteArray &keyData)
{
- const result_type r = import_qba(context(), keyData);
+ const result_type r = import_qba(context(), keyData, keyOrigin(), keyOriginUrl());
resultHook(r);
return mResult;
}