diff options
author | Ingo Klöcker <[email protected]> | 2024-05-21 14:32:23 +0000 |
---|---|---|
committer | Ingo Klöcker <[email protected]> | 2024-05-21 14:38:59 +0000 |
commit | 90eb80134b2d7720b187a6b7fd16f40f23cf1022 (patch) | |
tree | 30b1f0beccb29477c96ea52ae95b01fb62a4feae /lang/cpp/src/key.h | |
parent | json: Add information about revocation keys to key list result (diff) | |
download | gpgme-90eb80134b2d7720b187a6b7fd16f40f23cf1022.tar.gz gpgme-90eb80134b2d7720b187a6b7fd16f40f23cf1022.zip |
cpp: Add information about revocation keys to Keyikloecker/t7118-revkeys
* lang/cpp/src/gpgmefw.h (gpgme_revocation_key_t): New forward
declaration.
* lang/cpp/src/key.cpp, lang/cpp/src/key.h (class Key): New methods
revocationKey, numRevocationKeys, revocationKeys.
(class RevocationKey): New.
(swap): New overload for RevocationKey.
(operator<<): New overload for RevocationKey.
* lang/cpp/src/key.cpp (operator<<): Add information about revocation
keys to the output stream for Key.
* lang/cpp/tests/run-keylist.cpp (main): Don't output Key if nextKey
failed, e.g. at the end of the key listing.
--
GnuPG-bug-id: 7118
Diffstat (limited to 'lang/cpp/src/key.h')
-rw-r--r-- | lang/cpp/src/key.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/lang/cpp/src/key.h b/lang/cpp/src/key.h index bdcc18d2..a1648884 100644 --- a/lang/cpp/src/key.h +++ b/lang/cpp/src/key.h @@ -44,6 +44,7 @@ class Context; class Subkey; class UserID; class TofuInfo; +class RevocationKey; typedef std::shared_ptr< std::remove_pointer<gpgme_key_t>::type > shared_gpgme_key_t; @@ -100,6 +101,10 @@ public: std::vector<UserID> userIDs() const; std::vector<Subkey> subkeys() const; + RevocationKey revocationKey(unsigned int index) const; + unsigned int numRevocationKeys() const; + std::vector<RevocationKey> revocationKeys() const; + bool isRevoked() const; bool isExpired() const; bool isDisabled() const; @@ -547,9 +552,53 @@ private: gpgme_key_sig_t sig; }; +// +// class RevocationKey +// + +class GPGMEPP_EXPORT RevocationKey +{ +public: + RevocationKey(); + RevocationKey(const shared_gpgme_key_t &key, gpgme_revocation_key_t revkey); + RevocationKey(const shared_gpgme_key_t &key, unsigned int idx); + + // Rule of Zero + + void swap(RevocationKey &other) + { + using std::swap; + swap(this->key, other.key); + swap(this->revkey, other.revkey); + } + + bool isNull() const + { + return !key || !revkey; + } + + Key parent() const; + + const char *fingerprint() const; + + bool isSensitive() const; + + int algorithm() const; + +private: + shared_gpgme_key_t key; + gpgme_revocation_key_t revkey; +}; + +inline void swap(RevocationKey& v1, RevocationKey& v2) +{ + v1.swap(v2); +} + GPGMEPP_EXPORT std::ostream &operator<<(std::ostream &os, const UserID &uid); GPGMEPP_EXPORT std::ostream &operator<<(std::ostream &os, const Subkey &subkey); GPGMEPP_EXPORT std::ostream &operator<<(std::ostream &os, const Key &key); +GPGMEPP_EXPORT std::ostream &operator<<(std::ostream &os, const RevocationKey &revkey); } // namespace GpgME |