aboutsummaryrefslogtreecommitdiffstats
path: root/dirmngr/ks-action.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2025-02-21 13:45:15 +0000
committerWerner Koch <[email protected]>2025-02-21 13:45:15 +0000
commitfdcc69c29de29da9a9c5140b239aad5f83629ed0 (patch)
tree77715da7d741bc96d4c6257cfc8df2312f9fd122 /dirmngr/ks-action.c
parentdirmngr: Factor a common command parsing code out. (diff)
downloadgnupg-fdcc69c29de29da9a9c5140b239aad5f83629ed0.tar.gz
gnupg-fdcc69c29de29da9a9c5140b239aad5f83629ed0.zip
dirmngr: Prepare for new command KS_DEL.
* dirmngr/server.c (cmd_ks_del): New. * dirmngr/ks-action.c (ks_action_del): New. * dirmngr/ks-engine-ldap.c (ks_ldap_del): New stub. -- GnuPG-bug-id: 5447
Diffstat (limited to 'dirmngr/ks-action.c')
-rw-r--r--dirmngr/ks-action.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/dirmngr/ks-action.c b/dirmngr/ks-action.c
index 2e04582a1..6be2072e9 100644
--- a/dirmngr/ks-action.c
+++ b/dirmngr/ks-action.c
@@ -548,6 +548,40 @@ ks_action_put (ctrl_t ctrl, uri_item_t keyservers,
+/* Delete an OpenPGP key from all KEYSERVERS which use LDAP. The key
+ * is specifified by PATTERNS. */
+gpg_error_t
+ks_action_del (ctrl_t ctrl, uri_item_t keyservers, strlist_t patterns)
+{
+ gpg_error_t err = 0;
+ gpg_error_t first_err = 0;
+ int any_server = 0;
+ uri_item_t uri;
+
+ for (uri = keyservers; uri; uri = uri->next)
+ {
+#if USE_LDAP
+ if ( !strcmp (uri->parsed_uri->scheme, "ldap")
+ || !strcmp (uri->parsed_uri->scheme, "ldaps")
+ || !strcmp (uri->parsed_uri->scheme, "ldapi")
+ || uri->parsed_uri->opaque )
+ {
+ any_server = 1;
+ err = ks_ldap_del (ctrl, uri->parsed_uri, patterns);
+ if (err && !first_err)
+ first_err = err;
+ }
+#endif
+ }
+
+ if (!any_server)
+ err = gpg_error (GPG_ERR_NO_KEYSERVER); /* Actual: No LDAP keyserver */
+ else if (!err && first_err)
+ err = first_err;
+ return err;
+}
+
+
/* Query the default LDAP server or the one given by URL using
* the filter expression FILTER. Write the result to OUTFP. */
gpg_error_t