diff options
author | saturneric <[email protected]> | 2024-11-18 14:31:25 +0000 |
---|---|---|
committer | saturneric <[email protected]> | 2024-11-18 14:31:25 +0000 |
commit | 91b3a5950f0d3243ad514f0832faf1549f222d3a (patch) | |
tree | fce00a530f6b66d30855d6ce4dcd2087e56f4de4 /src/core/function/gpg/GpgKeyImportExporter.cpp | |
parent | feat: use keys.openpgp.org as default for key publishing and refreshing (diff) | |
download | GpgFrontend-91b3a5950f0d3243ad514f0832faf1549f222d3a.tar.gz GpgFrontend-91b3a5950f0d3243ad514f0832faf1549f222d3a.zip |
feat: support export a single subkey
Diffstat (limited to 'src/core/function/gpg/GpgKeyImportExporter.cpp')
-rw-r--r-- | src/core/function/gpg/GpgKeyImportExporter.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
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<GpgError, GFBuffer> { + 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 |