From 7633ef9d605057ac26cbce354edc4c0fc9b18e3f Mon Sep 17 00:00:00 2001 From: SET Date: Sun, 15 Nov 2020 11:58:07 +0100 Subject: [PATCH] Add function to export public keys. Expects a fingerprint to export a single public key in armor mode. --- GpgMEWorker.cpp | 17 ++++++++++++++++- GpgMEWorker.h | 10 ++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/GpgMEWorker.cpp b/GpgMEWorker.cpp index 7a2d03f..20f4aa9 100644 --- a/GpgMEWorker.cpp +++ b/GpgMEWorker.cpp @@ -273,10 +273,25 @@ const Error GpgMEWorker::ExportPrivateKey(const char * pattern, string& buffer, Error e = ctx->exportPublicKeys(pattern, kData, flags); buffer = kData.toString(); // Empty - + delete ppp; delete ctx; return e; } #endif + +const Error GpgMEWorker::ExportPublicKey(const char* pattern, string& buffer) +{ + GpgME::Data kData; + Context * ctx = Context::createForProtocol(Protocol::OpenPGP); + ctx->setArmor(true); + uint flags = Context::ExportDefault; + + Error e = ctx->exportPublicKeys(pattern, kData, flags); + buffer = kData.toString(); + + delete ctx; + + return e; +} diff --git a/GpgMEWorker.h b/GpgMEWorker.h index 8bdee87..31b6535 100644 --- a/GpgMEWorker.h +++ b/GpgMEWorker.h @@ -146,9 +146,15 @@ public: * @return */ const Error ExportPrivateKey(const char * pattern, string& buffer, - const string& passphrase = ""); + const string& passphrase = ""); #endif - + /** + * Export a public key. + * @param pattern : a key fingerprint + * @param buffer : returns data in armor mode + * @return + */ + const Error ExportPublicKey(const char * pattern, string& buffer); private: Context * m_ctx; // GPG will fetch a password here.