From fdcc69c29de29da9a9c5140b239aad5f83629ed0 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Fri, 21 Feb 2025 14:45:15 +0100 Subject: 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 --- dirmngr/ks-action.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'dirmngr/ks-action.c') 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 -- cgit v1.2.3