From 91b3a5950f0d3243ad514f0832faf1549f222d3a Mon Sep 17 00:00:00 2001 From: saturneric Date: Mon, 18 Nov 2024 15:31:25 +0100 Subject: feat: support export a single subkey --- src/core/function/gpg/GpgKeyImportExporter.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/core/function/gpg/GpgKeyImportExporter.cpp') diff --git a/src/core/function/gpg/GpgKeyImportExporter.cpp b/src/core/function/gpg/GpgKeyImportExporter.cpp index d0494339..fa1f908f 100644 --- a/src/core/function/gpg/GpgKeyImportExporter.cpp +++ b/src/core/function/gpg/GpgKeyImportExporter.cpp @@ -174,4 +174,20 @@ void GpgKeyImportExporter::ExportAllKeys(const KeyArgsList& keys, bool secret, cb, "gpgme_op_export_keys", "2.1.0"); } +auto GpgKeyImportExporter::ExportSubkey(const QString& fpr, bool ascii) const + -> std::tuple { + int mode = 0; + mode |= GPGME_EXPORT_MODE_SECRET_SUBKEY; + + auto pattern = fpr; + if (!fpr.endsWith("!")) pattern += "!"; + + GpgData data_out; + auto* ctx = ascii ? ctx_.DefaultContext() : ctx_.BinaryContext(); + auto err = + gpgme_op_export(ctx, pattern.toLatin1().constData(), mode, data_out); + if (gpgme_err_code(err) != GPG_ERR_NO_ERROR) return {err, {}}; + + return {err, data_out.Read2GFBuffer()}; +} } // namespace GpgFrontend -- cgit v1.2.3