diff options
author | Werner Koch <[email protected]> | 2020-12-17 17:18:52 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2020-12-17 17:25:34 +0000 |
commit | 4a3836e2b2f9a91995d5ce058820e1121298f548 (patch) | |
tree | 29040bbaf899bdd5843710645f5367f35812ff16 /g10/keyserver.c | |
parent | dirmngr: Support "ldap:///" for the current AD user. (diff) | |
download | gnupg-4a3836e2b2f9a91995d5ce058820e1121298f548.tar.gz gnupg-4a3836e2b2f9a91995d5ce058820e1121298f548.zip |
gpg: New AKL method "ntds"
* dirmngr/ks-engine-ldap.c (keyspec_to_ldap_filter): Change the new
support for KEYDB_SEARCH_MODE_MAIL.
(ks_ldap_get): Add a debug.
* g10/options.h (AKL_NTDS): New.
* g10/keyserver.c (keyserver_import_ntds): New.
(keyserver_get_chunk): Allow KEYDB_SEARCH_MODE_MAIL.
* g10/getkey.c (parse_auto_key_locate): Support "ntds".
(get_pubkey_byname): Ditto.
Diffstat (limited to 'g10/keyserver.c')
-rw-r--r-- | g10/keyserver.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/g10/keyserver.c b/g10/keyserver.c index bae604d10..f42bca15c 100644 --- a/g10/keyserver.c +++ b/g10/keyserver.c @@ -1141,6 +1141,21 @@ keyserver_import_name (ctrl_t ctrl, const char *name, } +/* Import the keys that match exactly MBOX */ +int +keyserver_import_ntds (ctrl_t ctrl, const char *mbox, + unsigned char **fpr, size_t *fprlen) +{ + KEYDB_SEARCH_DESC desc = { 0 }; + struct keyserver_spec keyserver = { NULL, "ldap:///" }; + + desc.mode = KEYDB_SEARCH_MODE_MAIL; + desc.u.name = mbox; + + return keyserver_get (ctrl, &desc, 1, &keyserver, 0, fpr, fprlen); +} + + int keyserver_import_fprint (ctrl_t ctrl, const byte *fprint,size_t fprint_len, struct keyserver_spec *keyserver, int quick) @@ -1669,6 +1684,25 @@ keyserver_get_chunk (ctrl_t ctrl, KEYDB_SEARCH_DESC *desc, int ndesc, quiet = 1; } } + else if(desc[idx].mode == KEYDB_SEARCH_MODE_MAIL) + { + n = 1 + strlen (desc[idx].u.name) + 1 + 1; + if (idx && linelen + n > MAX_KS_GET_LINELEN) + break; /* Declare end of this chunk. */ + linelen += n; + + if (desc[idx].u.name[0] == '<') + pattern[npat] = xtrystrdup (desc[idx].u.name); + else + pattern[npat] = strconcat ("<", desc[idx].u.name, ">", NULL); + if (!pattern[npat]) + err = gpg_error_from_syserror (); + else + { + npat++; + quiet = 1; + } + } else if (desc[idx].mode == KEYDB_SEARCH_MODE_NONE) continue; else |