aboutsummaryrefslogtreecommitdiffstats
path: root/src/core/function/gpg/GpgKeyOpera.cpp
diff options
context:
space:
mode:
authorsaturneric <[email protected]>2025-02-03 14:42:38 +0000
committersaturneric <[email protected]>2025-02-03 14:42:38 +0000
commita6f82a3cbdbdd269796fecfb857440fda4e6ac6d (patch)
treed87609a7c8f50079ae648213ca979cb83923bd6d /src/core/function/gpg/GpgKeyOpera.cpp
parentfeat: upgrade gpgme to v1.24.1 (diff)
downloadGpgFrontend-a6f82a3cbdbdd269796fecfb857440fda4e6ac6d.tar.gz
GpgFrontend-a6f82a3cbdbdd269796fecfb857440fda4e6ac6d.zip
feat: allow add and show ADSKdev/2.1.6/adsk
Diffstat (limited to 'src/core/function/gpg/GpgKeyOpera.cpp')
-rw-r--r--src/core/function/gpg/GpgKeyOpera.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/core/function/gpg/GpgKeyOpera.cpp b/src/core/function/gpg/GpgKeyOpera.cpp
index 23a848ee..32ae1f83 100644
--- a/src/core/function/gpg/GpgKeyOpera.cpp
+++ b/src/core/function/gpg/GpgKeyOpera.cpp
@@ -364,4 +364,40 @@ void GpgKeyOpera::DeleteKey(const KeyId& key_id) {
keys.push_back(key_id);
DeleteKeys(keys);
}
+
+auto AddADSK2KeyImpl(GpgContext& ctx, const GpgKey& key, const SubkeyId& s_fpr,
+ const DataObjectPtr& data_object) -> GpgError {
+ unsigned int flags = 0;
+ flags |= GPGME_CREATE_ADSK;
+
+ auto err =
+ gpgme_op_createsubkey(ctx.DefaultContext(), static_cast<gpgme_key_t>(key),
+ s_fpr.toLatin1(), 0, 0, flags);
+ if (CheckGpgError(err) != GPG_ERR_NO_ERROR) {
+ data_object->Swap({GpgGenerateKeyResult{}});
+ return err;
+ }
+
+ data_object->Swap(
+ {GpgGenerateKeyResult{gpgme_op_genkey_result(ctx.DefaultContext())}});
+ return CheckGpgError(err);
+}
+
+void GpgKeyOpera::AddADSK2Key(const GpgKey& key, const SubkeyId& s_fpr,
+ const GpgOperationCallback& callback) {
+ RunGpgOperaAsync(
+ [=](const DataObjectPtr& data_object) -> GpgError {
+ return AddADSK2KeyImpl(ctx_, key, s_fpr, data_object);
+ },
+ callback, "gpgme_op_createsubkey_adsk", "2.4.1");
+}
+
+auto GpgKeyOpera::AddADSK2KeySync(const GpgKey& key, const SubkeyId& s_fpr)
+ -> std::tuple<GpgError, DataObjectPtr> {
+ return RunGpgOperaSync(
+ [=](const DataObjectPtr& data_object) -> GpgError {
+ return AddADSK2KeyImpl(ctx_, key, s_fpr, data_object);
+ },
+ "gpgme_op_createsubkey_adsk", "2.4.1");
+}
} // namespace GpgFrontend