diff options
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 |