aboutsummaryrefslogtreecommitdiffstats
path: root/dirmngr/ks-engine-hkp.c (unfollow)
Commit message (Collapse)AuthorFilesLines
2015-01-08dirmngr: Fix error code path of map_host.NIIBE Yutaka1-3/+8
* dirmngr/ks-engine-hkp.c (map_host): Fix error return. -- In ks-engine-hkp.c on line 509 'reftbl' is freed, but it is then used on line 511. I'm guessing this is a missing return;. Reported-by: Joshua Rogers <[email protected]> Debian-Bug-Id: 773520 Other fixes on error added too.
2014-12-22dirmngr: Fix memory leak.Werner Koch1-1/+1
* dirmngr/server.c (cmd_ks_search, cmd_ks_get): Fix memory leak. * dirmngr/ks-engine-hkp.c (ks_hkp_mark_host): Remove double check. -- Reported-by: Joshua Rogers <[email protected]> Signed-off-by: Werner Koch <[email protected]>
2014-12-08dirmngr: Improve dead host detection.Werner Koch1-0/+2
* dirmngr/ks-engine-hkp.c (handle_send_request_error): Mark host dead also for 2 other error messages.
2014-12-08dirmngr: Return a proper error for all dead hosts.Werner Koch1-55/+76
* dirmngr/ks-engine-hkp.c (map_host): Change to return an gpg_error_t. Return an error code for all dead hosts. (make_host_part): Change to return an gpg_error_t. Change all callers. -- The functions used to return an error code via ERRNO. However, this does not allow to return extra error codes in a portable way. Thus we change the function to directly return a gpg_error_t. Signed-off-by: Werner Koch <[email protected]>
2014-11-26dirmngr: Only report hkps scheme when availableKristian Fiskerstrand1-1/+9
* dirmngr/ks-engine-hkp.c (ks_hkp_help): Make use of TLS macros. -- Only report support for the hkps scheme when GnuPG / dirmngr has been built with a TLS library. This helps debuging and enable the user to detect whether support for hkps is included by doing a `gpg-connect-agent --dirmngr 'keyserver --help' /bye`. Currently hkps will be listed as a supported scheme but trying to add a keyserver using it will silently fail. As a digression, https is never listed as a valid scheme.
2014-09-10dirmngr: Support https for KS_FETCH.Werner Koch1-34/+0
* dirmngr/ks-engine-hkp.c (cert_log_cb): Move to ... * dirmngr/misc.c (cert_log_cb): here. * dirmngr/ks-engine-http.c (ks_http_fetch): Support 307-redirection and https. -- Note that this requires that the root certificates are registered using the --hkp-cacert option. Eventually we may introduce a separate option to allow using different CAs for KS_FETCH and keyserver based requests.
2014-06-10w32: Fix build problem with dirmngr.Werner Koch1-1/+8
* dirmngr/ks-engine-hkp.c (EAI_SYSTEM) [W32]: Add replacement constant.
2014-05-19dirmngr: Print certificates on failed TLS verification.Werner Koch1-0/+35
* dirmngr/ks-engine-hkp.c (cert_log_cb): New. (send_request): Set callback. -- We use the KSBA functions here because we have them anyway in Dirmngr.
2014-05-16keyserver: Improve support for hkps pools.Werner Koch1-61/+209
* dirmngr/ks-engine-hkp.c (hostinfo_s): Add fields cname, v4addr, and v6addr. (create_new_hostinfo): Clear them. (my_getnameinfo): Add args numeric and r_isnumeric. (is_ip_address): New. (map_host): Add arg r_host. Rewrite the code to handle pools in a special way. (ks_hkp_print_hosttable): Change format of help info output. (make_host_part): Add arg optional r_httphost. (send_request): Add arg httphost. (ks_hkp_search, ks_hkp_get, ks_hkp_put): Get httphost and pass it to send_request. -- This changes quite some things on how the hostinfo is maintained. However, it might be better to rework the data structures and have one entry per IP address instead of this clumsy patch.
2014-05-16http: Allow overriding of the Host header.Werner Koch1-0/+1
* common/http.c (http_open): Add arg httphost. (http_open_document): Pass NULL for httphost. (send_request): Add arg httphost. If given, use HTTPHOST instead of SERVER. Use https with a proxy if requested. (http_verify_server_credentials): Do not stop at the first error message. * dirmngr/ocsp.c (do_ocsp_request): Adjust call to http_open. * keyserver/curl-shim.c (curl_easy_perform): Ditto. * dirmngr/ks-engine-http.c (ks_http_fetch): Ditto. * dirmngr/ks-engine-hkp.c (ks_hkp_help): Ditto.
2014-05-06Use "samethread" mode keyword for some es_fopenmem.Werner Koch1-1/+1
* dirmngr/ks-engine-hkp.c (armor_data): Add mode keyword. * g10/call-dirmngr.c (ks_put_inq_cb): Ditto. * scd/atr.c (atr_dump): Ditto.
2014-05-05dirmngr: Add support for hkps keyservers.Werner Koch1-3/+24
* dirmngr/dirmngr.c: Include gnutls.h. (opts): Add --gnutls-debug and --hkp-cacert. (opt_gnutls_debug, my_gnutls_log): New. (set_debug): Set gnutls log level. (parse_rereadable_options): Register a CA file. (main): Init GNUTLS. * dirmngr/ks-engine-hkp.c (ks_hkp_help): Support hkps. (send_request): Ditto.
2014-03-18dirmngr: Resurrect hosts in the HKP hosttable.Werner Koch1-4/+58
* dirmngr/dirmngr.c (HOUSEKEEPING_INTERVAL): New. (housekeeping_thread): New. (handle_tick): Call new function. * dirmngr/ks-engine-hkp.c (RESURRECT_INTERVAL): New. (struct hostinfo_s): Add field died_at and set it along with the dead flag. (ks_hkp_print_hosttable): Print that info. (ks_hkp_housekeeping): New. -- The resurrection gives the host a chance to get back to life the next time a new host is selected.
2014-03-17gpg: Make --auto-key-locate work again with keyservers.Werner Koch1-6/+24
* dirmngr/ks-engine-hkp.c (ks_hkp_get): Allow exact search mode. * g10/keyserver.c (keyserver_import_name): Implement. (keyserver_get): Use exact mode for name based import. (keyserver_get): Add args R_FPR and R_FPRLEN. Change all callers.
2014-03-14dirmngr: Make use of IPv4 and IPV6 more explicit.Werner Koch1-12/+35
* common/http.c (connect_server): Handle the new flags. * common/http.h (HTTP_FLAG_IGNORE_IPv4, HTTP_FLAG_IGNORE_IPv4): New. * dirmngr/ks-engine-hkp.c (map_host): Add arg r_httpflags. (make_host_part): Ditto. (send_request): Add arg httpflags. (ks_hkp_search, ks_hkp_get, ks_hkp_put): Handle httpflags.
2014-03-14dirmngr: Do not use brackets around legacy IP addresses.Werner Koch1-9/+14
* dirmngr/ks-engine-hkp.c (my_getnameinfo): Change args to take a complete addrinfo. Bracket only v6 addresses. Change caller.
2014-03-14gpg: Print the actual used keyserver address.Werner Koch1-2/+9
* dirmngr/ks-engine-hkp.c (ks_hkp_search, ks_hkp_get): Print SOURCE status lines. * g10/call-dirmngr.c (ks_status_parm_s): New. (ks_search_parm_s): Add field stparm. (ks_status_cb): New. (ks_search_data_cb): Send source to the data callback. (gpg_dirmngr_ks_search): Change callback prototope to include the SPECIAL arg. Adjust all users. Use ks_status_cb. (gpg_dirmngr_ks_get): Add arg r_source and use ks_status_cb. * g10/keyserver.c (search_line_handler): Adjust callback and print "data source" disgnostic. (keyserver_get): Print data source diagnostic. -- It has often been requested that the actually used IP of a keyservers is shown in with gpg --recv-key and --search-key. This is helpful if the keyserver is actually a pool of keyservers. This patch does this.
2014-03-12dirmngr: Detect dead keyservers and try another one.Werner Koch1-19/+123
* dirmngr/ks-action.c (ks_action_resolve): Rename var for clarity. (ks_action_search, ks_action_put): Ditto. (ks_action_get): Consult only the first server which retruned some data. * dirmngr/ks-engine-hkp.c (SEND_REQUEST_RETRIES): New. (map_host): Add arg CTRL and call dirmngr_tick. (make_host_part): Add arg CTRL. (mark_host_dead): Allow the use of an URL. (handle_send_request_error): New. (ks_hkp_search, ks_hkp_get, ks_hkp_put): Mark host dead and retry on error.
2014-03-11dirmngr: Put brackets around IP addresses in the hosttable.Werner Koch1-3/+37
* dirmngr/ks-engine-hkp.c (EAI_OVERFLOW): Provide a substitute. (my_getnameinfo): New. (map_host): Use it.
2014-03-11dirmngr: Add command option to mark hosts as dead or alive.Werner Koch1-1/+87
* dirmngr/server.c (cmd_killdirmngr): Factor some code out to ... (check_owner_permission): here. (cmd_keyserver): Add options --dead and --alive. * dirmngr/ks-engine-hkp.c (host_in_pool_p): New. (ks_hkp_mark_host): New. -- Also removed the warning that the widnows part has not yet been done. AFAICS, the current mingw supports the all used socket functions.
2014-03-11dirmngr: Fix HKP host selection code.Werner Koch1-34/+81
* dirmngr/server.c (cmd_keyserver): Add option --resolve and change --print-hosttable to --hosttable. * dirmngr/ks-action.c (ks_printf_help): New. (ks_action_resolve): New. * dirmngr/ks-engine-hkp.c (select_random_host): Fix selection. (ks_hkp_print_hosttable): Print to assuan stream. (map_host): Remove debug code. Add arg FORCE_SELECT. Return numeric IP addr if it can't be resolved. (make_host_part): Add arg FORCE_SELECT; change callers to pass false. (ks_hkp_resolve): New. -- The new options for the keyserver command are useful for debugging. For example: $ tools/gpg-connect-agent -S /usr/local/var/run/gnupg/S.dirmngr \ 'keyserver hkp://keys.gnupg.net' \ 'keyserver http://http-keys.gnupg.net' \ 'keyserver --resolve --hosttable' /bye yields: OK OK S # http://astrath.net:80 S # http://2001:41d0:1:e673::1:11371 S # hosttable (idx, ipv4, ipv6, dead, name): S # 0 http-keys.gnupg.net S # . --> 10 11 12 1 5 8 7 4* 2 9 6 3 S # 1 4 37.250.168.245.bredband.tre.se S # 2 4 6 keys.exosphere.de S # 3 4 6 poseidon.muc.drweb-av.de S # 4 4 astrath.net S # 5 4 79.143.214.216 S # 6 4 openpgp.andrew.kvalhe.im S # 7 4 app.aaiedu.hr S # 8 4 6 alita.karotte.org S # 9 4 6 keyserver.bau5net.com S # 10 4 194.94.127.122 S # 11 6 2001:4d88:1ffc:477::7 S # 12 6 2a00:1280:8000:2:1:8:0:1 S # 13 keys.gnupg.net S # . --> 23 28* 30 17 22 8 7 27 25 14 21 20 19 29 [...] S # 14 4 hufu.ki.iif.hu S # 15 4 pks.ms.mff.cuni.cz S # 16 4 pgpkeys.co.uk S # 17 4 80-239-156-219.customer.teliacarrier.com S # 18 4 srv01.secure-u.de S # 19 4 mallos.xs4all.nl S # 20 4 kronecker.scientia.net S # 21 4 keyserver.ut.mephi.ru S # 22 4 89-68-150-88.dynamic.chello.pl S # 23 6 2001:1608:21:6:84:200:66:125 S # 24 6 sks.es.net S # 25 6 gstueve-1-pt.tunnel.tserv13.ash1.ipv6.he.net S # 26 6 sks.mrball.net S # 27 6 gozer.rediris.es S # 28 6 2001:41d0:1:e673::1 S # 29 6 oteiza.siccegge.de S # 30 6 2403:4200:401:10::13 S # 31 6 statler.serviz.fr OK
2014-03-07w32: Include winsock2.h to silence warnings.Werner Koch1-0/+3
2012-06-05Change all quotes in strings and comments to the new GNU standard.Werner Koch1-12/+12
The asymmetric quotes used by GNU in the past (`...') don't render nicely on modern systems. We now use two \x27 characters ('...'). The proper solution would be to use the correct Unicode symmetric quotes here. However this has the disadvantage that the system requires Unicode support. We don't want that today. If Unicode is available a generated po file can be used to output proper quotes. A simple sed script like the one used for en@quote is sufficient to change them. The changes have been done by applying sed -i "s/\`\([^'\`]*\)'/'\1'/g" to most files and fixing obvious problems by hand. The msgid strings in the po files were fixed with a similar command.
2012-01-10Adapt HKP fix for fingerprint/long keyid retrievals for dirmngrDavid Shaw1-7/+9
* dirmngr/ks-engine-hkp.c (ks_hkp_get): Use the longest valid keyid form
2011-11-24Make HKP keyserver engine work again.Werner Koch1-4/+4
We had some debug code here which prevented it from working. The host selection code still needs a review! * ks-engine-http.c (ks_http_help): Do not print help for hkp. * ks-engine-hkp.c (ks_hkp_help): Print help only for hkp. (send_request): Remove test code. (map_host): Use xtrymalloc. * certcache.c (classify_pattern): Remove unused variable and make explicit substring search work.
2011-11-24Make HKP kyeserver engine work again.Werner Koch1-4/+4
We had some debug code here which prevented it from working. The host selection code still needs a review! * ks-engine-http.c (ks_http_help): Do not print help for hkp. * ks-engine-hkp.c (ks_hkp_help): Print help only for hkp. (send_request): Remove test code. (map_host): Use xtrymalloc. * certcache.c (classify_pattern): Remove unused variable and make explicit substring search work.
2011-04-25Fix regression in gpg's mail address parsing.Werner Koch1-2/+2
Since 2009-12-08 gpg was not able to find email addresses indicated by a leading '<'. This happened when I merged the user id classification code of gpgsm and gpg.
2011-04-12Add code for explicit selection of pooled A records.Werner Koch1-77/+415
To better cope with round robin pooled A records like keys.gnupg.net we need to keep some information on unresponsive hosts etc. What we do now is to resolve the hostnames, remember them and select a random one. If a host is dead it will be marked and a different one selected. This is intended to solve the problem of long timeouts due to unresponsive hosts. The code is not yet finished but selection works.
2011-02-09Add framework to print keyserver engine informationWerner Koch1-0/+20
2011-02-04Nuked almost all trailing white space.post-nuke-of-trailing-wsWerner Koch1-12/+12
We better do this once and for all instead of cluttering all future commits with diffs of trailing white spaces. In the majority of cases blank or single lines are affected and thus this change won't disturb a git blame too much. For future commits the pre-commit scripts checks that this won't happen again.
2011-01-20All standard keyserver commands are now using dirmngr.Werner Koch1-9/+181
2011-01-18Keyserver search and get basically works again.Werner Koch1-83/+211
2011-01-10Initial code checking for backup - not yet working.Werner Koch1-0/+258