diff options
author | Werner Koch <[email protected]> | 2025-02-21 13:45:15 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2025-02-21 13:45:15 +0000 |
commit | fdcc69c29de29da9a9c5140b239aad5f83629ed0 (patch) | |
tree | 77715da7d741bc96d4c6257cfc8df2312f9fd122 /dirmngr/ks-action.c | |
parent | dirmngr: Factor a common command parsing code out. (diff) | |
download | gnupg-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.c | 34 |
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 |