diff options
author | Ingo Klöcker <[email protected]> | 2020-08-11 15:02:25 +0000 |
---|---|---|
committer | Ingo Klöcker <[email protected]> | 2020-08-11 15:02:25 +0000 |
commit | 4f2cd3a0c6a8f3633040ff0e8cca787b2bd61fb2 (patch) | |
tree | 30240535a70bc5e6e62d1d6b51dea5d45017f90a | |
parent | cpp: Make private helper a file static (diff) | |
download | gpgme-4f2cd3a0c6a8f3633040ff0e8cca787b2bd61fb2.tar.gz gpgme-4f2cd3a0c6a8f3633040ff0e8cca787b2bd61fb2.zip |
qt: Support changing expiry of subkeys
* lang/qt/src/changeexpiryjob.h (ChangeExpiryJob::start): New overload
that accepts subkeys (with empty implementation).
* lang/qt/src/qgpgmechangeexpiryjob.h,
lang/qt/src/qgpgmechangeexpiryjob.cpp (QGpgMEChangeExpiryJob::start):
New overload that accepts subkeys.
--
This adds the possibility to change the expiry of subkeys.
GnuPG-bug-id: 4717
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | lang/qt/src/changeexpiryjob.h | 19 | ||||
-rw-r--r-- | lang/qt/src/qgpgmechangeexpiryjob.cpp | 19 | ||||
-rw-r--r-- | lang/qt/src/qgpgmechangeexpiryjob.h | 5 |
4 files changed, 42 insertions, 4 deletions
@@ -6,6 +6,9 @@ Noteworthy changes in version 1.14.1 (unreleased) * cpp: Support for set expire operations in the C++ bindings. [#5003] + * qt: Extended ChangeExpiryJob to support changing the expiry of + subkeys. [#4717] + * Interface changes relative to the 1.14.0 release: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ gpgme_op_setexpire_start NEW. diff --git a/lang/qt/src/changeexpiryjob.h b/lang/qt/src/changeexpiryjob.h index 90834791..39ed52ea 100644 --- a/lang/qt/src/changeexpiryjob.h +++ b/lang/qt/src/changeexpiryjob.h @@ -37,10 +37,17 @@ #include "job.h" +#ifdef BUILDING_QGPGME +# include "key.h" +#else +# include <gpgme++/key.h> +#endif + +#include <vector> + namespace GpgME { class Error; -class Key; } class QDateTime; @@ -76,6 +83,16 @@ public: */ virtual GpgME::Error start(const GpgME::Key &key, const QDateTime &expiry) = 0; + /** + Starts the change-expiry operation. \a key is the key to change, + \a subkeys is a list of subkeys of the key, and \a expiry is the + new expiry time. If \a subkeys is empty, then the expiry of \a key + is changed. Otherwise, the expiry of \a subkeys is changed. If + \a expiry is not valid, then \a key or \a subkeys are set to never expire. + */ + virtual GpgME::Error start(const GpgME::Key &key, const QDateTime &expiry, + const std::vector<GpgME::Subkey> &subkeys); + Q_SIGNALS: void result(const GpgME::Error &result, const QString &auditLogAsHtml = QString(), const GpgME::Error &auditLogError = GpgME::Error()); }; diff --git a/lang/qt/src/qgpgmechangeexpiryjob.cpp b/lang/qt/src/qgpgmechangeexpiryjob.cpp index 6eb5855f..68591b7e 100644 --- a/lang/qt/src/qgpgmechangeexpiryjob.cpp +++ b/lang/qt/src/qgpgmechangeexpiryjob.cpp @@ -54,20 +54,33 @@ QGpgMEChangeExpiryJob::QGpgMEChangeExpiryJob(Context *context) QGpgMEChangeExpiryJob::~QGpgMEChangeExpiryJob() {} -static QGpgMEChangeExpiryJob::result_type change_expiry(Context *ctx, const Key &key, const QDateTime &expiry) +static QGpgMEChangeExpiryJob::result_type change_expiry(Context *ctx, const Key &key, const QDateTime &expiry, + const std::vector<Subkey> &subkeys) { // convert expiry to "seconds from now"; use 1 second from now if expiry is before the current datetime const unsigned long expires = expiry.isValid() ? std::max<qint64>(QDateTime::currentDateTime().secsTo(expiry), 1) : 0; - auto err = ctx->setExpire(key, expires); + auto err = ctx->setExpire(key, expires, subkeys); return std::make_tuple(err, QString(), Error()); } Error QGpgMEChangeExpiryJob::start(const Key &key, const QDateTime &expiry) { - run(std::bind(&change_expiry, std::placeholders::_1, key, expiry)); + return start(key, expiry, std::vector<Subkey>()); +} + +Error QGpgMEChangeExpiryJob::start(const Key &key, const QDateTime &expiry, const std::vector<Subkey> &subkeys) +{ + run(std::bind(&change_expiry, std::placeholders::_1, key, expiry, subkeys)); + return Error(); +} + +/* For ABI compat not pure virtual. */ +Error ChangeExpiryJob::start(const Key &, const QDateTime &, const std::vector<Subkey> &) +{ return Error(); } + #include "qgpgmechangeexpiryjob.moc" diff --git a/lang/qt/src/qgpgmechangeexpiryjob.h b/lang/qt/src/qgpgmechangeexpiryjob.h index 83565686..bb9b9ba8 100644 --- a/lang/qt/src/qgpgmechangeexpiryjob.h +++ b/lang/qt/src/qgpgmechangeexpiryjob.h @@ -60,6 +60,11 @@ public: /* from ChangeExpiryJob */ GpgME::Error start(const GpgME::Key &key, const QDateTime &expiry) Q_DECL_OVERRIDE; + + /* from ChangeExpiryJob */ + GpgME::Error start(const GpgME::Key &key, const QDateTime &expiry, + const std::vector<GpgME::Subkey> &subkeys) Q_DECL_OVERRIDE; + }; } |