diff options
Diffstat (limited to 'src/core/utils/GpgUtils.cpp')
-rw-r--r-- | src/core/utils/GpgUtils.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/core/utils/GpgUtils.cpp b/src/core/utils/GpgUtils.cpp index c7040cc2..22ba856e 100644 --- a/src/core/utils/GpgUtils.cpp +++ b/src/core/utils/GpgUtils.cpp @@ -353,4 +353,21 @@ auto GPGFRONTEND_CORE_EXPORT GetUsagesBySubkey(const GpgSubKey& key) if (key.IsADSK()) usages += "R"; return usages; } + +auto GPGFRONTEND_CORE_EXPORT GetGpgKeyByGpgAbstractKey(GpgAbstractKey* ab_key) + -> GpgKey { + if (!ab_key->IsGood()) return {}; + + if (ab_key->IsSubKey()) { + auto* s_key = dynamic_cast<GpgSubKey*>(ab_key); + + assert(s_key != nullptr); + if (s_key == nullptr) return {}; + + return *s_key->Convert2GpgKey(); + } + + auto* key = dynamic_cast<GpgKey*>(ab_key); + return *key; +} } // namespace GpgFrontend |