chiark / gitweb /
gpg agent lockup fix: Interrupt main loop when active_connections_value==0
[gnupg2.git] / ChangeLog
1 2016-12-20  Werner Koch  <wk@gnupg.org>
2
3         Release 2.1.17.
4
5         sm: Remove wrong example from gpgsm --help.
6         * sm/gpgsm.c (opts): Remove group 303.
7
8         dirmngr: New option --resolver-timeout.
9         * dirmngr/dns-stuff.c (DEFAULT_TIMEOUT): New.
10         (opt_timeout): New var.
11         (set_dns_timeout): New.
12         (libdns_res_open): Set the default timeout.
13         (libdns_res_wait): Use configurable timeout.
14         (resolve_name_libdns): Ditto.
15
16         * dirmngr/dirmngr.c (oResolverTimeout): New const.
17         (opts): New option --resolver-timeout.
18         (parse_rereadable_options): Set that option.
19         (main) <aGPGConfList>: Add --nameserver and --resolver-timeout.
20         * tools/gpgconf-comp.c (gc_options_dirmngr): Add --resolver-timeout
21         and --nameserver.
22
23         * dirmngr/http.c (connect_server): Fix yesterday introduced bug in
24         error diagnostic.
25
26 2016-12-19  Werner Koch  <wk@gnupg.org>
27
28         dirmngr: Fix problems with the getsrv function.
29         * dirmngr/dns-stuff.c (opt_debug, opt_verbose): New vars.
30         (set_dns_verbose): New func.
31         (libdns_switch_port_p): Add debug output.
32         (resolve_dns_name): Ditto.
33         (get_dns_cert): Ditto.
34         (get_dns_cname): Ditto.
35         (getsrv_libdns, getsrv_standard): Change SRVCOUNT to an unsigend int.
36         (getsrv): Rename to ...
37         ((get_dns_srv): this.  Add arg R_COUNT and return an error.  Add debug
38         output.
39         * dirmngr/http.c: Adjust for chnaged getsrv().
40         * dirmngr/ks-engine-hkp.c (map_host): Ditto.
41         * dirmngr/t-dns-stuff.c (main): Ditto.  Call set_dns_verbose.
42         * dirmngr/dirmngr.c (parse_rereadable_options): Call set_dns_verbose.
43
44         build: Add target to sign the windows installer.
45         * build-aux/speedo.mk (w32-sign-installer): New.
46         (AUTHENTICODE_KEY): New.
47         (installer-from-source): Use cp instead of mv.  Factor code out to ...
48         (MKSWDB_commands): new macro.
49         (sign-installer): New.
50
51 2016-12-19  Justus Winter  <justus@g10code.com>
52
53         tests: Use the common test framework for the migration tests.
54         * tests/migrations/Makefile.am (reqired_pgms): Add 'gpgscm'.
55         (TESTS_ENVIRONMENT): Populate.
56         (TESTS): Rename to 'XTESTS'.
57         (xcheck): New target.
58         (EXTRA_DIST): Add new files.
59         (CLEANFILES): Remove log files.
60         * tests/migrations/common.scm: Honor 'verbose', fix paths.
61         * tests/migrations/run-tests.scm: New file.
62         * tests/migrations/setup.scm: Likewise.
63
64         tests: Use sequential test runner if only one test is given.
65         * tests/openpgp/run-tests.scm: Use sequential test runner if only one
66         test is given.
67
68 2016-12-19  Werner Koch  <wk@gnupg.org>
69
70         dirmngr,w32: Hack around a select problem.
71         * dirmngr/dns.c (FD_SETSIZE): Bump up to 1024.
72         (dns_poll): Return an error instead of hitting an assertion failure.
73
74 2016-12-19  Neal H. Walfield  <neal@g10code.com>
75
76         test: Extend TOFU tests to also check the days with signatures.
77         * tests/openpgp/tofu.scm (GPGTIME): Define the "standard" base time.
78         (faketime): New function.
79         (days->seconds): Likewise.
80         (GPG): Use faketime.
81         (check-counts): Also check the number of expected days with signatures
82         and encryptions.  Update callers.  Extend tests.
83
84 2016-12-19  Justus Winter  <justus@g10code.com>
85
86         tests: New test for --delete-[secret-]keys.
87         * tests/openpgp/Makefile.am (XTESTS): Add new test.
88         * tests/openpgp/defs.scm (keys): New variable.
89         (have-public-key?): New function.
90         (have-secret-key?): Likewise.
91         (have-secret-key-file?): Likewise.
92         * tests/openpgp/delete-keys.scm: New file.
93         * tests/openpgp/quick-key-manipulation.scm: Move the accessors to
94         'defs.scm'.
95
96         gpgscm: Change associativity of ::.
97         * tests/gpgscm/scheme.c (mk_atom): Change associativity of the ::
98         infix-operator.  This makes it possible to naturally express accessing
99         nested structures (e.g. a::b::c).
100
101         gpgscm: Display location when assertions fail.
102         * tests/gpgscm/lib.scm (assert): Use location information if
103         available.
104
105         gpgscm: Make exception handling more robust.
106         * tests/gpgscm/init.scm (throw'): Check that args is a list.
107
108 2016-12-19  Andre Heinecke  <aheinecke@intevation.de>
109
110         speedo,w32: Use nsExec::ExecToLog to avoid popups.
111         * build-aux/speedo/w32/inst.nsi: Use ExecToLog instead of
112         ExecWait.
113
114 2016-12-19  Werner Koch  <wk@gnupg.org>
115
116         Remove unused debug flags and add "dns" and "network".
117         * g10/options.h (DBG_CARD_IO_VALUE, DBG_CARD_IO): Remove.
118         * g10/gpg.c (debug_flags): Remove "cardio".
119         * agent/agent.h (DBG_COMMAND_VALUE, DBG_COMMAND): Remove.
120         * agent/gpg-agent.c (debug_flags): Remove "command".
121         * scd/scdaemon.h (DBG_COMMAND_VALUE, DBG_COMMAND): Remove.
122         * scd/scdaemon.c (debug_flags): Remove "command".
123         * dirmngr/dirmngr.h (DBG_DNS_VALUE, DBG_DNS): New.
124         (DBG_NETWORK_VALUE, DNG_NETWORK): New.
125         * dirmngr/dirmngr.c (debug_flags): Add "dns" and "network".
126
127 2016-12-17  Werner Koch  <wk@gnupg.org>
128
129         dirmngr: Fix setup of libdns for W32.
130         * configure.ac (DNSLIB) {W32]: Add -liphlpapi.
131         * dirmngr/dns-stuff.c [W32]: Include iphlpapi.h and define
132         WIN32_LEAN_AND_MEAN.
133         (libdns_init) [W32]: Use GetNetworkParams to get the nameserver.
134         * dirmngr/t-dns-stuff.c (init_sockets): New.
135         (main): Call it.
136
137 2016-12-16  Werner Koch  <wk@gnupg.org>
138
139         dirmngr: Auto-switch from Tor port to Torbrowser port.
140         * dirmngr/dns-stuff.c (libdns_tor_port): New var.
141         (set_dns_nameserver): Clear that var.
142         (libdns_init): Init var to the default port.
143         (libdns_switch_port_p): New func.
144         (resolve_dns_name): Use function to switch the port
145         (get_dns_cert): Ditto.
146         (getsrv): Ditto.
147         (get_dns_cname): Ditto.
148
149         dirmngr: Use one context for all libdns queries.
150         * dirmngr/dns-stuff.c (libdns_reinit_pending): New var.
151         (enable_recursive_resolver): Set var.
152         (set_dns_nameserver): Ditto.
153         (libdns_init): Avoid double initialization.
154         (libdns_deinit): New.
155         (reload_dns_stuff): New.
156         (libdns_res_open): Act upon LIBDNS_REINIT_PENDING.
157         * dirmngr/t-dns-stuff.c (main): Call reload_dns_stuff to release
158         memory.
159         * dirmngr/dirmngr.c (cleanup): Ditto.
160         (dirmngr_sighup_action): Call reload_dns_stuff to set
161         LIBDNS_REINIT_PENDING.
162
163         dirmngr: Pass Tor credentials to libdns.
164         * dirmngr/dns-stuff.c (tor_credentials): Replace by ...
165         (tor_socks_user, tor_socks_password): new vars.
166         (enable_dns_tormode): Set these new vars.
167         (libdns_res_open): Tell libdns the socks credentials.
168
169         dirmngr: Factor common libdns code out.
170         * dirmngr/dns-stuff.c (libdns_res_open): New.  Replace all libdns_init
171         and dns-res_open by a call to this func.
172         (libdns_res_submit): New wrapper.  Replace all dns_res_sumbit calls.
173         (libdns_res_wait): New function.
174         (resolve_name_libdns): Replace loop by libdns_res_wait.
175         (get_dns_cert_libdns): Ditto.
176         (getsrv_libdns): Ditto.
177
178         gpg,sm: A few more option for --gpgconf-list.
179         * g10/gpg.c (gpgconf_list): Add --compliance and
180         --default-new-key-algo.
181         (parse_compliance_option):
182         * sm/gpgsm.c (main) <gpgconf-list>: Add --enable-crl-checks.
183
184         gpgconf: New command --apply-profile.
185         * tools/gpgconf.c (aApplyProfile): New.
186         (opts): New command --apply-profile.
187         (main): Implement that command.
188         * tools/gpgconf-comp.c (option_check_validity): Add arg VERBATIM.
189         (change_options_program): Ditto.
190         (change_one_value): Ditto.
191         (gc_component_change_options): Ditto.
192         (gc_apply_profile): New.
193
194         gpgconf: Fix --apply-defaults.
195         * tools/gpgconf-comp.c: Skip pinentry also in process_all mode.
196
197 2016-12-16  Justus Winter  <justus@g10code.com>
198
199         doc: Mention extra information in pinentry status lines.
200         * doc/DETAILS: Mention that 'PINENTRY_LAUNCHED may carry extra
201         information.
202
203         sm: Fix agent communication.
204         * sm/call-agent.c (gpgsm_agent_pksign): Fix passing the control handle
205         to the callback.
206         (gpgsm_scd_pksign): Likewise.
207         (gpgsm_agent_reaedkey): Likewise.
208
209 2016-12-16  Neal H. Walfield  <neal@g10code.com>
210
211         doc: Fix manual.
212         * doc/gpg.texi: Remove comment about options being parsed in-order.
213         They aren't.
214
215         g10: Use total days, not total messages to compute TOFU validity.
216         * g10/tofu.c (write_stats_status): Use the number of days with
217         signatures / encryptions to compute the validity, not the total number
218         of signatures / encryptions.
219         (BASIC_TRUST_THRESHOLD): Adjust given the new semantics.
220         (FULL_TRUST_THRESHOLD): Likewise.
221
222         g10: Extend TOFU_STATS to emit <sign-days> and <encyrption-days>
223         * doc/DETAILS: Add SIGN-DAYS and ENCRYPT-DAYS to the TOFU_STATS status
224         line.
225         * g10/tofu.c (write_stats_status): Take additional parameters
226         signature_days and encryption_days.  Update callers.  Include them in
227         the tfs record and TOFU status lines.
228         (show_statistics): Compute the number of days on which we saw a
229         message signed by FINGERPRINT, and the number of days on which we
230         encrypted a message to it.
231
232 2016-12-16  Justus Winter  <justus@g10code.com>
233
234         doc: Improve section on unattended key generation.
235         * doc/gpg.texi: Improve the subsection on unattended key generation by
236         suggesting the quick key manipulation interface as an alternative, and
237         by suggesting alternatives to '%pubring' and '%secring'.  Simplify
238         examples accordingly.
239
240         doc: Add documentation for programmatic use of GnuPG.
241         * doc/gpg.texi: New subsections on programmatic use of GnuPG,
242         ephemeral home directories, and the quick key manipulation interface.
243
244 2016-12-16  Neal H. Walfield  <neal@g10code.com>
245
246         g10: On a TOFU conflict, write the conflicting keys to the status fd.
247         * g10/tofu.c (ask_about_binding): Emit all of the conflicting keys and
248         their statistics on the status fd.
249         (get_trust): Likewise, if we don't call ask_about_binding.
250         (show_statistics): Have the caller pass the policy as returned by
251         get_policy.  Add argument only_status_fd and don't emit any output on
252         stdout if it is set.  Update callers.
253
254         g10: Add missing space.
255         * g10/tofu.c (tofu_register_encryption): Add missing space.
256
257 2016-12-15  Justus Winter  <justus@g10code.com>
258
259         g10: Avoid translating simple error messages.
260         * g10/gpg.c (main): Avoid translating arguments to 'wrong_args'.
261
262         g10: Rework the --quick-* interface.
263         * g10/gpg.c (opts): Rename options.
264         (main): Update errors.
265         * doc/gpg.texi: Update accordingly.
266
267         g10: Rename 'card-edit' to 'edit-card'.
268         * g10/gpg.c (opts): Rename option.
269         * g10/call-agent.c (agent_scd_learn): Update comment.
270         * doc/gpg.texi: Update accordingly.
271
272         g10: Spell out --desig-revoke.
273         * g10/gpg.c (opts): Rename option.
274         * doc/gpg.texi: Update accordingly.
275
276         g10: Shorten unreasonably long option.
277         * g10/gpg.c (opts): Rename 'generate-revocation-certificate' to
278         'generate-revocation'.
279         * doc/gpg.texi: Update accordingly.
280         * po: Update translations.
281
282         doc: Add aliases of all changed options.
283         * doc/gpg.texi: Add the old version of every option that was updated
284         with the last change set.
285         * doc/gpgsm.texi: Likewise.
286
287 2016-12-15  Werner Koch  <wk@gnupg.org>
288
289         dirmngr: First patch to re-enable Tor support.
290         * dirmngr/dns-stuff.c (SOCKS_PORT, TOR_PORT, TOR_PORT2): New
291         constants.
292         (libdns_init): Start adding tor support.
293         (resolve_name_libdns): Pass socks hosts to dns_res_open.
294         (get_dns_cert_libdns): Ditto.
295         (getsrv_libdns): Ditto.
296         (get_dns_cname_libdns): Ditto.
297
298 2016-12-15  Justus Winter  <justus@g10code.com>
299
300         build: Fix distcheck.
301         * tests/gpgme/Makefile.am (CLEANFILES): New variable, clean test logs.
302
303 2016-12-14  Justus Winter  <justus@g10code.com>
304
305         tests: Reuse GPGME's tests.
306         * configure.ac (AC_CONFIG_FILES): Add new Makefile.
307         * tests/Makefile.am (SUBDIRS): Add new directory.
308         * tests/gpgme/Makefile.am: New file.
309         * tests/gpgme/gpgme-defs.scm: Likewise.
310         * tests/gpgme/run-tests.scm: Likewise.
311         * tests/gpgme/setup.scm: Likewise.
312         * tests/gpgme/wrap.scm: Likewise.
313
314         common: Support locating components in the build tree.
315         * common/homedir.c (gnupg_build_directory): New variable.
316         (gnupg_module_name_called): Likewise.
317         (gnupg_set_builddir): New function.
318         (gnupg_set_builddir_from_env): Likewise.
319         (gnupg_module_name): Support locating components in the build tree.
320         * common/util.h (gnupg_set_builddir): New prototype.
321         * tests/openpgp/defs.scm (tools): Drop 'gpg and 'gpg-agent.
322         (tool): Rename to 'tool-hardcoded.
323         (gpg-conf): New function, with accessors for the results.
324         (gpg-components): New variable.
325         (tool): New function.
326         * tools/gpgconf.c (enum cmd_and_opt_values): New key.
327         (opts): New option '--build-prefix'.
328         (main): Handle new option.
329
330         tests: Rework check for trust models.
331         * tests/openpgp/defs.scm (gpg-has-option?): New function.
332         (have-opt-always-trust): Use a simpler test for that option.  This way
333         that is less distracting when we run the tests with verbose=3.
334
335 2016-12-14  Werner Koch  <wk@gnupg.org>
336
337         dirmngr: New configure option --disable-libdns.
338         * configure.ac: Add option --disable-libdns
339         (USE_LIBDNS): New ac_subst and am_conditional.
340         (USE_C99_CFLAGS): Set only if libdns is used.
341         * dirmngr/Makefile.am (dirmngr_SOURCES): Move dns.c and dns.h to ...
342         (dirmngr_SOURCES) [USE_LIBDNS0: here.
343         (t_common_src): Ditto.
344         * dirmngr/dirmngr.c (oRecursiveResolver): New constant.
345         (opts): New option "--recursive-resolver".
346         (parse_rereadable_options): Set option.
347         * dirmngr/t-dns-stuff.c (main): Add option --recursive-resolver.
348         * dirmngr/server.c (cmd_getinfo): Depend output of "dnsinfo" on the
349         new variables.
350         * dirmngr/dns-stuff.c: Include dns.h only if USE_DNSLIB is defined.
351         Also build and call dnslib functions only if USE_DNSLIB is defined.
352         (recursive_resolver): New var.
353         (enable_recursive_resolver): New func.
354         (recursive_resolver_p): New func.
355
356         dirmngr: Implement CERT record lookup via libdns.
357         * dirmngr/dns-stuff.c (get_dns_cert_libdns): New.
358         (get_dns_cert_standard): Fix URL malloc checking.
359
360         dirmngr: Implement CNAME and SRV record lookup via libdns.
361         * dirmngr/dns-stuff.c (dns_free): New macro.
362         (libdns): Move var to the top.
363         (libdns_error_to_gpg_error): Map error codes to the new gpg-error
364         codes.
365         (resolve_name_libdns): Restructure code.
366         (getsrv_libdns): New.
367         (get_dns_cname_libdns): New.
368
369         dirmngr: Fix bugs in the standard resolver code.
370         * dirmngr/dns-stuff.c: Include dirmngr-err.h to set the correct error
371         source.
372         (get_h_errno_as_gpg_error): New.
373         (get_dns_cert_libdns): Fix error code.
374         (getsrv_libdns): Add arg R_COUNT and return an error code.
375         (getsrv_standard): Ditto.  Fix handling of res_query errors and
376         provide the correct size for the return buffer.
377         (getsrv): Adjust for changed worker functions.
378         (get_dns_cname_standard): Fix handling of res_query errors and provide
379         the correct size for the return buffer.
380
381         dirmngr: Require a c99 compiler.
382         * configure.ac (USE_C99_CFLAGS): New ac_subst.  Set to -std=gnu99 for
383         gcc.
384         * dirmngr/Makefile.am (AM_CFLAGS): Add USE_C99_CFLAGS.
385         (t_http_CFLAGS): Ditto.
386         (t_ldap_parse_uri_CFLAGS): Ditto.
387         (t_dns_stuff_CFLAGS): Ditto.
388
389         doc: Add license notes for libdns.
390         * COPYING.other: New.
391         * Makefile.am (EXTRA_DIST): Add it.
392         * AUTHORS: Add info on libdns.
393         * build-aux/speedo/w32/pkg-copyright.txt: Add license terms.
394
395         common: Add replacements for error codes from gpg-error 1.26.
396
397 2016-12-14  Justus Winter  <justus@g10code.com>
398
399         dirmngr: New libdns snapshot.
400
401         dirmngr: Add basic libdns support.
402         * dirmngr/dns.c: New file.
403         * dirmngr/dns.h: New file.
404         * dirmngr/Makefile.am (dirmngr_SOURCES): Add new files.
405         * dirmngr/dns-stuff.c: Include dns.h.xxx use libdns
406         (libdns): New global var for the libdns state.
407         (libdns_error_to_gpg_error): New.
408         (libdns_init): New.
409         (resolve_name_libdns): New.
410         (get_dns_cert_libdns): New stub.
411         (getsrv_libdns): New stub.
412         (get_dns_cname_libdns): New stub.
413
414         dirmngr,build: Remove support for ADNS.
415         * autogen.rc: Remove '--with-adns' argument.
416         * configure.ac: Remove check for ADNS.
417         * dirmngr/dns-stuff.c: Remove all code that uses ADNS.
418         * dirmngr/server.c (cmd_getinfo): Update status line.
419         * doc/dirmngr.texi: Do not mention ADNS.
420
421 2016-12-14  NIIBE Yutaka  <gniibe@fsij.org>
422
423         dirmngr: Improve ntbtls support.
424         * dirmngr/http.c [HTTP_USE_NTBTLS] (close_tls_session): Release.
425         (send_request): Call ntbtls_set_transport.
426         (cookie_read, cookie_write): Implement.
427         (cookie_close): Add initial implementation for ntbtls.
428
429 2016-12-13  Justus Winter  <justus@g10code.com>
430
431         g10,sm: Spell out --passwd.
432         * g10/gpg.c (opts): Spell out option.
433         * sm/gpgsm.c (opts): Likewise.
434         * doc/gpg.texi: Update accordingly.
435         * doc/gpgsm.texi: Likewise.
436
437         g10: Spell out --gen-revoke.
438         * g10/gpg.c (opts): Spell out option.
439         * doc/gpg.texi: Update accordingly.
440         * po: Update translations.
441
442         g10: Spell out --full-gen-key.
443         * g10/gpg.c (opts): Spell out option.
444         (main): Likewise.
445         * g10/keygen.c (generate_keypair): Likewise.
446         * doc/gpg.texi: Update accordingly.
447
448         g10,sm: Spell out --gen-key.
449         * g10/gpg.c (opts): Spell out option.
450         * sm/gpgsm.c (opts): Likewise.
451         * doc/gpg.texi: Update accordingly.
452
453         g10,sm: Spell out --check-sigs.
454         * g10/gpg.c (opts): Spell out option.
455         * sm/gpgsm.c (opts): Likewise.
456         * doc/gpg.texi: Update accordingly.
457
458         g10,sm: Spell out --list-sigs.
459         * g10/gpg.c (opts): Spell out option.
460         * sm/gpgsm.c (opts): Likewise.
461         * doc/gpg.texi: Update accordingly.
462
463         g10: Hyphenate --clearsign.
464         * g10/gpg.c (opts): Hyphenate option.
465         * doc/gpg.texi: Update accordingly.
466         * po: Update translations.
467         * tests/openpgp: Update tests.
468
469         g10: Spell out --recv-keys.
470         * g10/gpg.c (opts): Spell out option.
471         * doc/gpg.texi: Update accordingly.
472
473         g10: Create expiring keys in quick key generation mode.
474         * doc/gpg.texi: Document that fact.
475         * g10/keygen.c (quick_generate_keypair): Use a default value.
476         * tests/openpgp/quick-key-manipulation.scm: Test that fact.
477
478         gpgscm: Print failed and skipped tests.
479         * tests/gpgscm/tests.scm (test-pool::report): Print failed and skipped
480         tests at the end.
481
482         gpgscm: Generalize the test runner.
483         * tests/gpgscm/tests.scm (test::scm) Add explicit name argument.
484         (test::binary): Likewise.  Also, add missing unquote.
485         * tests/openpgp/run-tests.scm: Adapt accordingly.
486
487         gpgscm: Move the test runner to the Scheme library.
488         * tests/openpgp/run-tests.scm: Move most of the code...
489         * tests/gpgscm/tests.scm: ... here.
490
491         tests: Refactor test runner.
492         * tests/openpgp/run-tests.scm (locate-test): New function.
493         (test): Factor-out the code starting the child process.
494         (test::binary): New function.
495
496         gpgscm: Improve library functions.
497         * tests/gpgscm/tests.scm (absolute-path?): New function.
498         (canonical-path): Use the new function.
499         * tests/gpgscm/lib.scm (string-split-pln): New function.
500         (string-indexp, string-splitp): Likewise.
501         (string-splitn): Express using the above function.
502         (string-ltrim, string-rtrim): Fix corner case.
503         (list->string-reversed): New function.
504         (read-line): Fix performance.
505
506 2016-12-12  Werner Koch  <wk@gnupg.org>
507
508         gpg: Fix memory leak in ecc key generation.
509         * g10/keygen.c (ecckey_from_sexp): Release curve.
510
511         gpg: Do not use a fixed string for --gpgconf-list:default_pubkey_algo.
512         * g10/keygen.c (get_default_pubkey_algo): New.
513         (parse_key_parameter_string): Use it.
514         * g10/gpg.c (gpgconf_list): Take value from new function.
515
516         gpg: Fix algo string parsing of --quick-addkey.
517         * g10/keygen.c (parse_key_parameter_string): Fix handling of PART==1.
518         (parse_key_parameter_part): Use default key size if only "rsa", "dsa",
519         or "elg" is given.
520
521 2016-12-09  Justus Winter  <justus@g10code.com>
522
523         g10: Create keys that expire in simple key generation mode.
524         * g10/keygen.c (default_expiration_interval): New variable.
525         (generate_keypair): Use the new default.
526
527         tests: Add a test for '--quick-addkey'.
528         * tests/openpgp/quick-key-manipulation.scm: Test '--quick-addkey'.
529
530         tests: New test using all available compression algorithms.
531         * tests/openpgp/Makefile.am (XTESTS): Add new test.
532         * tests/openpgp/compression.scm: New file.
533         * tests/openpgp/defs.scm (all-compression-algos): New variable.
534
535         g10: List compression algorithms using human-readable names.
536         * g10/gpg.c (list_config): List all enabled compression algorithms
537         under the key 'compressname'.
538
539         g10: Fix memory leak.
540         * g10/sign.c (do_sign): Release old signature data.
541
542 2016-12-08  Werner Koch  <wk@gnupg.org>
543
544         common: Skip the Byte Order Mark in conf files.
545         * common/argparse.c (optfile_parse): Detect and skip the UTF-8 BOM.
546
547         Fix 2 compiler warnings.
548         * dirmngr/loadswdb.c: Set ERR on malloc failure.
549         * g10/passphrase.c (passphrase_to_dek): Initialize all fields of
550         HELP_S2K.
551
552         wks: New option --status-fd for gpg-wks-client.
553         * tools/wks-util.c: Include status.h.
554         (statusfp): New global var.
555         (wks_set_status_fd): New func.
556         (wks_write_status): New func.
557         * tools/gpg-wks-client.c: Include status.h.
558         (oStatusFD): New constant.
559         (opts): New option --status-fd.
560         (parse_arguments): Handle that option.
561         (main): Return STATUS_SUCCESS or STATUS_FAILURE.
562
563 2016-12-08  Justus Winter  <justus@g10code.com>
564
565         gpgscm: Better error reporting.
566         * tests/gpgscm/ffi.scm: Move the customized exception handling and
567         atexit logic...
568         * tests/gpgscm/init.scm: ... here.
569         (throw): Record the current history.
570         (throw'): New function that is history-aware.
571         (rethrow): New function.
572         (*error-hook*): Use the new throw'.
573         * tests/gpgscm/main.c (load): Fix error handling.
574         (main): Save and use the 'sc->retcode' as exit code.
575         * tests/gpgscm/repl.scm (repl): Print call history.
576         * tests/gpgscm/scheme.c (_Error_1): Make a snapshot of the history,
577         use it to provide a accurate location of the expression causing the
578         error at runtime, and hand the history trace to the '*error-hook*'.
579         (opexe_5): Tag all lists at parse time with the current location.
580         * tests/gpgscm/tests.scm: Update calls to 'throw', use 'rethrow'.
581
582         gpgscm: Keep a history of calls for error messages.
583         * tests/gpgscm/init.scm (vm-history-print): New function.
584         * tests/gpgscm/opdefines.h: New opcodes 'CALLSTACK_POP', 'APPLY_CODE',
585         and 'VM_HISTORY'.
586         * tests/gpgscm/scheme-private.h (struct history): New definition.
587         (struct scheme): New field 'history'.
588         * tests/gpgscm/scheme.c (gc): Mark objects in the history.
589         (history_free): New function.
590         (history_init): Likewise.
591         (history_mark): Likewise.
592         (add_mod): New macro.
593         (sub_mod): Likewise.
594         (tailstack_clear): New function.
595         (callstack_pop): Likewise.
596         (callstack_push): Likewise.
597         (tailstack_push): Likewise.
598         (tailstack_flatten): Likewise.
599         (callstack_flatten): Likewise.
600         (history_flatten): Likewise.
601         (opexe_0): New variable 'callsite', keep track of the expression if it
602         is a call, implement the new opcodes, record function applications in
603         the history.
604         (opexe_6): Implement new opcode.
605         (scheme_init_custom_alloc): Initialize history.
606         (scheme_deinit): Free history.
607         * tests/gpgscm/scheme.h (USE_HISTORY): New macro.
608
609         gpgscm: Add flag TAIL_CONTEXT.
610         * tests/gpgscm/scheme.c (S_FLAG_TAIL_CONTEXT): New macro.  This flag
611         indicates that the interpreter is evaluating an expression in a tail
612         context (see R5RS, section 3.5).
613         (opexe_0): Clear and set the flag according to the rules layed out in
614         R5RS, section 3.5.
615         (opexe_1): Likewise.
616
617         gpgscm: Add flags to the interpreter.
618         * tests/gpgscm/scheme-private.h (struct scheme): Add field 'flags'.
619         * tests/gpgscm/scheme.c (S_OP_MASK): New macro.
620         (S_FLAG_MASK, s_set_flag, s_clear_flag, s_get_flag): Likewise.
621         (_s_return): Unpack the encoded opcode and flags.
622         (s_save): Encode the flags along with the opcode.  Use normal
623         integers to encode the result.
624         (scheme_init_custom_alloc): Initialize 'op' and 'flags'.
625
626         gpgscm: Implement tags.
627         * tests/gpgscm/opdefines.h: Add opcodes to create and retrieve tags.
628         * tests/gpgscm/scheme.c (T_TAGGED): New macro.
629         (mk_tagged_value): New function.
630         (has_tag): Likewise.
631         (get_tag): Likewise.
632         (mark): Mark tag.
633         (opexe_4): Implement new opcodes.
634         * tests/gpgscm/scheme.h (USE_TAGS): New macro.
635
636 2016-12-08  Werner Koch  <wk@gnupg.org>
637
638         gpg: Fix the fix out-of-bounds access.
639         * g10/tofu.c (build_conflict_set): Revert to int* and fix calloc.
640
641         wks: New option --check for gpg-wks-client.
642         * tools/call-dirmngr.c (wkd_get_key): New.
643         * tools/gpg-wks-client.c (aCheck): New constant.
644         (opts): New option "--check".
645         (main): Call command_check.
646         (command_check): New.
647
648         tools: Move a function from gpg-wks-server to wks-util.c.
649         * tools/gpg-wks-server.c (list_key_status_cb): Remove.
650         (list_key): Move to ...
651         * tools/wks-util.c (wks_list_key): here and rename.  Add new args
652         R_FPR and R_MBOXES and remove the CTX.
653         (list_key_status_cb): New.
654         * tools/wks-util.c: Include ccparray.h, exectool.h, and mbox-util.h.
655         * tools/gpg-wks-server.c (process_new_key): Replace list_key by
656         wks_list_key.
657         (check_and_publish): Ditto.
658
659 2016-12-08  Justus Winter  <justus@g10code.com>
660
661         gpgscm: Generalize 'for-each-p'.
662         * tests/gpgscm/tests.scm (for-each-p): Generalize to N lists like
663         for-each.
664         (for-each-p'): Likewise.
665
666         g10: Fix out-of-bounds access.
667         * g10/tofu.c (build_conflict_set): Use 'char'.
668
669 2016-12-08  Werner Koch  <wk@gnupg.org>
670
671         tools: Fix use of uninitialized var in mime-maker.
672         * tools/mime-maker.c (ensure_part): Make sure to set R_PARENT on
673         error.
674         (add_missing_headers): Ensure that ERR is set on success.
675
676         * tools/wks-util.c (wks_parse_policy): Fix indentation.
677
678         tools: Fix memleak in gpgconf.
679         * tools/gpgconf.c (main): Free SOCKETDIR.
680
681         gpg: Fix portability problem.
682         * g10/tofu.c (build_conflict_set): Replace variable dynamic array.
683
684 2016-12-07  Justus Winter  <justus@g10code.com>
685
686         tests: Add test for '--quick-set-expire'.
687         * tests/openpgp/quick-key-manipulation.scm: Test '--quick-set-expire'.
688
689         tests: Improve quick key manipulation test.
690         * tests/openpgp/quick-key-manipulation.scm: Do not update the trust
691         database, rather be more specific when filtering the user ids.
692
693 2016-12-06  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
694
695         agent: Respect --enable-large-secmem.
696         * agent/gpg-agent.c (main): Initialize secmem to the configured buffer
697         size.
698
699 2016-12-06  Justus Winter  <justus@g10code.com>
700
701         tests: Add test importing a revocation certificate.
702         * tests/openpgp/Makefile.am (XTESTS): Add new test.
703         * tests/openpgp/import-revocation-certificate.scm: New file.
704         * tests/openpgp/samplemsgs/revoke-2D727CC768697734.asc: Likewise.
705
706         tests: Rename 'error' to 'fail'.
707         * tests/gpgscm/tests.scm (error): Rename to 'fail'.  'error' is a
708         primitive function (an opcode) of the TinySCHEME vm, and 'error' is
709         also defined by R6RS.  Better avoid redefining that.  Fix all call
710         sites.
711         * tests/openpgp/4gb-packet.scm: Adapt.
712         * tests/openpgp/decrypt-multifile.scm: Likewise.
713         * tests/openpgp/ecc.scm: Likewise.
714         * tests/openpgp/export.scm: Likewise.
715         * tests/openpgp/gpgtar.scm: Likewise.
716         * tests/openpgp/gpgv-forged-keyring.scm: Likewise.
717         * tests/openpgp/import.scm: Likewise.
718         * tests/openpgp/issue2015.scm: Likewise.
719         * tests/openpgp/issue2346.scm: Likewise.
720         * tests/openpgp/issue2419.scm: Likewise.
721         * tests/openpgp/key-selection.scm: Likewise.
722         * tests/openpgp/mds.scm: Likewise.
723         * tests/openpgp/multisig.scm: Likewise.
724         * tests/openpgp/setup.scm: Likewise.
725         * tests/openpgp/signencrypt.scm: Likewise.
726         * tests/openpgp/ssh-import.scm: Likewise.
727         * tests/openpgp/tofu.scm: Likewise.
728         * tests/openpgp/verify.scm: Likewise.
729
730         tests: Remove debugging display.
731         * tests/openpgp/tofu.scm: Remove debugging display.
732
733 2016-12-06  Neal H. Walfield  <neal@g10code.com>
734
735         tests: Update distributed files.
736         * tests/openpgp/Makefile.am (TEST_FILES): Remove tofu-keys.asc,
737         tofu-keys-secret.asc, tofu-2183839A-1.txt, tofu-BC15C85A-1.txt and
738         tofu-EE37CF96-1.txt.  Add tofu/conflicting/1C005AF3.gpg,
739         tofu/conflicting/1C005AF3-secret.gpg, tofu/conflicting/1C005AF3-1.txt,
740         tofu/conflicting/1C005AF3-2.txt, tofu/conflicting/1C005AF3-3.txt,
741         tofu/conflicting/1C005AF3-4.txt, tofu/conflicting/1C005AF3-5.txt,
742         tofu/conflicting/B662E42F.gpg, tofu/conflicting/B662E42F-secret.gpg,
743         tofu/conflicting/B662E42F-1.txt, tofu/conflicting/B662E42F-2.txt,
744         tofu/conflicting/B662E42F-3.txt, tofu/conflicting/B662E42F-4.txt,
745         tofu/conflicting/B662E42F-5.txt, tofu/conflicting/BE04EB2B.gpg,
746         tofu/conflicting/BE04EB2B-secret.gpg, tofu/conflicting/BE04EB2B-1.txt,
747         tofu/conflicting/BE04EB2B-2.txt, tofu/conflicting/BE04EB2B-3.txt,
748         tofu/conflicting/BE04EB2B-4.txt, tofu/conflicting/BE04EB2B-5.txt and
749         tofu/conflicting/README.
750
751         doc: Improve the text in the gpg manual.
752         * doc/gpg.texi: Improve the text.
753
754         g10: Avoid a memory leak.
755         * g10/gpg.c (main): Free KB when we're done with it.
756
757         tests: Change (interactive-shell) to start an interactive shell.
758         * tests/gpgscm/tests.scm (interactive-shell): Start an interactive
759         shell.
760
761         tests: Check the signature count in the TOFU TFS record.
762         * tests/openpgp/tofu.scm: Check the signature count in the TOFU TFS
763         record.
764
765         tests: Replace data used by the TOFU conflict test.
766         * tests/openpgp/tofu-2183839A-1.txt: Remove file.
767         * tests/openpgp/tofu-BC15C85A-1.txt: Remove file.
768         * tests/openpgp/tofu-EE37CF96-1.txt: Remove file.
769         * tests/openpgp/tofu-keys-secret.asc: Remove file.
770         * tests/openpgp/tofu-keys.asc: Remove file.
771         * tests/openpgp/tofu/conflicting/1C005AF3.gpg: New file.
772         * tests/openpgp/tofu/conflicting/1C005AF3-secret.gpg: New file.
773         * tests/openpgp/tofu/conflicting/1C005AF3-1.txt: New file.
774         * tests/openpgp/tofu/conflicting/1C005AF3-2.txt: New file.
775         * tests/openpgp/tofu/conflicting/1C005AF3-3.txt: New file.
776         * tests/openpgp/tofu/conflicting/1C005AF3-4.txt: New file.
777         * tests/openpgp/tofu/conflicting/1C005AF3-5.txt: New file.
778         * tests/openpgp/tofu/conflicting/B662E42F.gpg: New file.
779         * tests/openpgp/tofu/conflicting/B662E42F-secret.gpg: New file.
780         * tests/openpgp/tofu/conflicting/B662E42F-1.txt: New file.
781         * tests/openpgp/tofu/conflicting/B662E42F-2.txt: New file.
782         * tests/openpgp/tofu/conflicting/B662E42F-3.txt: New file.
783         * tests/openpgp/tofu/conflicting/B662E42F-4.txt: New file.
784         * tests/openpgp/tofu/conflicting/B662E42F-5.txt: New file.
785         * tests/openpgp/tofu/conflicting/BE04EB2B.gpg: New file.
786         * tests/openpgp/tofu/conflicting/BE04EB2B-secret.gpg: New file.
787         * tests/openpgp/tofu/conflicting/BE04EB2B-1.txt: New file.
788         * tests/openpgp/tofu/conflicting/BE04EB2B-2.txt: New file.
789         * tests/openpgp/tofu/conflicting/BE04EB2B-3.txt: New file.
790         * tests/openpgp/tofu/conflicting/BE04EB2B-4.txt: New file.
791         * tests/openpgp/tofu/conflicting/BE04EB2B-5.txt: New file.
792         * tests/openpgp/tofu/conflicting/README: New file.
793         * tests/openpgp/tofu.scm: Update accordingly.
794
795         g10: Remove dead code.
796         * g10/tofu.c (tofu_set_policy_by_keyid): Remove function.
797
798 2016-12-05  Werner Koch  <wk@gnupg.org>
799
800         gpg: New option --quick-set-expire.
801         * g10/gpg.c (aQuickSetExpire): New.
802         (opts): New option --quick-set-expire.
803         (main): Implement option.
804         * g10/keyedit.c (menu_expire): Add args FORCE_MAINKEY and
805         NEWEXPIRATION.  Change semantics of the return value.  Change caller.
806         (keyedit_quick_set_expire): New.
807
808 2016-12-05  Justus Winter  <justus@g10code.com>
809
810         tests: New test for '--enarmor' and '--dearmor'.
811         * tests/openpgp/Makefile.am (XTESTS): Add new test.
812         * tests/openpgp/enarmor.scm: New file.
813
814 2016-12-03  Werner Koch  <wk@gnupg.org>
815
816         gpg: Fix error code arg in ERRSIG status line.
817         * g10/mainproc.c (check_sig_and_print): Use gpg_err_code to return an
818         error code in ERRSIG.
819
820 2016-12-02  Werner Koch  <wk@gnupg.org>
821
822         gpg: New option --default-new-key-algo.
823         * common/openpgp-oid.c (openpgp_is_curve_supported): Add optional arg
824         R_ALGO and change all callers.
825         * common/util.h (GPG_ERR_UNKNOWN_FLAG): New error code.
826         * g10/options.h (struct opt): Add field DEF_NEW_KEY_ALGO.
827         * g10/gpg.c (oDefaultNewKeyAlgo): New enum.
828         (opts): New option "--default-new-key-algo".
829         (main): Set the option.
830         * g10/keygen.c: Remove DEFAULT_STD_ FUTURE_STD_ constants and replace
831         them by ...
832         (DEFAULT_STD_KEY_PARAM, FUTURE_STD_KEY_PARAM): new string constants.
833         (get_keysize_range): Remove arg R_DEF and return that value instead.
834         Change all callers.
835         (gen_rsa): Use get_keysize_range instead of the removed
836         DEFAULT_STD_KEYSIZE.
837         (parse_key_parameter_part): New function.
838         (parse_key_parameter_string): New function.
839         (quick_generate_keypair): Refactor using parse_key_parameter_string.
840         (generate_keypair): Ditto.
841         (parse_algo_usage_expire): Ditto.
842
843 2016-12-02  Neal H. Walfield  <neal@g10code.com>
844
845         g10: Improve debugging output.
846         * g10/tofu.c (string_to_long): Improve debugging output.
847         (string_to_ulong): Likewise.
848
849 2016-12-01  Neal H. Walfield  <neal@g10code.com>
850
851         g10: In the TOFU module, make strings easier to translate.
852         * g10/tofu.c: Remove dead code.
853         (time_ago_str): Simplify implementation since we only want the most
854         significant unit.
855         (format_conflict_msg_part1): Use ngettext.
856         (ask_about_binding): Likewise and only emit full sentences.
857         (show_statistics): Likewise.
858
859 2016-12-01  Werner Koch  <wk@gnupg.org>
860
861         dirmngr: Add option --standard-resolver.
862         * dirmngr/dirmngr.c (oStandardResolver): New constant.
863         (opts): New option --standard-resolver.
864         (parse_rereadable_options): Set option.
865         * dirmngr/dns-stuff.c: Refactor all code to support the new option.
866         (standard_resolver): New var.
867         (enable_standard_resolver, standard_resolver_p): New func.
868         * dirmngr/http.c (connect_server): Remove USE_DNS_SRV build
869         conditional.
870         * dirmngr/ks-engine-hkp.c (map_host): Ditto.
871         * dirmngr/server.c (cmd_getinfo) <dnsinfo>: Take care of new option
872         * configure.ac (HAVE_ADNS_IF_TORMODE): Remove var ADNSLIB.  ac_define
873         USE_ADNS in the adns checking code.  Remove options --disable-dns-srv
874         and --disable-dns-cert.  Always look for the system resolver.  Print
875         warning if no system resolver was found.
876         (USE_DNS_CERT, USE_DNS_SRV): Remove ac_defines.
877         (HAVE_SYSTEM_RESOLVER): New ac_define.
878         (USE_DNS_SRV): Remove am_conditional; not used anyway.
879
880         gpg: Let only Dirmngr decide whether CERT is supported.
881         * g10/getkey.c (parse_auto_key_locate): Do not build parts depending
882         on USE_DNS_CERT.
883
884 2016-12-01  Justus Winter  <justus@g10code.com>
885
886         tests,build: Fix distcheck.
887         * tests/openpgp/Makefile.am (sample_msgs): Add messages required for
888         the new test 'verify-multifile.scm'.
889
890         tests: Add test for '--verify --multifile'.
891         * tests/openpgp/Makefile.am (XTESTS): Add new test.
892         * tests/openpgp/verify-multifile.scm: New file.
893
894 2016-11-30  Justus Winter  <justus@g10code.com>
895
896         tests: Add test for '--encrypt --multifile'.
897         * tests/openpgp/Makefile.am (XTESTS): Add new test.
898         * tests/openpgp/encrypt-multifile.scm: New file.
899
900 2016-11-29  Werner Koch  <wk@gnupg.org>
901
902         agent,dirmngr: Tiny restructuring.
903         * agent/gpg-agent.c (handle_connections): Add a comment.
904         * dirmngr/dirmngr.c (main): Move assuan_sock_close of the listening
905         socket to ...
906         (handle_connections): here.  Add a comment why we keep the
907         listening socket open during a shutdown.
908
909         agent,dirmngr: Handle corner case in shutdown mode.
910         * agent/gpg-agent.c (handle_connections): Keep on selecting on the
911         inotify fd even when a shutdown is pending.
912         * dirmngr/dirmngr.c (handle_connections): Ditto.  Also simplifyy the
913         use of the HAVE_INOTIFY_INIT cpp conditional.
914
915         gpgsm: Allow decryption with a card returning a PKCS#1 stripped key.
916         * sm/decrypt.c (prepare_decryption): Handle a 16 byte session key.
917
918         agent,w32: Initialize nPth in server mode.
919         * agent/gpg-agent.c (main) [W32]: Call initialize_modules in server
920         mode.
921
922         gpg: Make --decrypt with output '-&nnnn' work.
923         * g10/plaintext.c (get_output_file): Check and open special filename
924         before falling back to stdout.
925
926         gpg,sm: Merge the two versions of check_special_filename.
927         * sm/gpgsm.c (check_special_filename): Move to ..
928         * common/sysutils.c (check_special_filename): here.  Add arg
929         NOTRANSLATE.
930         (allow_special_filenames): New local var.
931         (enable_special_filenames): New public functions.
932         * sm/gpgsm.c (allow_special_filenames): Remove var.
933         (main): Call enable_special_filenames instead of setting the var.
934         (open_read, open_es_fread, open_es_fwrite): Call
935         check_special_filename with 0 for NOTRANSLATE.
936         * common/iobuf.c (special_names_enabled): Remove var.
937         (iobuf_enable_special_filenames): Remove func.
938         (check_special_filename): Remove func.
939         (iobuf_is_pipe_filename): Call new version of the function with
940         NOTRANSLATE set.
941         (do_open): Ditto.
942         * g10/gpg.c (main): Call enable_special_filenames instead of
943         iobuf_enable_special_filenames.
944         * g10/gpgv.c (main): Ditto.
945
946 2016-11-29  Justus Winter  <justus@g10code.com>
947
948         g10: Fix memory leak.
949         * g10/decrypt.c (decrypt_messages): Properly decrease the reference
950         count of the armor filters after pushing them.
951
952         tools,build: Build WKS tools against libintl.
953         * tools/Makefile.am (gpg_wks_server_LDADD): Link against libintl.
954         (gpg_wks_client_LDADD): Likewise.
955
956 2016-11-29  Neal H. Walfield  <neal@g10code.com>
957
958         Improve some comments.
959
960         g10: Extend TOFU_STATS to always show the validity.
961         * doc/DETAILS (TOFU_STATS): Rename the VALIDITY field to SUMMARY.  Add
962         a new field called VALIDITY.
963         * g10/tofu.c (write_stats_status): Update output accordingly.
964
965 2016-11-29  Justus Winter  <justus@g10code.com>
966
967         tests: Add test for '--decrypt --multifile'.
968         * tests/openpgp/Makefile.am (XTESTS): Add new test.
969         * tests/openpgp/decrypt-multifile.scm: New file.
970
971         gpgscm: Avoid truncating pointers.
972         * tests/gpgscm/scheme.c (_alloc_cellseg): Avoid truncating pointers on
973         systems where sizeof(unsigned long) < sizeof(void *).
974
975 2016-11-29  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
976
977         dirmngr: Lazily launch ldap reaper thread.
978         * dirmngr/dirmngr.c (main): Avoid calling ldap_wrapper_launch_thread()
979         Before we need it.
980         * dirmngr/ldap-wrapper.c (ldap_wrapper): Call
981         ldap_wrapper_launch_thread() just in time (before any attempt to use
982         an ldap subprocess).
983
984 2016-11-29  Werner Koch  <wk@gnupg.org>
985
986         build: Remove more keywords from the generated ChangeLog.
987         * build-aux/gitlog-to-changelog (parse_amend_file): Generalize keyword
988         removal.
989
990 2016-11-28  Justus Winter  <justus@g10code.com>
991
992         tests: Add test for the ssh key export.
993         * tests/openpgp/Makefile.am (XTESTS): Add new test.
994         (sample_keys): Add new files.
995         * tests/openpgp/samplekeys/authenticate-only.pub.asc: New file.
996         * tests/openpgp/samplekeys/authenticate-only.sec.asc: Likewise.
997         * tests/openpgp/ssh-export.scm: Likewise.
998
999         g10: Fix iteration over getkey results.
1000         * g10/getkey.c (getkey_next): Only ask 'lookup' for the exact match if
1001         our caller requested the key.  Fixes a crash in 'lookup'.
1002
1003         tests: Rename ssh test.
1004         * tests/openpgp/ssh.scm: Rename to 'ssh-import.scm'.
1005         * tests/openpgp/Makefile (XTESTS): Likewise.
1006
1007 2016-11-25  NIIBE Yutaka  <gniibe@fsij.org>
1008
1009         scd: Support OpenPGP card V3 for RSA.
1010         * scd/app-openpgp.c (struct app_local_s): Remove max_cmd_data and
1011         max_rsp_data fields as Extended Capabilities bits are different.
1012         (get_cached_data) Use extcap.max_certlen_3.
1013         (get_one_do): Don't use exmode=1.
1014         (determine_rsa_response): New.
1015         (get_public_key, do_genkey): Call determine_rsa_response.
1016         (do_sign): Use keyattr[0].rsa.n_bits / 8, instead of max_rsp_data.
1017         (do_auth): Use keyattr[2].rsa.n_bits / 8, instead of max_rsp_data.
1018         (do_decipher): Likewise with Use keyattr[1].rsa.n_bits / 8.
1019         (show_caps): Remove max_cmd_data and max_rsp_data.
1020         (app_select_openpgp): Likewise.
1021
1022 2016-11-23  Justus Winter  <justus@g10code.com>
1023
1024         gpgscm: Make 'reverse' compatible with 'reverse_in_place'.
1025         * tests/gpgscm/scheme.c (reverse): Update prototype, add terminator
1026         argument.
1027         (opexe_4): Update callsite.
1028
1029         gpgscm: Clean sweeped cells.
1030         * tests/gpgscm/scheme.c (gc): Zero typeflag and car of free cells.
1031
1032         gpgscm: Fix initialization of 'sink'.
1033         * tests/gpgscm/scheme.c (scheme_init_custom_alloc): Also initialize
1034         cdr.
1035
1036 2016-11-23  Neal H. Walfield  <neal@g10code.com>
1037
1038         g10: Avoid gratuitously loading a keyblock when it is already available.
1039         * g10/trust.c (get_validity): Add new, optional parameter KB.  Only
1040         load the keyblock if KB is NULL.  Update callers.
1041         (get_validity): Likewise.
1042         * g10/trustdb.c (tdb_get_validity_core): Likewise.
1043
1044 2016-11-22  Neal H. Walfield  <neal@g10code.com>
1045
1046         g10: Use es_fopen instead of open.
1047         * g10/tofu.c: Don't include <utime.h>, <fcntl.h> or <unistd.h>.
1048         (busy_handler): Replace use of open with es_fopen.
1049
1050         g10: If the set of UTKs changes, invalidate any changed policies.
1051         * g10/trustdb.c (tdb_utks): New function.
1052         * g10/tofu.c (check_utks): New function.
1053         (initdb): Call it.
1054         * tests/openpgp/tofu.scm: Modify test to check the effective policy of
1055         keys whose effective policy changes when we change the set of UTKs.
1056
1057 2016-11-22  NIIBE Yutaka  <gniibe@fsij.org>
1058
1059         scd: Fix receive buffer size.
1060         * scd/apdu.c (send_le): Fix the size, adding two for status
1061         bytes to Le.
1062
1063 2016-11-22  Justus Winter  <justus@g10code.com>
1064
1065         gpgscm: Refactor.
1066         * tests/gpgscm/scheme.c (opexe_0): Reduce code duplication.
1067
1068         gpgscm: Fix property lists.
1069         * tests/gpgscm/opdefines.h (put, get): Check arguments.  Also rename
1070         to 'set-symbol-property' and 'symbol-property', the names used by
1071         Guile, because put and get are too unspecific.
1072         * tests/gpgscm/scheme.c (hasprop): Only symbols have property lists.
1073         (get_property): New function.
1074         (set_property): Likewise.
1075         (opexe_4): Use the new functions.
1076
1077         gpgscm: Fix installation of error handler.
1078         * tests/gpgscm/ffi.scm: Set '*error-hook*' again so that the
1079         interpreter will use our function.
1080
1081         gpgscm: Use a static pool of cells for small integers.
1082         * tests/gpgscm/scheme-private.h (struct scheme): New fields for the
1083         static integer cells.
1084         * tests/gpgscm/scheme.c (_alloc_cellseg): New function.
1085         (alloc_cellseg): Use the new function.
1086         (MAX_SMALL_INTEGER): New macro.
1087         (initialize_small_integers): New function.
1088         (mk_small_integer): Likewise.
1089         (mk_integer): Return a small integer if possible.
1090         (_s_return): Do not free 'op' if it is a small integer.
1091         (s_save): Use a small integer to box the opcode.
1092         (scheme_init_custom_alloc): Initialize small integers.
1093         (scheme_deinit): Free chunk of small integers.
1094         * tests/gpgscm/scheme.h (USE_SMALL_INTEGERS): New macro.
1095
1096         tests: Delay querying the avaliable algorithms.
1097         * tests/openpgp/defs.scm: Set verbosity earlier, turn 'all-*-algos'
1098         into promises.
1099         * tests/openpgp/conventional-mdc.scm: Force the promises.
1100         * tests/openpgp/conventional.scm: Likewise.
1101         * tests/openpgp/encrypt-dsa.scm: Likewise.
1102         * tests/openpgp/encrypt.scm: Likewise.
1103         * tests/openpgp/gpgtar.scm: Likewise.
1104         * tests/openpgp/sigs.scm: Likewise.
1105
1106         g10: Fix memory leak.
1107         * g10/tofu.c (tofu_notice_key_changed): Remove spurious duplicate call
1108         to 'hexfingerprint'.
1109
1110 2016-11-21  Neal H. Walfield  <neal@g10code.com>
1111
1112         g10: Cache the effective policy.  Recompute it when required.
1113         * g10/tofu.c (initdb): Add column effective_policy to the bindings
1114         table.
1115         (record_binding): New parameters effective_policy and set_conflict.
1116         Save the effective policy.  If SET_CONFLICT is set, then set conflict
1117         according to CONFLICT.  Otherwise, preserve the current value of
1118         conflict.  Update callers.
1119         (get_trust): Don't compute the effective policy here...
1120         (get_policy): ... do it here, if it was not cached.  Take new
1121         parameters, PK, the public key, and NOW, the time that the operation
1122         started.  Update callers.
1123         (show_statistics): New parameter PK.  Pass it to get_policy.  Update
1124         callers.
1125         (tofu_notice_key_changed): New function.
1126         * g10/gpgv.c (tofu_notice_key_changed): New stub.
1127         * g10/import.c (import_revoke_cert): Take additional argument CTRL.
1128         Pass it to keydb_update_keyblock.
1129         * g10/keydb.c (keydb_update_keyblock): Take additional argument CTRL.
1130         Update callers.
1131         [USE_TOFU]: Call tofu_notice_key_changed.
1132         * g10/test-stubs.c (tofu_notice_key_changed): New stub.
1133         * tests/openpgp/tofu.scm: Assume that manually setting a binding's
1134         policy to auto does not cause the tofu engine to forget about any
1135         conflict.
1136
1137         g10: Correctly parameterize ngettext.
1138         * g10/tofu.c (ask_about_binding): Correctly parameterize ngettext.
1139
1140         g10: Don't use the same variable for multiple SQL compiled statements.
1141         * g10/tofu.c (struct tofu_dbs_s): Remove unused field
1142         record_binding_update2.  Replace register_insert with
1143         register_signature and register_encryption.
1144         (tofu_register_signature): Don't use dbs->s.register_insert, but
1145         dbs->s.register_signature.
1146         (tofu_register_encryption): Don't use dbs->s.register_insert, but
1147         dbs->s.register_encryption.
1148
1149         g10: Add a convenience function for checking if a key is a primary key.
1150         * g10/keydb.h (pk_is_primary): New function.
1151         * g10/tofu.c (get_trust): Use it.
1152         (tofu_register_signature): Likewise.
1153         (tofu_register_encryption): Likewise.
1154         (tofu_set_policy): Likewise.
1155         (tofu_get_policy): Likewise.
1156
1157 2016-11-21  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
1158
1159         doc: Ship example gpg-agent-browser.socket in examples/systemd-user/.
1160         * doc/Makefile.am: Ship gpg-agent-browser.socket alongside the other
1161         systemd user service example files.
1162
1163 2016-11-21  NIIBE Yutaka  <gniibe@fsij.org>
1164
1165         agent: Fix npth + daemon mode problem.
1166         * agent/gpg-agent.c (main): Remove duplicated initialization in daemon
1167         mode.
1168
1169 2016-11-18  Werner Koch  <wk@gnupg.org>
1170
1171         Release 2.1.16.
1172
1173 2016-11-18  Ineiev  <ineiev@gnu.org>
1174
1175         po: Update Russian translation.
1176
1177 2016-11-18  NIIBE Yutaka  <gniibe@fsij.org>
1178
1179         g10: Fix flags to open for lock of ToFU.
1180         * g10/tofu.c (busy_handler): Fix the flags and utime is not needed.
1181
1182 2016-11-18  Werner Koch  <wk@gnupg.org>
1183
1184         dirmngr: Use a longer timer tick interval.
1185         * dirmngr/dirmngr.c (TIMERTICK_INTERVAL): Always use 60 seconds like
1186         we did for WindowsCE.
1187
1188 2016-11-18  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
1189
1190         dirmngr: More w32 system daemon cleanup.
1191         * dirmngr/dirmngr.c (handle_tick): Remove w32 tests for
1192         shutdown_pending; no longer needed.
1193
1194 2016-11-18  NIIBE Yutaka  <gniibe@fsij.org>
1195
1196         g10: Fix creating a lock for ToFU.
1197         * g10/tofu.c (busy_handler): Add third argument which is mandatory for
1198         O_CREATE flag.
1199
1200         scd: Don't limit to ST-2xxx for PC/SC.
1201         * scd/apdu.c (pcsc_vendor_specific_init): Only check vender ID.
1202
1203 2016-11-17  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
1204
1205         dirmngr: Use a default keyserver if none is explicitly set.
1206         * configure.ac: Define DIRMNGR_DEFAULT_KEYSERVER.
1207         * dirmngr/server.c (ensure_keyserver): Use it if no keyservers are set.
1208         * doc/dirmngr.texi: Document this behavior.
1209
1210         dirmngr: Add system CAs if no hkp-cacert is given.
1211         * dirmngr/dirmngr.c (http_session_new): If the user isn't talking to
1212         the HKPS pool, and they have not specified any hkp-cacert, then we
1213         should default to the system CAs, rather than nothing.
1214         * doc/dirmngr.texi: Document choice of CAs.
1215
1216         dirmngr: Register hkp-cacert even if the file doesn't exist yet.
1217         * dirmngr/dirmngr.c (parse_readable_options): If we're unable to turn
1218         an argument for hkp-cacert into an absolute filename, terminate
1219         completely.
1220         * dirmngr/http.c (http_register_tls_ca): Show a warning if file is not
1221         immediately accessible, but register it anyway.
1222
1223 2016-11-17  Justus Winter  <justus@g10code.com>
1224
1225         gpgscm: Re-enable the garbage collector in case of errors.
1226         * tests/gpgscm/scheme.c (opexe_0): Enable gc before calling 'Error_1'.
1227
1228         gpgscm: Fix string.
1229         * tests/gpgscm/scheme.c (type_to_string): Fix string.
1230
1231 2016-11-17  Werner Koch  <wk@gnupg.org>
1232
1233         dirmngr: Auto-sownload the swdb.lst.
1234         * dirmngr/dirmngr.h (struct opt): Add field allow_version_check.
1235         * dirmngr/dirmngr.c (oAllowVersionCheck): New.
1236         (opts): Add --allow-version-check.
1237         (network_activity_seen): New variable.
1238         (parse_rereadable_options): Set opt.allow_version_check.
1239         (main) <aGPGConfList>: Do not anymore set the no change flag for
1240         Windows.  Add allow-version-check.
1241         (netactivity_action): Set network_activity_seen.
1242         (housekeeping_thread): Call dirmngr_load_swdb.
1243         * tools/gpgconf-comp.c (gc_options_dirmngr): Add allow-version-check.
1244         Make "use-tor" available at Basic level.
1245
1246         dirmngr: Improve downloading of swdb.lst.
1247         * dirmngr/loadswdb.c (time_of_saved_swdb): Aslo return the "verified"
1248         timestamp.
1249         (dirmngr_load_swdb): Avoid unnecessary disk or network access witout
1250         FORCE.  Do not update swdb.lst if it did not change.
1251
1252         gpgconf: Change the displayed names of the components.
1253
1254 2016-11-16  Werner Koch  <wk@gnupg.org>
1255
1256         dirmngr: Add command to only load the swdb.
1257         * dirmngr/loadswdb.c: New.
1258         * dirmngr/Makefile.am (dirmngr_SOURCES): Add that file.
1259         * dirmngr/server.c: Remove includes cpparray.h and exectool.h.
1260         (cmd_loadswdb): New.
1261         (parse_version_number,parse_version_string): Remove.
1262         (my_mktmpdir, cmp_version): Remove.
1263         (fetch_into_tmpdir): Remove.
1264         (struct verify_swdb_parm_s): Remove.
1265         (verify_swdb_status_cb): Remove.
1266         (cmd_versioncheck): Remove.
1267         (register_commands): Register LOADSWDB.  Remove VERSIONCHECK.
1268
1269         scd,dirmngr: Keep the standard fds when daemonizing.
1270         * dirmngr/dirmngr.c (main): Before calling setsid do not close the
1271         standard fds but connect them to /dev/null.
1272         * scd/scdaemon.c (main): Ditto.  Noet that the old test for a log
1273         stream was even reverted.
1274
1275         common: Rename keybox_file_rename to gnupg_rename_file.
1276         * kbx/keybox-util.c (keybox_file_rename): Rename to ...
1277         * common/sysutils.c (gnupg_rename_file): this.  Change all callers.
1278
1279         wks: Always build gpg-wks-client.
1280         * tools/Makefile.am (gpg_wks_client): Remove macro.
1281         (libexec_PROGRAMS): Add gpg-wks-client.
1282
1283         gpg: New option --override-session-key-fd.
1284         * g10/gpg.c (oOverrideSessionKeyFD): New.
1285         (opts): Add option --override-session-key-fd.
1286         (main): Handle that option.
1287         (read_sessionkey_from_fd): New.
1288
1289 2016-11-15  Werner Koch  <wk@gnupg.org>
1290
1291         gpgv: New option --enable-special-filenames.
1292         * g10/gpgv.c (oEnableSpecialFilenames): New.
1293         (opts): Add option --enable-special-filenames.
1294         (main): Implement that option.
1295
1296         gpg: Add new compliance mode "de-vs".
1297         * g10/options.h (CO_DE_VS): New.
1298         (GNUPG): Also allow CO_DE_VS.
1299         * g10/gpg.c (oDE_VS): New.
1300         (parse_compliance_option): Add "de-vs".
1301         (set_compliance_option): Set "de-vs".
1302         * g10/misc.c (compliance_option_string): Return a description string.
1303         (compliance_failure): Ditto.
1304         * g10/keygen.c (ask_algo): Take care of CO_DE_VS.
1305         (get_keysize_range): Ditto.
1306         (ask_curve): Add new field to CURVES and trun flags into bit flags.
1307         Allow only Brainpool curves in CO_DE_VS mode.
1308
1309         gpg: Use usual free semantics for packet structure free functions.
1310         * g10/free-packet.c (free_attributes): Turn function into a nop for a
1311         NULL arg.
1312         (free_user_id): Ditto.
1313         (free_compressed): Ditto.
1314         (free_encrypted): Ditto.
1315         (free_plaintext): Ditto.
1316         (release_public_key_parts): Avoid extra check for NULL.
1317         * g10/getkey.c (get_best_pubkey_byname): Ditto.
1318
1319 2016-11-15  Justus Winter  <justus@g10code.com>
1320
1321         g10: Optimize key iteration.
1322         * g10/getkey.c (get_best_pubkey_byname): Use the node returned by
1323         'getkey_next' instead of doing another lookup.
1324
1325         g10: Fix memory leak.
1326         * g10/getkey.c (finish_lookup): Clarify that we do not return a
1327         reference.
1328         (lookup): Clarify the relation between RET_KEYBLOCK and RET_FOUND_KEY.
1329         Check arguments.  Actually release the node if it is not returned.
1330
1331         g10: Fix iteration over getkey results.
1332         * g10/getkey.c (getkey_next): Fix invocation of 'lookup'.  If we want
1333         to use RET_FOUND_KEY, RET_KEYBLOCK must be valid.
1334
1335         g10: Fix use-after-free.
1336         * g10/getkey.c (pubkey_cmp): Make a copy of the user id.
1337         (get_best_pubkey_byname): Free the user ids.
1338
1339 2016-11-15  Werner Koch  <wk@gnupg.org>
1340
1341         sm: New stub option --compliance.
1342         * sm/gpgsm.c (oCompliance): New.
1343         (opts): Add "--compliance".
1344         (main): Implement as stub.
1345
1346 2016-11-15  NIIBE Yutaka  <gniibe@fsij.org>
1347
1348         g10: Fix memory leak.
1349         * g10/keyedit.c (menu_adduid): Don't copy 'sig'.
1350
1351 2016-11-15  Werner Koch  <wk@gnupg.org>
1352
1353         gpg: New option --compliance.
1354         * g10/gpg.c (oCompliance): New.
1355         (opts): Add "--compliance".
1356         (parse_tofu_policy): Use a generic description string for "help".
1357         (parse_compliance_option): New.
1358         (main): Add option oCompliance.  Factor out code for compliance
1359         setting to ...
1360         (set_compliance_option): new.
1361
1362 2016-11-15  Justus Winter  <justus@g10code.com>
1363
1364         g10: Fix memory leak.
1365         * g10/keyedit.c (menu_adduid): Deallocate 'sig'.
1366
1367         gpgscm: Mark cells requiring finalization.
1368         * tests/gpgscm/scheme.c (T_FINALIZE): New macro.
1369         (mk_port): Use the new macro.
1370         (mk_foreign_object): Likewise.
1371         (mk_counted_string): Likewise.
1372         (mk_empty_string): Likewise.
1373         (gc): Only call 'finalize_cell' for cells with the new flag.
1374
1375         gpgscm: Recover more cells.
1376         * tests/gpgscm/scheme.c (_s_return): Recover the cell holding the
1377         opcode.
1378
1379 2016-11-14  Justus Winter  <justus@g10code.com>
1380
1381         g10: Fix memory leak.
1382         * g10/mainproc.c (check_sig_and_print): Free 'pk'.
1383
1384         gpgscm: Avoid cell allocation overhead.
1385         * tests/gpgscm/scheme-private.h (struct scheme): New fields
1386         'inhibit_gc', 'reserved_cells', and 'reserved_lineno'.
1387         * tests/gpgscm/scheme.c (GC_ENABLED): New macro.
1388         (USE_GC_LOCKING): Likewise.
1389         (gc_reservations): Likewise.
1390         (gc_reservation_failure): New function.
1391         (_gc_disable): Likewise.
1392         (gc_disable): New macro.
1393         (gc_enable): Likewise.
1394         (gc_enabled): Likewise.
1395         (gc_consume): Likewise.
1396         (get_cell_x): Consume reserved cell if garbage collection is disabled.
1397         (_get_cell): Assert that gc is enabled.
1398         (get_cell): Only record cell in the list of recently allocated cells
1399         if gc is enabled.
1400         (get_vector_object): Likewise.
1401         (gc): Assert that gc is enabled.
1402         (s_return): Add comment, adjust call to '_s_return'.
1403         (s_return_enable_gc): New macro.
1404         (_s_return): Add flag 'enable_gc' and re-enable gc if set.
1405         (oblist_add_by_name): Use the new facilities to protect the
1406         allocations.
1407         (new_frame_in_env): Likewise.
1408         (new_slot_spec_in_env): Likewise.
1409         (s_save): Likewise.
1410         (opexe_0): Likewise.
1411         (opexe_1): Likewise.
1412         (opexe_2): Likewise.
1413         (opexe_5): Likewise.
1414         (opexe_6): Likewise.
1415         (scheme_init_custom_alloc): Initialize the new fields.
1416
1417 2016-11-14  NIIBE Yutaka  <gniibe@fsij.org>
1418
1419         scd: Fix status info encoding.
1420         * scd/command.c (send_status_info): Do percent plus encoding correctly.
1421
1422 2016-11-12  Werner Koch  <wk@gnupg.org>
1423
1424         agent: Improve concurrency when Libgcrypt 1.8 is used.
1425         * agent/gpg-agent.c (thread_init_once): Tell Libgcrypt to reinit the
1426         system call clamp.
1427         (agent_libgcrypt_progress_cb): Do not sleep if Libgcrypt is recent
1428         enough.
1429
1430 2016-11-11  Werner Koch  <wk@gnupg.org>
1431
1432         agent: Kludge to mitigate blocking calls in Libgcrypt.
1433         * agent/gpg-agent.c (agent_libgcrypt_progress_cb): Sleep for 100ms on
1434         "need_entropy".
1435
1436         dirmngr: Prepare to trigger jobs by network activity.
1437         * dirmngr/http.c (netactivity_cb): New.
1438         (http_register_netactivity_cb): New.
1439         (notify_netactivity): New.
1440         (connect_server): Call that function.
1441         * dirmngr/dirmngr.c (main): Call http_register_netactivity_cb.
1442         (netactivity_action): New stub handler.
1443
1444 2016-11-11  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
1445
1446         agent: Clean up comments.
1447         * agent/agent.h: Clean up comments.
1448
1449 2016-11-10  Werner Koch  <wk@gnupg.org>
1450
1451         gpg,sm: Add STATUS_ERROR keydb_search and keydb_add-resource.
1452         * g10/keydb.c (keydb_add_resource): Make ANY_REGISTERED
1453         file-global.  Write a STATUS_ERROR.
1454         (maybe_create_keyring_or_box): Check for non-accessible but existant
1455         file.
1456         (keydb_search): Write a STATUS_ERROR if no keyring has been registered
1457         but continue to return NOT_FOUND.
1458         * sm/keydb.c (keydb_add_resource): Rename ANY_PUBLIC to ANY_REGISTERED
1459         and make file-global.  Write a STATUS_ERROR.
1460         (keydb_search): Write a STATUS_ERROR if no keyring has been registered
1461         but continue to return NOT_FOUND.  Also add new arg CTRL and change
1462         all callers to pass it down.
1463
1464         sm: Remove unused arg SECRET from keydb functions.
1465         * sm/keydb.c (struct resource_item): Remove field 'secret'.
1466         (keydb_add_resource): Remove arg 'secret' and change all callers.
1467         (keydb_new): Ditto.
1468
1469 2016-11-10  Justus Winter  <justus@g10code.com>
1470
1471         gpgscm: Recover cells from the list of recently allocated cells.
1472         * tests/gpgscm/scheme.c (ok_to_freely_gc): Recover cells.
1473
1474         gpgscm: Recover cells used to maintain interpreter state.
1475         * tests/gpgscm/scheme.c (free_cell): New function.
1476         (free_cons): Likewise.
1477         (_s_return): Use the new function to recover cells used to save the
1478         state of the interpreter in 's_save'.  This reduces the need to do a
1479         garbage collection considerably.
1480
1481         gpgscm: Reduce opcode dispatch overhead.
1482         * tests/gpgscm/scheme.c (s_thread_to): New macro.
1483         (CASE): Likewise.
1484         (opexe_[0-6]): Use 'CASE' instead of 'case' statements, replace
1485         's_goto' with 's_thread_to' where applicable.
1486
1487         gpgscm: Make the compile-hook configurable.
1488         * tests/gpgscm/scheme-private.h (struct scheme): Make field
1489         'COMPILE_HOOK' optional.
1490         * tests/gpgscm/scheme.c (opexe_0): Fix guard.
1491         (scheme_init_custom_alloc): Conditionally initialize 'COMPILE_HOOK'.
1492         * tests/gpgscm/scheme.h (USE_COMPILE_HOOK): Define to 1 by default.
1493
1494         gpgscm: Drop obsolete commented-out code.
1495         * tests/gpgscm/scheme.c (opexe_5): Drop obsolete code.
1496
1497         gpgscm: Remove dubious stack implementation.
1498         * tests/gpgscm/scheme-private.h (struct scheme): Remove related fields.
1499         * tests/gpgscm/scheme.c: Drop all !USE_SCHEME_STACK code.
1500         * tests/gpgscm/scheme.h (USE_SCHEME_STACK): Remove macro.
1501
1502 2016-11-10  Werner Koch  <wk@gnupg.org>
1503
1504         gpg: Improve error message for --quick-gen-key.
1505         * g10/keygen.c (parse_algo_usage_expire): Use a different error
1506         message for an unknown algorithm name.
1507
1508         dirmngr: Improve concurrency in the non-adns case.
1509         * dirmngr/dns-stuff.c (map_adns_status_to_gpg_error): New.
1510         (resolve_name_adns, get_dns_cert, get_dns_cname): Use that function.
1511         (getsrv) [!USE_ADNS]: Call res_query outside of nPth.
1512
1513 2016-11-08  Justus Winter  <justus@g10code.com>
1514
1515         tests: Fix environment setup.
1516         * tests/openpgp/defs.scm (setup-legacy-environment): Do not call
1517         'setup-environment' because that will start the agent, and hence
1518         register the atexit function twice.
1519
1520         Fixes: a55393cb5f4b331cb3a715c7d9a8b91f7606f337
1521
1522         tests: Log and display output from tests when run in parallel.
1523         * tests/openpgp/run-tests.scm (test): Add field 'logfd'.
1524         (test::new, test::set-*): Adapt accordingly.
1525         (test::set-logfd): New function.
1526         (test::open-log-file): Likewise.
1527         (test::run-sync): Use the new function.
1528         (test::run-async): Likewise.
1529         (test::report): Replay the log.
1530         (run-tests-parallel): Reverse the results to restore the original
1531         order.
1532
1533         tests: Simplify test.
1534         * tests/openpgp/issue2417.scm: Simplify.
1535
1536         gpgscm: Expose seek and associated constants.
1537         * tests/gpgscm/ffi.c (do_seek): New function.
1538         (ffi_init): Expose 'seek' and 'SEEK_{SET,CUR,END}'.
1539         * tests/gpgscm/lib.scm: Document the new function.
1540
1541         gpgscm: Fix error message.
1542         * tests/gpgscm/ffi.c (do_wait_processes): Fix and improve error
1543         messages.
1544
1545         tests,w32: Make cleanup more robust.
1546         * tests/openpgp/run-tests.scm (run-tests-parallel): Catch errors when
1547         removing the working directory.  On Windows this can fail if there is
1548         still a process using one of the files there.
1549         (run-tests-sequential): Likewise.
1550
1551         common,w32: Simplify locking.
1552         * common/asshelp.c (lock_spawning): Use the same code on Windows that
1553         we use on all other platforms.
1554         (unlock_spawning): Likewise.
1555
1556 2016-11-07  Justus Winter  <justus@g10code.com>
1557
1558         tests: Write a log file for each test.
1559         * tests/openpgp/Makefile.am (CLEANFILES): Delete logs.
1560         * tests/openpgp/run-tests.scm (test::run-sync): Write logs.
1561
1562         gpgscm: Generalize splice to write to multiple sinks.
1563         * tests/gpgscm/ffi.c (ordinal_suffix): New function.
1564         (do_splice): Generalize splice to write to multiple sinks.
1565         * tests/gpgscm/lib.scm (splice): Document this fact.
1566
1567         gpgscm: Drop 'len' argument from splice.
1568         * tests/gpgscm/ffi.c (do_splice): Drop 'len' argument, no-one uses it.
1569         * tests/gpgscm/lib.scm (splice): Document foreign function.
1570
1571         tests: Move environment creation and teardown into each test.
1572         * tests/gpgscm/tests.scm (log): New function.
1573         * tests/openpgp/run-tests.scm (run-tests-parallel): Do not run the
1574         startup and teardown scripts.
1575         (run-tests-sequential): Likewise.
1576         * tests/openpgp/setup.scm: Move all functions...
1577         * tests/openpgp/defs.scm: ... here and make them less verbose.
1578         (setup-environment): New function.
1579         (setup-legacy-environment): Likewise.
1580         (start-agent): Make less verbose, run 'stop-agent' at interpreter
1581         exit.
1582         (stop-agent): Make less verbose.
1583         * tests/openpgp/finish.scm: Drop file.
1584         * tests/openpgp/Makefile.am (EXTRA_DIST): Drop removed file.
1585         * tests/openpgp/4gb-packet.scm: Use 'setup-environment' or
1586         'setup-legacy-environment' as appropriate.
1587         * tests/openpgp/armdetach.scm: Likewise.
1588         * tests/openpgp/armdetachm.scm: Likewise.
1589         * tests/openpgp/armencrypt.scm: Likewise.
1590         * tests/openpgp/armencryptp.scm: Likewise.
1591         * tests/openpgp/armor.scm: Likewise.
1592         * tests/openpgp/armsignencrypt.scm: Likewise.
1593         * tests/openpgp/armsigs.scm: Likewise.
1594         * tests/openpgp/clearsig.scm: Likewise.
1595         * tests/openpgp/conventional-mdc.scm: Likewise.
1596         * tests/openpgp/conventional.scm: Likewise.
1597         * tests/openpgp/decrypt-dsa.scm: Likewise.
1598         * tests/openpgp/decrypt.scm: Likewise.
1599         * tests/openpgp/default-key.scm: Likewise.
1600         * tests/openpgp/detach.scm: Likewise.
1601         * tests/openpgp/detachm.scm: Likewise.
1602         * tests/openpgp/ecc.scm: Likewise.
1603         * tests/openpgp/encrypt-dsa.scm: Likewise.
1604         * tests/openpgp/encrypt.scm: Likewise.
1605         * tests/openpgp/encryptp.scm: Likewise.
1606         * tests/openpgp/export.scm: Likewise.
1607         * tests/openpgp/finish.scm: Likewise.
1608         * tests/openpgp/genkey1024.scm: Likewise.
1609         * tests/openpgp/gpgtar.scm: Likewise.
1610         * tests/openpgp/gpgv-forged-keyring.scm: Likewise.
1611         * tests/openpgp/import.scm: Likewise.
1612         * tests/openpgp/issue2015.scm: Likewise.
1613         * tests/openpgp/issue2417.scm: Likewise.
1614         * tests/openpgp/issue2419.scm: Likewise.
1615         * tests/openpgp/key-selection.scm: Likewise.
1616         * tests/openpgp/mds.scm: Likewise.
1617         * tests/openpgp/multisig.scm: Likewise.
1618         * tests/openpgp/quick-key-manipulation.scm: Likewise.
1619         * tests/openpgp/seat.scm: Likewise.
1620         * tests/openpgp/shell.scm: Likewise.
1621         * tests/openpgp/signencrypt-dsa.scm: Likewise.
1622         * tests/openpgp/signencrypt.scm: Likewise.
1623         * tests/openpgp/sigs-dsa.scm: Likewise.
1624         * tests/openpgp/sigs.scm: Likewise.
1625         * tests/openpgp/ssh.scm: Likewise.
1626         * tests/openpgp/tofu.scm: Likewise.
1627         * tests/openpgp/use-exact-key.scm: Likewise.
1628         * tests/openpgp/verify.scm: Likewise.
1629         * tests/openpgp/version.scm: Likewise.
1630         * tests/openpgp/issue2346.scm: Likewise and simplify.
1631
1632         tests: Do not allow tests to be run in a shared environment.
1633         * tests/openpgp/README: Update.
1634         * tests/openpgp/run-tests.scm (run-tests-parallel-shared): Drop
1635         function.
1636         (run-tests-parallel-isolated): Rename to 'run-tests-parallel'.
1637         (run-tests-sequential-shared): Drop function.
1638         (run-tests-sequential-isolated): Rename to 'run-tests-sequential'.
1639
1640         tests: Fix build.
1641         * tests/openpgp/Makefile.am: Drop dependency on 'mk-tdata'.
1642
1643         Fixes: 70215ff470c82d144e872057dfa5a478cc9195f2
1644
1645 2016-11-07  Werner Koch  <wk@gnupg.org>
1646
1647         wks: Encrypt all client mails also the target key,
1648         * tools/gpg-wks-client.c (encrypt_response): Add arg FINGERPRINT.
1649         (send_confirmation_response): Ditto.
1650         (process_confirmation_request): Parse out fingerprint and pass
1651         send_confirmation_response.
1652
1653 2016-11-07  Justus Winter  <justus@g10code.com>
1654
1655         tests,tools: Reimplement 'mk-tdata' in Scheme.
1656         * tests/openpgp/defs.scm (tools): Drop 'mk-tdata'.
1657         * tests/openpgp/setup.scm (make-test-data): New function.
1658         * tests/openpgp/verify.scm: Avoid 'mk-tdata'.
1659         * tools/Makefile.am (noinst_PROGRAMS): Drop 'mk-tdata'.
1660         * tools/mk-tdata.c: Drop file.
1661
1662         gpgscm,w32: Provide schemish file handling for binary files.
1663         * tests/gpgscm/lib.scm (call-with-binary-input-file): New function.
1664         (call-with-binary-output-file): Likewise.
1665
1666         gpgscm: Add support for pseudo-random numbers.
1667         * tests/gpgscm/ffi.c (do_getpid): New function.
1668         (do_srandom): Likewise.
1669         (random_scaled): Likewise.
1670         (do_random): Likewise.
1671         (do_make_random_string): Likewise.
1672         (ffi_init): Expose the new functions.
1673         * tests/gpgscm/lib.scm: Document the new functions.
1674
1675         g10: Fix crash.
1676         * g10/getkey.c (get_best_pubkey_byname): If 'get_pubkey_byname' does
1677         not return a getkey context, then it can return at most one key,
1678         therefore there is nothing to rank.  Also, always initialize '*retctx'
1679         to be on the safe side.
1680
1681         Fixes: ab89164be02012f1bf159c971853b8610e966301
1682
1683 2016-11-04  Justus Winter  <justus@g10code.com>
1684
1685         gpgscm: Fix printing strings containing zero bytes.
1686         * tests/gpgscm/scheme.c (atom2str): Fix computing the length of Scheme
1687         strings.  Scheme strings can contain zero bytes.
1688
1689         gpgscm: Implement 'atexit'.
1690         * tests/gpgscm/ffi.scm (throw): Run *run-atexit-handlers* when
1691         terminating the interpreter.
1692         (*atexit-handlers*): New variable.
1693         (*run-atexit-handlers*): New function.
1694         (atexit): Likewise.
1695         * tests/gpgscm/main.c (main): Run *run-atexit-handlers* at normal
1696         interpreter shutdown.
1697
1698 2016-11-04  NIIBE Yutaka  <gniibe@fsij.org>
1699
1700         scd: Fix length error for READKEY.
1701         * scd/app-openpgp.c (do_readkey): Decrement the length.
1702
1703         scd: Add --advanced option for READKEY.
1704         * scd/command.c (cmd_readkey) : Support ADVANCED arg.
1705         * scd/app.c (app_readcert): Add ADVANCED arg.
1706         * scd/app-openpgp.c (do_readkey): Implement ADVANCED arg.
1707         * scd/app-nks.c (do_readkey): Error return with GPG_ERR_NOT_SUPPORTED.
1708
1709 2016-11-03  Werner Koch  <wk@gnupg.org>
1710
1711         agent: Extend the PINENTRY_LAUNCHED inquiry and status.
1712         * agent/call-pinentry.c (start_pinentry): Get flavor and version and
1713         pass it to agent_inq_pinentry_launched.
1714         * agent/command.c (agent_inq_pinentry_launched): Add arg EXTRA.
1715         * g10/server.c (gpg_proxy_pinentry_notify): Print a new diagnostic.
1716
1717 2016-11-03  Justus Winter  <justus@g10code.com>
1718
1719         g10: Improve and unify key selection for -r and --locate-keys.
1720         * g10/getkey.c (struct pubkey_cmp_cookie): New type.
1721         (key_is_ok, uid_is_ok, subkey_is_ok): New functions.
1722         (pubkey_cmp): Likewise.
1723         (get_best_pubkey_byname): Likewise.
1724         * g10/keydb.h (get_best_pubkey_byname): New prototype.
1725         * g10/keylist.c (locate_one): Use the new function.
1726         * g10/pkclist.c (find_and_check_key): Likewise.
1727         * tests/openpgp/Makefile.am (XTESTS): Add new test.
1728         (TEST_FILES): Add new files.
1729         * tests/openpgp/key-selection.scm: New file.
1730         * tests/openpgp/key-selection/0.asc: Likewise.
1731         * tests/openpgp/key-selection/1.asc: Likewise.
1732         * tests/openpgp/key-selection/2.asc: Likewise.
1733         * tests/openpgp/key-selection/3.asc: Likewise.
1734         * tests/openpgp/key-selection/4.asc: Likewise.
1735
1736         gpgscm,tests: Add new functions to the test environment.
1737         * tests/gpgscm/lib.scm (first, last, powerset): New functions.
1738         * tests/gpgscm/tests.scm (interactive-shell): New function.
1739         * tests/openpgp/Makefile.am (EXTRA_DIST): Add new file.
1740         * tests/openpgp/README: Document 'interactive-shell'.
1741         * tests/openpgp/shell.scm: New file.
1742
1743 2016-11-03  Werner Koch  <wk@gnupg.org>
1744
1745         gpgconf: Add a new field to the --query-swdb output.
1746         * tools/gpgconf.c (query_swdb): Insert new field with the installed
1747         version.  Check that the supplied version does not contain a colon.
1748
1749 2016-11-02  Werner Koch  <wk@gnupg.org>
1750
1751         gpgconf: Add command --query-swdb.
1752         * tools/gpgconf.c (aQuerySWDB): New.
1753         (opts): Add --query-swdb.
1754         (valid_swdb_name_p): New.
1755         (query_swdb): New.
1756         (main): Implement command --query-swdb.
1757
1758         common: Improve compare_string_versions.
1759         * common/stringhelp.c: Include limits.h.
1760         (compare_version_strings): Change semantics to behave like strcmp.
1761         Include the patch lebel in the comparison.  Allow checking a single
1762         version string.
1763         * common/t-stringhelp.c (test_compare_version_strings): Adjust test
1764         vectors and a few new vectors.
1765         * g10/call-agent.c (warn_version_mismatch): Adjust to new sematics.
1766         * g10/call-dirmngr.c (warn_version_mismatch): Ditto.
1767         * sm/call-agent.c (warn_version_mismatch): Ditto.
1768         * sm/call-dirmngr.c (warn_version_mismatch): Ditto.
1769
1770 2016-11-02  Justus Winter  <justus@g10code.com>
1771
1772         gpgscm: Fix inclusion of readline header.
1773         * tests/gpgscm/ffi.c: Define magic macro to prevent the completion
1774         function from redefined.
1775
1776 2016-11-02  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
1777
1778         build: Fix misspelled dirmngr.
1779
1780         Spelling: correct spelling of "passphrase".
1781         There were several different variant spellings of "passphrase".  This
1782         should fix them all for all English text.
1783
1784         I did notice that po/it.po contains multiple instances of
1785         "passhprase", which also looks suspect to me, but i do not know
1786         Italian, so i did not try to correct it.
1787
1788 2016-11-02  Justus Winter  <justus@g10code.com>
1789
1790         g10,w32: Fix build on Windows.
1791         * g10/tofu.c (begin_transaction): Use the new 'gnupg_usleep'.
1792
1793 2016-10-31  Werner Koch  <wk@gnupg.org>
1794
1795         common: New function gnupg_usleep.
1796         * configure.ac (HAVE_NANOSLEEP): Test for nanosleep.
1797         * common/sysutils.c: Always include time.h.
1798         (gnupg_usleep): New.
1799
1800 2016-10-31  Andre Heinecke  <aheinecke@intevation.de>
1801
1802         w32: Fix PKG_CONFIG_LIBDIR in --build-w32.
1803         * autogen.sh: Point pkg-config to the right location.
1804
1805 2016-10-31  Neal H. Walfield  <neal@g10code.com>
1806
1807         g10: Avoid gratuitious SQLite aborts and starving writers.
1808         * g10/tofu.c: Include <time.h>, <utime.h>, <fcntl.h> and <unistd.h>.
1809         (tofu_dbs_s): Add fields want_lock_file and want_lock_file_ctime.
1810         (begin_transaction): Only yield if DBS->WANT_LOCK_FILE_CTIME has
1811         changed since we took the lock.  Don't use gpgrt_yield to yield, but
1812         sleep for 100ms.  After taking the batch lock, update
1813         DBS->WANT_LOCK_FILE_CTIME.  Also take the batch lock the first time we
1814         take the real lock.  When taking the real lock, use immediate not
1815         deferred mode to avoid gratuitious aborts.
1816         (end_transaction): When dropping the outermost real lock, drop the
1817         batch lock.
1818         (busy_handler): New function.
1819         (opendbs): Set the busy handler to it when opening the DB.  Initialize
1820         CTRL->TOFU.DBS->WANT_LOCK_FILE.
1821         (tofu_closedbs): Free DBS->WANT_LOCK_FILE.
1822
1823 2016-10-30  Neal H. Walfield  <neal@g10code.com>
1824
1825         g10: Avoid reading in keys when possible.
1826         * g10/tofu.c (build_conflict_set): If CONFLICT_SET contains a single
1827         element, don't bother to check for cross sigs.  Add parameter PK.
1828         Update callers.
1829
1830         g10: Fix bit setting.
1831         * g10/tofu.c (build_conflict_set): Fix bit setting.
1832
1833 2016-10-28  Werner Koch  <wk@gnupg.org>
1834
1835         gpg: Enable the Issuer Fingerprint from rfc4880bis.
1836         * g10/build-packet.c (build_sig_subpkt_from_sig): Always write the new
1837         Issuer Fingerprint sub-packet.
1838         * g10/mainproc.c (check_sig_and_print): Always consider that
1839         sub-packet.
1840
1841 2016-10-27  Werner Koch  <wk@gnupg.org>
1842
1843         dirmngr: Fix signature checking.
1844         * dirmngr/server.c: Include cpparray.h.
1845         (verify_swdb_parm_s): New.
1846         (verify_swdb_status_cb): New.
1847         (cmd_versioncheck): Use gpgv to correclty verify the signature.
1848         Rename some variable to comply with GNU standards.
1849
1850         gpg: Verify multiple detached signatures with different hash algos.
1851         * g10/mainproc.c (proc_tree): Loose check.  Enable all algos.
1852
1853         common: Add GNUPG_MODULE_NAME_GPGV.
1854         * common/util.h (GNUPG_MODULE_NAME_GPGV): New.
1855         * common/homedir.c (gnupg_module_name): Implement.
1856
1857 2016-10-27  Justus Winter  <justus@g10code.com>
1858
1859         g10: Fix iteration over getkey results.
1860         * g10/getkey.c (getkey_next): Return the public key in PK even if
1861         RET_KEYBLOCK is NULL.
1862
1863         g10: Assert preconditions.
1864         * g10/getkey.c (get_pubkey_byname): Assert preconditions.
1865
1866 2016-10-27  Werner Koch  <wk@gnupg.org>
1867
1868         dirmngr: Do not implement --supervised in Windows.
1869         * dirmngr/dirmngr.c (opts) [W32]: Remove --supervised.
1870         (main) [W32]: Ditto.
1871
1872         common: Remove debug output from gnupg_get_socket_name.
1873         * common/sysutils.c (gnupg_get_socket_name): Remove debug message and
1874         use my_error_from_syserror.
1875
1876 2016-10-27  NIIBE Yutaka  <gniibe@fsij.org>
1877
1878         dirmngr: ADNS error handling fix.
1879         * dirmngr/dns-stuff.c (resolve_name_adns, get_dns_cert, get_dns_cname):
1880         Use gpg_error and gpg_err_code_from_errno to compose the error value.
1881
1882 2016-10-27  Werner Koch  <wk@gnupg.org>
1883
1884         gpg: Convey --quick option to dirmngr for --auto-key-retrieve.
1885         * g10/call-dirmngr.c (gpg_dirmngr_ks_get): Add arg 'quick'.
1886         (gpg_dirmngr_wkd_get): Ditto.
1887         * g10/keyserver.c (keyserver_get): Add arg 'quick'.
1888         (keyserver_get_chunk): Add arg 'quick'.
1889         (keyserver_import_fprint): Ditto.  Change callers to pass 0 for it.
1890         (keyserver_import_keyid): Ditto.
1891         (keyserver_import_wkd): Ditto.
1892         * g10/mainproc.c (check_sig_and_print): Call the 3 fucntions with
1893         QUICK set.
1894
1895 2016-10-27  NIIBE Yutaka  <gniibe@fsij.org>
1896
1897         common: Fix gnupg_inotify_has_name, differently.
1898         * common/sysutils.c (gnupg_inotify_has_name): Use void * to stop the
1899         warning.
1900
1901         dirmngr: More ADNS error fix.
1902         * dirmngr/dns-stuff.c (get_dns_cert, getsrv, get_dns_cname): Fix return
1903         value.
1904
1905         dirmngr: Fix error return for ADNS.
1906         * dirmngr/dns-stuff.c (resolve_name_adns): Use RET for return value.
1907
1908         g10: Fix ECDH, clarifying the format.
1909         * g10/ecdh.c (pk_ecdh_encrypt_with_shared_point): Returns error when
1910         it's short.  Clarify the format.  Handle other prefixes correctly.
1911
1912         scd: Add 0x41 prefix for x-coordinate only result.
1913         * scd/app-openpgp.c (do_decipher): When it's x-coordinate only, add the
1914         prefix 0x41.
1915
1916 2016-10-27  Arnaud Fontaine  <arnaud.fontaine@ssi.gouv.fr>
1917
1918         g10: ECDH shared point format.
1919         * g10/ecdh.c (pk_ecdh_encrypt_with_shared_point): Improve handling of
1920         ECDH shared point format.
1921
1922 2016-10-27  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
1923
1924         dirmngr: Implement --supervised command (for systemd, etc).
1925         * dirmngr/dirmngr.c (main): Add new --supervised command, which is a
1926         mode designed for running under a process supervision system like
1927         systemd or runit.
1928         * doc/dirmngr.texi: document --supervised option.
1929
1930         agent,common: move get_socket_name() into common.
1931         * agent/gpg-agent.c (get_socket_name): move to ...
1932         * common/sysutils.c (gnupg_get_socket_name): ... here.
1933
1934         dirmngr: report actual socket name.
1935         * dirmngr/dirmngr.[ch] (dirmngr_get_current_socket_name): new function
1936         to report known socket name.
1937         * dirmngr/server.c (cmd_getinfo): use dirmngr_get_current_socket_name
1938         to report correct socket name.
1939
1940 2016-10-27  NIIBE Yutaka  <gniibe@fsij.org>
1941
1942         common: Fix gnupg_inotify_has_name.
1943         * common/sysutils.c (gnupg_inotify_has_name): Take care of the
1944         alignment.
1945
1946         dirmngr: Fix help string and argument.
1947         * dirmngr/server.c (hlp_versioncheck): Add a newline.
1948         (cmd_versioncheck): Fix argument.
1949
1950 2016-10-26  Werner Koch  <wk@gnupg.org>
1951
1952         dirmngr: Fix hang due to deferred thread initialization.
1953         * dirmngr/dirmngr.c (main): Call ldap_wrapper_launch_thread after
1954         thread_init.
1955
1956         agent: Avoid double error message.
1957         * agent/gpg-agent.c (map_supervised_sockets): Shorten error message.
1958         Remove unneeded diagnostic.
1959
1960         common: Use GPG_ERR_INV_VALUE instead of GPG_ERR_EINVAL.
1961         * common/sysutils.c (gnupg_inotify_watch_socket): Return
1962         GPG_ERR_INV_VALUE for a missing socket name and set proper error
1963         source.
1964
1965         tests: Improve portability of fake-pinentry.
1966         * tests/openpgp/fake-pinentry.c: Make all functions static.
1967         (get_passphrase): s/unlink/remove/ because that is standard C.
1968         (spacep): Rename to whitespace and change all callers.
1969         (main): Move macro out of if-then chain.
1970
1971 2016-10-26  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
1972
1973         agent: --supervised mode improvements.
1974         * agent/gpg-agent.c (map_supervised_socket): if the agent is running
1975           in --supervised mode and is not actually given LISTEN_FDNAMES
1976           directives, require at least fd 3 to be open for listening.
1977
1978         common: avoid segfault.
1979         * common/sysutils.c (gnupg_inotify_watch_socket): return EINVAL if
1980           socket_name is NULL, rather than segfaulting
1981
1982 2016-10-25  Justus Winter  <justus@g10code.com>
1983
1984         agent,tests,w32: Fix relaying pinentry user data, fix fake-pinentry.
1985         * agent/call-pinentry.c (start_pinentry): Also send the user data
1986         using an Assuan 'OPTION' command.
1987         * tests/openpgp/fake-pinentry.c (get_passphrase): Fix updating
1988         passphrase file.
1989         (spacep): Include newline characters.
1990         (rstrip): New function.
1991         (main): Handle Windows line endings.  Handle the userdata option, and
1992         restart with the new options.
1993
1994         tests: Do not autostart gpg-agents on teardown.
1995         * tests/openpgp/defs.c (stop-agent): Use '--no-autostart' when calling
1996         gpg-connect-agent.
1997
1998 2016-10-25  Werner Koch  <wk@gnupg.org>
1999
2000         dirmngr: Allow command VERSIONCHECK to handle 3 part version numbers.
2001         * dirmngr/server.c (parse_version_string): Add arg MICRO and set it.
2002         (cmp_version): Extend to handle the MICRO part.
2003         (confucius_mktmpdir): Rename to my_mktmpdir.
2004         (my_mktmpdir): xstrconcat does not fail; use strconcat.
2005         (fetch_into_tmpdir): Improve error checking.
2006
2007         common: Use strconcat in gnupg_setenv.
2008         * common/sysutils.c (gnupg_setenv): Replace malloc+stpcpy by
2009         strconcat.  Indent cpp conditionals.
2010         (gnupg_unsetenv): Indent cpp conditionals.
2011
2012 2016-10-24  Werner Koch  <wk@gnupg.org>
2013
2014         gpg: Replace two sprintf calls.
2015         * g10/keygen.c (print_status_key_created): Use snprintf for now.
2016         (ask_expire_interval): Replace xmalloc and sprintf by xasprintf.
2017
2018         agent: Minor cleanup for recent change in findkey.c.
2019         * agent/findkey.c (agent_write_private_key): Avoid label name error.
2020
2021         agent: Slightly change structure of cmd_readkey.
2022         * agent/command.c (cmd_readkey): Avoid a leave label in the middle of
2023         the code.  Remove the special return.
2024
2025 2016-10-24  Kai Michaelis  <kai@gnupg.org>
2026
2027         dirmngr: Fix segfault in VERSIONCHECK.
2028         * dirmngr/server.c (cmd_versioncheck): The VERSIONCHECK command crashes
2029         when called without program version.
2030
2031 2016-10-24  NIIBE Yutaka  <gniibe@fsij.org>
2032
2033         scd: Use canonical curve name of libgcrypt.
2034         * scd/app-openpgp.c (send_key_attr): Use curve instead of OID.
2035         (ecdh_params): New.
2036         (ecc_read_pubkey): Use ecdh_params.  Use curve name.
2037         (ecc_writekey): Likewise.
2038         (ecc_curve): Rename from ecc_oid.
2039         (parse_algorithm_attribute): Use ecc_curve.
2040         * g10/call-agent.c (learn_status_cb): Use openpgp_is_curve_supported to
2041         intern the curve name string.
2042         * g10/card-util.c (card_status): Conver curve name to alias for print.
2043
2044         common: Fix openpgp_is_curve_supported.
2045         * common/openpgp-oid.c (openpgp_is_curve_supported): Support both of
2046         canonical name of the curve and alias.
2047
2048         g10: Fix card keygen for decryption.
2049         * g10/keygen.c (do_generate_keypair): Fix arguments.
2050
2051 2016-10-22  NIIBE Yutaka  <gniibe@fsij.org>
2052
2053         g10: More card key generation change.
2054         * g10/keygen.c (gen_card_key): Add back ALGO as the second argument.
2055         Don't get ALGO by KEY-ATTR by this function.  It's caller to provide
2056         ALGO.  Don't do that by both of caller and callee.
2057         (generate_keypair): Only put paramerters needed.  Use parameters
2058         for ALGO to call gen_card_key.
2059         (generate_card_subkeypair): Get ALGO and call gen_card_key with it.
2060
2061 2016-10-21  Andre Heinecke  <aheinecke@intevation.de>
2062
2063         g10: Write first keybox record in binary mode.
2064         * g10/keydb.c (maybe_create_keyring_or_box): Open in binary mode.
2065
2066 2016-10-21  NIIBE Yutaka  <gniibe@fsij.org>
2067
2068         g10,scd: Fix ECC keygen.
2069         * g10/keygen.c (generate_keypair): For card key generation, fill
2070         parameters by KEY-ATTR.
2071
2072         * scd/app-openpgp.c (ecc_read_pubkey): OID should be freed at last,
2073         after its reference by OIDBUF is finished.
2074         (ecc_writekey): Likewise.
2075
2076         scd: Fix segfault changing key attr.
2077         * asc/app-openpgp.c (change_keyattr_from_string): Release after
2078         allocated.
2079
2080 2016-10-21  NIIBE Yutaka  <gniibe@fsij.org>
2081             Arnaud Fontaine  <arnaud.fontaine@ssi.gouv.fr>
2082
2083         g10: Don't ask keysize for for non-RSA card.
2084         * g10/card-util.c (card_status): Bug fix for keyno.
2085         (ask_card_rsa_keysize, do_change_rsa_keysize): Rename.
2086         (generate_card_keys): Only ask keysize when RSA.
2087         (card_generate_subkey): Likewise.
2088
2089         g10: Support ECC for gen_card_key.
2090         * g10/keygen.c (gen_card_key): Remove the first argument of ALGO.
2091         (do_generate_keypair, generate_card_subkeypair): Follow the change.
2092
2093 2016-10-21  NIIBE Yutaka  <gniibe@fsij.org>
2094
2095         Fix use cases of snprintf.
2096         * agent/call-pinentry.c, agent/call-scd.c, agent/command.c,
2097         build-aux/speedo/w32/g4wihelp.c, common/get-passphrase.c,
2098         dirmngr/dirmngr.c, g10/call-agent.c, g10/cpr.c, g10/keygen.c,
2099         g10/openfile.c, g10/passphrase.c, scd/app-openpgp.c, scd/scdaemon.c,
2100         sm/call-agent.c, sm/call-dirmngr.c, sm/certreqgen.c: Fix assuming C99.
2101
2102         agent: Fix saving with FORCE=1.
2103         * agent/findkey.c (agent_write_private_key): Recover from an error of
2104         GPG_ERR_ENOENT when FORCE=1 and it is opened with "rb+".
2105
2106 2016-10-20  Justus Winter  <justus@g10code.com>
2107
2108         tests: Simplify test.
2109         * tests/openpgp/quick-key-manipulation.scm: Avoid creating a temporary
2110         home directory, just make the uids unique.
2111
2112         tests: Flush stdout in the fake pinentry.
2113         * tests/openpgp/fake-pinentry.c (reply): Flush stdout.
2114
2115         common,w32: Fix setting environment variables on Windows.
2116         * common/sysutils.c (gnupg_setenv): Also update the environment block
2117         maintained by the C runtime.
2118         (gnupg_unsetenv): Likewise.
2119         * tests/gpgscm/ffi.c (do_setenv): Fix error handling.
2120
2121         tests,w32: Cope with Windows line endings.
2122         * tests/openpgp/issue2015.scm: Rstrip line before comparison.
2123
2124         tests: Create and remove socket directories.
2125         * tests/openpgp/defs.scm (start-agent): Move function here and create
2126         the socket directory prior to starting the agent.
2127         (stop-agent): Move function here and remove the socket directory.
2128         * tests/openpgp/finish.scm: Adapt.
2129         * tests/openpgp/setup.scm: Likewise.
2130
2131 2016-10-20  NIIBE Yutaka  <gniibe@fsij.org>
2132
2133         agent, g10: Fix keygen.
2134         * agent/command.c (cmd_readkey): Get length after card_readkey.
2135         * g10/keygen.c (gen_card_key): Fix off-by-one error.
2136
2137         scd: GENKEY updates the public key in APP.
2138         * scd/app-openpgp.c (rsa_read_pubkey, ecc_read_pubkey): New.
2139         (read_public_key): New.
2140         (get_public_key, do_genkey): Use read_public_key.
2141
2142         g10: smartcard keygen change.
2143         * g10/call-agent.c (scd_genkey_cb_append_savedbytes): Remove.
2144         (scd_genkey_cb): Only handle KEY-CREATED-AT and PROGRESS.
2145         (agent_scd_genkey): Remove INFO argument.  CREATETIME is now in/out
2146         argument.
2147         (agent_readkey): Use READKEY --card instead of SCD READKEY.
2148         * g10/keygen.c (gen_card_key): Use READKEY --card command of the agent
2149         to retrieve public key information from card and let the agent make
2150         a file for private key with shadow info.
2151
2152         agent: Add --card option for READKEY.
2153         * agent/findkey.c (agent_write_shadow_key): New.
2154         * agent/command-ssh.c (card_key_available): Use agent_write_shadow_key.
2155         * agent/learncard.c (agent_handle_learn): Likewise.
2156         * agent/command.c (cmd_readkey): Add --card option.
2157
2158 2016-10-19  Kai Michaelis  <kai@gnupg.org>
2159
2160         dirmngr: improve VERSIONCHECK.
2161         Replace strtok_r() and code formatting. Use code from libgpg-error for
2162         version comparison.
2163
2164 2016-10-18  Justus Winter  <justus@g10code.com>
2165
2166         common: Fix copying data to estreams.
2167         * common/exectool.c (copy_buffer_do_copy): Correctly account for
2168         partially written data in the event of errors.
2169
2170         common,w32: Communicate with child in non-blocking mode.
2171         * common/exechelp-w32.c (gnupg_spawn_process): Open streams in
2172         non-blocking mode if requested.
2173
2174         common,w32: Extend gnupg_create_inbound_pipe et al.
2175         * common/exechelp-w32.c (do_create_pipe): Rename, add arguments, and
2176         create a stream if reqested.
2177         (gnupg_create_inbound_pipe): Use the extended function to open the
2178         stream if requested.
2179         (gnupg_create_outbound_pipe): Likewise.
2180         (gnupg_create_pipe): Update call site.
2181
2182         common,w32: Make use of default_errsource in exechelp.
2183         * common/exechelp-posix.c (my_error_from_syserror, my_error): New.
2184         Use them instead of gpg_error and gpg_error_from_syserror.
2185
2186 2016-10-18  NIIBE Yutaka  <gniibe@fsij.org>
2187             Arnaud Fontaine  <arnaud.fontaine@ssi.gouv.fr>
2188
2189         scd: Support ECC key generation.
2190         * scd/app-openpgp.c (get_public_key): Fix a message.
2191         (change_keyattr_from_string, ecc_writekey): Call mpi_release sooner.
2192         (do_genkey): Add ECC support.
2193
2194 2016-10-18  NIIBE Yutaka  <gniibe@fsij.org>
2195
2196         scd: minor cleanup to merge other works.
2197         * scd/iso7816.c (do_generate_keypair): Use const char * for DATA.
2198         (iso7816_generate_keypair, iso7816_read_public_key): Likewise.
2199         * scd/app-openpgp.c (get_public_key): Follow the change.
2200         (do_genkey): Ditto.  Use ERR instead of RC.  Use u32 for CREATED_AT.
2201
2202 2016-10-17  Justus Winter  <justus@g10code.com>
2203
2204         gpgscm: Initialize nesting stack.
2205         * tests/gpgscm/scheme.c (scheme_init_custom_alloc): Initialize nesting
2206         stack.
2207
2208 2016-10-17  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
2209
2210         doc: Document how to manually shut down gpg-agent.
2211         * doc/gpg-agent.texi: document "gpgconf --kill gpg-agent" for manual
2212           agent termination.
2213
2214         This was requested in a side-comment in https://bugs.debian.org/840669
2215
2216         doc: Point gpg-agent(1) at the right gpg manpage in SEE ALSO.
2217         * doc/gpg-agent.texi (SEE ALSO): refer to @gpgname, instead of
2218           hard-coding "gpg2".
2219
2220 2016-10-17  NIIBE Yutaka  <gniibe@fsij.org>
2221
2222         scd: Fix keytocard for ECC.
2223         * scd/app-openpgp.c (build_ecc_privkey_template): Size can be greater
2224         than 128 when it comes with public key for curve of larger field.
2225
2226         gpgconf: Fix for --homedir.
2227         * tools/gpgconf-comp.c (gpg_agent_runtime_change,
2228         scdaemon_runtime_change, dirmngr_runtime_change): Provide the homedir
2229         arguments by --homedir when it's not default.
2230
2231 2016-10-16  Werner Koch  <wk@gnupg.org>
2232
2233         agent: Use straightforward names for the default socket names.
2234         * configure.ac (GPG_AGENT_SOCK_NAME): Change name to *.extra.
2235         (GPG_AGENT_EXTRA_SOCK_NAME): Change name to *browser.
2236
2237 2016-10-15  Werner Koch  <wk@gnupg.org>
2238
2239         agent: Move inotify code to common and improve it.
2240         * common/sysutils.c: Include sys/inotify.h.
2241         (my_error_from_syserror, my_error): New.
2242         (gnupg_inotify_watch_socket): New.
2243         (gnupg_inotify_has_name): New.
2244         * agent/gpg-agent.c: Do not include sys/inotify.h.
2245         (my_inotify_is_name): Remove.
2246         (handle_connections): Remove HAVE_INOTIFY_INIT protected code and use
2247         the new functions.
2248
2249 2016-10-14  Kai Michaelis  <kai@gnupg.org>
2250
2251         dirmngr: use gnupg_mkdtemp instead of mkstemp.
2252         MinGW on debian does not support mkstemp.
2253
2254         dirmngr: add VERSIONCHECK command.
2255         Given an application name and version VERSIONCHECK fetches the software
2256         version list from version.gnupg.org, verifies the signature and returns
2257         whenever the given version is older (UPDATE), current (CURRENT) or newer
2258         (ROLLBACK).
2259
2260 2016-10-13  Neal H. Walfield  <neal@g10code.com>
2261
2262         tests: Use shorter filenames.
2263         * tests/openpgp/tofu/cross-sigs/
2264           1938C3A0E4674B6C217AC0B987DB2814EC38277E-1.gpg: Rename from this...
2265         * tests/openpgp/tofu/cross-sigs/EC38277E-1.gpg: .. to this.
2266         * tests/openpgp/tofu/cross-sigs/
2267           1938C3A0E4674B6C217AC0B987DB2814EC38277E-1.txt: Rename from this...
2268         * tests/openpgp/tofu/cross-sigs/EC38277E-1.txt: .. to this.
2269         * tests/openpgp/tofu/cross-sigs/
2270           1938C3A0E4674B6C217AC0B987DB2814EC38277E-2.gpg: Rename from this...
2271         * tests/openpgp/tofu/cross-sigs/EC38277E-2.gpg: .. to this.
2272         * tests/openpgp/tofu/cross-sigs/
2273           1938C3A0E4674B6C217AC0B987DB2814EC38277E-2.txt: Rename from this...
2274         * tests/openpgp/tofu/cross-sigs/EC38277E-2.txt: .. to this.
2275         * tests/openpgp/tofu/cross-sigs/
2276           1938C3A0E4674B6C217AC0B987DB2814EC38277E-3.txt: Rename from this...
2277         * tests/openpgp/tofu/cross-sigs/EC38277E-3.txt: .. to this.
2278         * tests/openpgp/tofu/cross-sigs/
2279           1938C3A0E4674B6C217AC0B987DB2814EC38277E-secret.gpg: Rename from
2280           this...
2281         * tests/openpgp/tofu/cross-sigs/EC38277E-secret.gpg: .. to this.
2282         * tests/openpgp/tofu/cross-sigs/
2283           DC463A16E42F03240D76E8BA8B48C6BD871C2247-1.gpg: Rename from this...
2284         * tests/openpgp/tofu/cross-sigs/871C2247-1.gpg: .. to this.
2285         * tests/openpgp/tofu/cross-sigs/
2286           DC463A16E42F03240D76E8BA8B48C6BD871C2247-1.txt: Rename from this...
2287         * tests/openpgp/tofu/cross-sigs/871C2247-1.txt: .. to this.
2288         * tests/openpgp/tofu/cross-sigs/
2289           DC463A16E42F03240D76E8BA8B48C6BD871C2247-2.gpg: Rename from this...
2290         * tests/openpgp/tofu/cross-sigs/871C2247-2.gpg: .. to this.
2291         * tests/openpgp/tofu/cross-sigs/
2292           DC463A16E42F03240D76E8BA8B48C6BD871C2247-2.txt: Rename from this...
2293         * tests/openpgp/tofu/cross-sigs/871C2247-2.txt: .. to this.
2294         * tests/openpgp/tofu/cross-sigs/
2295           DC463A16E42F03240D76E8BA8B48C6BD871C2247-3.gpg: Rename from this...
2296         * tests/openpgp/tofu/cross-sigs/871C2247-3.gpg: .. to this.
2297         * tests/openpgp/tofu/cross-sigs/
2298           DC463A16E42F03240D76E8BA8B48C6BD871C2247-3.txt: Rename from this...
2299         * tests/openpgp/tofu/cross-sigs/871C2247-3.txt: .. to this.
2300         * tests/openpgp/tofu/cross-sigs/
2301           DC463A16E42F03240D76E8BA8B48C6BD871C2247-4.gpg: Rename from this...
2302         * tests/openpgp/tofu/cross-sigs/871C2247-4.gpg: .. to this.
2303         * tests/openpgp/tofu/cross-sigs/
2304           DC463A16E42F03240D76E8BA8B48C6BD871C2247-secret.gpg: Rename from
2305           this...
2306         * tests/openpgp/tofu/cross-sigs/871C2247-secret.gpg: .. to this.
2307         * tests/openpgp/Makefile.am (TEST_FILES): Update accordingly.
2308
2309         g10: Be more careful when checking if a binding is signed by a UTK.
2310         * g10/tofu.c (signed_by_utk): When checking if a key is signed by an
2311         ultimately trusted key, only consider the signatures on the specified
2312         user id.
2313         * tests/openpgp/tofu.scm: Add test for the above.
2314
2315         tests: Add test data to TEST_FILES.
2316         * tests/openpgp/Makefile.am (TEST_FILES): Add new test data.
2317
2318         g10: Be more careful when checking cross signatures.
2319         * g10/tofu.c (cross_sigs): When checking cross signatures, only
2320         consider the signatures on the specified user id.
2321         * tests/openpgp/tofu.scm: Add test for the above.
2322         * tests/openpgp/tofu/cross-sigs/
2323           1938C3A0E4674B6C217AC0B987DB2814EC38277E-1.gpg:
2324           New file.
2325         * tests/openpgp/tofu/cross-sigs/
2326           1938C3A0E4674B6C217AC0B987DB2814EC38277E-1.txt: New file.
2327         * tests/openpgp/tofu/cross-sigs/
2328           1938C3A0E4674B6C217AC0B987DB2814EC38277E-2.gpg: New file.
2329         * tests/openpgp/tofu/cross-sigs/
2330           1938C3A0E4674B6C217AC0B987DB2814EC38277E-2.txt: New file.
2331         * tests/openpgp/tofu/cross-sigs/
2332           1938C3A0E4674B6C217AC0B987DB2814EC38277E-3.txt: New file.
2333         * tests/openpgp/tofu/cross-sigs/
2334           1938C3A0E4674B6C217AC0B987DB2814EC38277E-secret.gpg: New file.
2335         * tests/openpgp/tofu/cross-sigs/
2336           DC463A16E42F03240D76E8BA8B48C6BD871C2247-1.gpg: New file.
2337         * tests/openpgp/tofu/cross-sigs/
2338           DC463A16E42F03240D76E8BA8B48C6BD871C2247-1.txt: New file.
2339         * tests/openpgp/tofu/cross-sigs/
2340           DC463A16E42F03240D76E8BA8B48C6BD871C2247-2.gpg: New file.
2341         * tests/openpgp/tofu/cross-sigs/
2342           DC463A16E42F03240D76E8BA8B48C6BD871C2247-2.txt: New file.
2343         * tests/openpgp/tofu/cross-sigs/
2344           DC463A16E42F03240D76E8BA8B48C6BD871C2247-3.gpg: New file.
2345         * tests/openpgp/tofu/cross-sigs/
2346           DC463A16E42F03240D76E8BA8B48C6BD871C2247-3.txt: New file.
2347         * tests/openpgp/tofu/cross-sigs/
2348           DC463A16E42F03240D76E8BA8B48C6BD871C2247-4.gpg: New file.
2349         * tests/openpgp/tofu/cross-sigs/
2350           DC463A16E42F03240D76E8BA8B48C6BD871C2247-secret.gpg: New file.
2351         * tests/openpgp/tofu/cross-sigs/README: New file.
2352
2353         g10: Still check if the key is an UTK or cross signed in batch mode.
2354         * g10/tofu.c (get_trust): If POLICY is ask, but we can't ask, don't
2355         bail immediately.  Instead, check if the key in question is an
2356         ultimately trusted key or cross signed.
2357
2358         g10: If an sqlite operation fails, map the error code to GPG_ERR_GENERAL
2359         * g10/tofu.c (get_policy): If an sqlite operation fails, map the error
2360           code to GPG_ERR_GENERAL.
2361         (ask_about_binding): Likewise.
2362         (build_conflict_set): Likewise.
2363         (get_trust): Likewise.
2364         (show_statistics): Likewise.
2365         (tofu_register_signature): Likewise.
2366         (tofu_register_encryption): Likewise.
2367
2368         tests: Remove support for deprecated functionality.
2369         * tests/openpgp/tofu.scm: Don't remove tofu.d.  It's deprecated.
2370
2371 2016-10-12  Neal H. Walfield  <neal@g10code.com>
2372
2373         g10: When changing a TOFU binding's policy, update the conflict info.
2374         * g10/tofu.c (record_binding): Take an additional argument, CONFLICT.
2375         Set the binding's conflict accordingly.  Update callers.
2376
2377         g10: Make a singular string singular.
2378         * g10/tofu.c (ask_about_binding): Make the singular string singular.
2379
2380         g10: Correctly determine whether a binding has a conflict.
2381         * g10/tofu.c (build_conflict_set): A binding has a conflict is
2382         conflict is *not* NULL, not if it is NULL.
2383
2384         g10: Fix a column's type in TOFU DB.
2385         * g10/tofu.c (initdb): Change policy from a boolean to an integer.
2386
2387 2016-10-07  Justus Winter  <justus@g10code.com>
2388
2389         tests: Rework test environment setup.
2390         * tests/openpgp/setup.scm: Import one keyring at a time.  This works
2391         around a yet to be investigated hang on Windows.  It is also much
2392         prettier.
2393
2394         tests: Improve handling of Windows newlines.
2395         * tests/gpgscm/lib.scm (string-split-newlines): New function.
2396         * tests/openpgp/default-key.scm: Use new function.
2397         * tests/openpgp/defs.scm: Likewise.
2398         * tests/openpgp/export.scm: Likewise.
2399         * tests/openpgp/import.scm: Likewise.
2400
2401         gpgscm: Improve test of low-level functions.
2402         * tests/gpgscm/t-child.c: Print large amounts of data.
2403         * tests/gpgscm/t-child.scm: Test that this works.
2404
2405         gpgscm: Improve path handling.
2406         * tests/gpgscm/ffi.c (ffi_init): New Scheme variable '*win32*'.
2407         * tests/gpgscm/tests.scm (canonical-path): Correctly handle paths with
2408         drive letter on Windows.  Use 'path-join'.
2409         (path-expand): Use 'path-join'.
2410
2411         tools: Fix error handling.
2412         * tools/gpgtar-create.c (gpgtar_create): Do not crash if opening the
2413         tarball failed.
2414
2415 2016-10-07  NIIBE Yutaka  <gniibe@fsij.org>
2416
2417         agent: Fix get_socket_name.
2418         * agent/gpg-agent.c (get_socket_name): Fix the size of copying.
2419
2420 2016-10-07  Werner Koch  <wk@gnupg.org>
2421
2422         gpg: Put extra parens around bit tests.
2423         * g10/options.h (DBG_MPI): New.
2424         * g10/gpg.c (set_debug): Use macro or extra parens for binary operator.
2425         * g10/parse-packet.c (set_packet_list_mode): Use dbg macro.
2426
2427 2016-10-07  NIIBE Yutaka  <gniibe@fsij.org>
2428
2429         agent, dirmngr, scd: Fix init_common_subsystems.
2430         * common/init.c (_init_common_subsystems): Don't call
2431         gpgrt_set_syscall_clamp in this function.
2432         * agent/gpg-agent.c, dirmngr/dirmngr.c, scd/scdaemon.c: Call
2433         gpgrt_set_syscall_clamp after npth_init.
2434
2435 2016-10-06  Justus Winter  <justus@g10code.com>
2436
2437         common: Avoid pointer arithmetic on string literals.
2438         * common/gettime.c (rfctimestamp): Use indexing instead.
2439         * common/signal.c (got_fatal_signal): Likewise.
2440
2441         g10: Fix singular term.
2442         * g10/tofu.c (ask_about_binding): Fix singular message.
2443
2444         g10: Use appropriate variant of 'abs'.
2445         * g10/tofu.c (ask_about_binding): Use 'labs' instead of 'abs'.
2446
2447         sm: Remove statement without effect.
2448         * sm/call-dirmngr.c (gpgsm_dirmngr_isvalid): Remove statement without
2449         effect.
2450
2451         g10: Fix testing for debug flag.
2452         * g10/parse-packet.c (set_packet_list_mode): Fix testing for debug
2453         flag.
2454
2455         tools: Improve error handling.
2456         * tools/gpg-wks-server.c (copy_key_as_binary): Initialize 'argv'.
2457
2458         gpgscm: Update callsite of 'gnupg_spawn_process'.
2459         * tests/gpgscm/ffi.c (do_spawn_process): Adapt to the changes to
2460         'gnupg_spawn_process'.
2461
2462 2016-10-05  Werner Koch  <wk@gnupg.org>
2463
2464         wks: Send key encrypted as required by draft -02.
2465         * tools/gpg-wks-client.c (get_key): Encrypt.
2466         (encrypt_response): Take care of --fake-submission-addr.
2467
2468         wks: Add option --fake-submission-addr to gpg-wks-client.
2469         * tools/gpg-wks-client.c (oFakeSubmissionAddr): New.
2470         (opts): Add option --fake-submission-addr.
2471         (fake_submission_addr): New variable.
2472         (parse_arguments): Set it.
2473         (command_send): Use --fake-submission-addr.
2474
2475         agent: Another minor fix to map_supervised_sockets.
2476         * agent/gpg-agent.c (map_supervised_sockets): Remove debug message.
2477         Provide correct fd in the second error case.
2478
2479         agent: Fix npth + supervised mode problem.
2480         * agent/gpg-agent.c (main): Initialize modules in supervised mode.
2481
2482 2016-10-05  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
2483
2484         agent: Fix error handling in map_supervised_sockets.
2485         * agent/gpg-agent.c (map_supervised_sockets): the file descriptor to
2486           close on error is fd, not i.
2487
2488 2016-10-04  Werner Koch  <wk@gnupg.org>
2489
2490         agent: Streamline the supervised mode code.
2491         * agent/gpg-agent.c (get_socket_path): Rename to ...
2492         (get_socket_name): this.  This is to comply with the GNU coding guide.
2493         Use xtrymalloc instead of malloc.  Do not build for W32.
2494         (map_supervised_sockets): Use strtokenize and set the the socket names
2495         here.
2496         (main): Adjust for above change.  Do not close the socket.
2497
2498         agent: Adjust cleanup for supervised mode.  Fix for W32.
2499         * agent/gpg-agent.c (opts) [W32]: Remove option --supervised.
2500         (is_supervised): Move from main() to global.
2501         (inhibit_socket_removal): New.
2502         (cleanup): Take care of supervise mode and INHIBIT_SOCKET_REMOVAL.
2503         (check_own_socket_thread): Set INHIBIT_SOCKET_REMOVAL instead of
2504         seting the socket names to empty.
2505
2506         agent: Adjust supervised mode for the new default socket names.
2507         * agent/gpg-agent.c (main): In supervised mode do not provide default
2508         socket names.  Unset DISPLAY and INSIDE_EMACS.  Use log_error and
2509         agent_exit.
2510
2511 2016-10-04  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
2512
2513         agent: Implement --supervised command (for systemd, etc).
2514         * agent/gpg-agent.c (get_socket_path): New function for POSIX systems
2515         to return the path for a provided unix-domain socket.
2516         (map_supervised_sockets): New function to inspect $LISTEN_FDS and
2517         $LISTEN_FDNAMES and map them to the specific functionality offered by
2518         the agent.
2519         (main): Add --supervised command.  When used, listen on already-open
2520         file descriptors instead of opening our own.
2521         * doc/gpg-agent.texi: Document --supervised option.
2522
2523 2016-10-04  Justus Winter  <justus@g10code.com>
2524
2525         build,w32: Unconditionally build tests.
2526         * configure.ac (run_tests, RUN_TESTS, RUN_GPG_TESTS): Remove
2527         variables.  They are misleadingly named, as they inhibit building the
2528         tests.  There is no reason not to build the tests even when
2529         cross-compiling, as they are only run if one does 'make check'.
2530         * Makefile: Adapt accordingly.
2531         * tests/Makefile.am: Adapt accordingly.  Avoid building 'asschk' on
2532         Windows as it uses non-portable functions.
2533
2534         tests,w32: Do not expose 'glob' to gpgscm.
2535         * tests/gpgscm/ffi.c (do_glob): Remove function.
2536         (ffi_init): Likewise.
2537
2538         tests,w32: Avoid using 'glob'.
2539         * tests/openpgp/setup.scm: Avoid 'glob' which is not available on
2540         mingw.
2541
2542         tools: Ignore existing directories in gpgtar.
2543         * tools/gpgtar-extract.c (extract_directory): Ignore existing
2544         directories now that we have '--directory'.
2545
2546 2016-10-04  NIIBE Yutaka  <gniibe@fsij.org>
2547
2548         agent, dirmngr, scd: npth_init must be after fork.
2549         * agent/gpg-agent.c (thread_init_once, initialize_modules): New.
2550         (main): Make sure no daemonizing-fork call after npth_init, and no npth
2551         calls before npth_init, with care of npth calls by assuan hooks.
2552         * dirmngr/dirmngr.c (thread_init): New.
2553         (main): Make sure npth_init must not be called before daemonizing fork.
2554         * scd/scdaemon.c (main): Likewise.
2555
2556 2016-09-30  Werner Koch  <wk@gnupg.org>
2557
2558         agent: Remove the warning for the GKR hijacking.
2559         * g10/call-agent.c (check_hijacking): Remove.
2560         (start_agent): Remove call.
2561
2562         agent: Create the extra sockets in the standard socket dir.
2563         * agent/gpg-agent.c (main): Take the socketdir in account for the
2564         default sockets.
2565         * tools/gpgconf.c (list_dirs): Add "agent-extra-socket" and
2566         "agent-browser-socket".
2567
2568         agent: Kludge to allow disabling of the extra sockets.
2569         * agent/gpg-agent.c (main): Check for special socket names.
2570
2571         wks: Avoid long trustdb checks.
2572         * tools/wks-receive.c (verify_signature): Use --always-trust.
2573
2574 2016-09-30  Justus Winter  <justus@g10code.com>
2575
2576         build: Fix build against libiconv.
2577         * agent/Makefile.am: Add INCICONV and LIBICONV.
2578         * common/Makefile.am: Likewise.
2579         * tools/Makefile.am: Likewise.
2580
2581         agent: Enable restricted, browser, and ssh socket by default.
2582         * agent/gpg-agent.c (main): Provide defaults for 'extra-socket' and
2583         'browser-socket', enable ssh socket by default, but do not emit the
2584         'SSH_AUTH_SOCK' variable unless it has been explicitly requested.
2585         * configure.ac (GPG_AGENT_{EXTRA,BROWSER}_SOCK_NAME): New definitions.
2586         * doc/gpg-agent.texi: Update documentation.
2587
2588         w32: Fix STARTTLS on LDAP connections.
2589         * dirmngr/ks-engine-ldap.c (my_ldap_connect): Fix build against
2590         <winldap.h>.
2591
2592 2016-09-29  Werner Koch  <wk@gnupg.org>
2593
2594         wks: Partly implement draft-koch-openpgp-webkey-service-02.
2595         * tools/gpg-wks.h (WKS_RECEIVE_DRAFT2): New.
2596         * tools/wks-receive.c: Include rfc822parse.h.
2597         (struct receive_ctx_s): Add fields PARSER, DRAFT_VERSION_2, and
2598         MULTIPART_MIXED_SEEN.
2599         (decrypt_data): Add --no-options.
2600         (verify_signature): Ditto.
2601         (new_part): Check for Wks-Draft-Version header.  Take care of text
2602         parts.
2603         (wks_receive): Set Parser and pass a flag value to RESULT_CB.
2604         * tools/gpg-wks-client.c (read_confirmation_request): New.
2605         (main) <aRead>: Call read_confirmation_request instead of
2606         process_confirmation_request.
2607         (command_receive_cb): Ditto.  Add arg FLAGS..
2608         (decrypt_stream_status_cb, decrypt_stream): New.
2609         (command_send): Set header Wks-Draft-Version.
2610         * tools/gpg-wks-server.c (struct server_ctx_s): Add field
2611         DRAFT_VERSION_2.
2612         (sign_stream_status_cb, sign_stream): New.
2613         (command_receive_cb): Set draft flag.
2614         (send_confirmation_request): Rework to implement protocol draft
2615         version 2.
2616
2617         * tools/gpg-wks.h (DBG_MIME_VALUE, DBG_PARSER_VALUE): New.
2618         (DBG_MIME, DBG_PARSER, DBG_CRYPTO): New.  Use instead of a plain
2619         opt.debug where useful.
2620         * tools/gpg-wks-client.c (debug_flags): Add "mime" and "parser".
2621         * tools/gpg-wks-server.c (debug_flags): Ditto.
2622
2623         tools: Convey signeddata also to the part_data callback in mime-parser.
2624         * tools/mime-parser.c (mime_parser_parse): Factor some code out to ...
2625         (process_part_data): new.
2626         ((mime_parser_parse): Also call process_part_data for signed data.
2627
2628         tools: Allow retrieval of signed data from mime-maker.
2629         * tools/mime-maker.c (find_part): New.
2630         (mime_maker_get_part): New.
2631
2632         tools: Change mime-maker to write out CR,LF.
2633         * tools/mime-maker.c (struct part_s): Add field PARTID.
2634         (struct mime_maker_context_s): Add field PARTID_COUNTER.
2635         (dump_parts): Print part ids.
2636         (mime_maker_add_header): Assign PARTID.
2637         (mime_maker_add_container): Ditto.
2638         (mime_maker_get_partid): New.
2639         (write_ct_with_boundary): Remove.
2640         (add_header): Strip trailing white spaces.
2641         (write_header): Remove trailing spaces trimming.  Add arg BOUNDARY.
2642         Handle emdedded LFs.
2643         (write_gap, write_boundary, write_body): New.
2644         (write_tree): Use new functions.
2645
2646         tools: Simplify the mime-maker container creation.
2647         * tools/mime-maker.c (struct part_s): Remove field MEDIATYPE.
2648         (release_parts): Ditto.
2649         (dump_parts): Print a body line only if tehre is a body.
2650         (mime_maker_add_header): Check for body or container.
2651         (mime_maker_add_container): Remove arg MEDIATYPE.  Change all callers.
2652         (mime_maker_end_container): New.
2653
2654         tools: Give mime parser callbacks access to the rfc822 parser.
2655         * tools/mime-parser.c (mime_parser_context_s): Add field MSG.
2656         (parse_message_cb): Set it.
2657         (mime_parser_rfc822parser): New.
2658         * tools/mime-parser.h: Declare rfc822parse_t for the new prototype.
2659
2660 2016-09-29  Justus Winter  <justus@g10code.com>
2661
2662         dirmngr: Fix STARTTLS on LDAP connections.
2663         * dirmngr/ks-engine-ldap.c (my_ldap_connect): Fix unfortunate typo.
2664
2665 2016-09-28  Werner Koch  <wk@gnupg.org>
2666
2667         gpg: Improve WKD by importing only the requested UID.
2668         * g10/keyserver.c: Include mbox-util.h.
2669         (keyserver_import_wkd): Do not use the global import options but
2670         employ an import filter.
2671
2672         gpg: Reject import if an import filter removed all user ids.
2673         * g10/import.c (any_uid_left): New.
2674         (import_one): Check that a UID is left.
2675
2676         gpg: Make import filter data object more flexible.
2677         * g10/main.h (import_filter_t): New.
2678         * g10/import.c (struct import_filter_s): Declare struct.
2679         (import_keep_uid, import_drop_sig): Replace by ...
2680         (import_filter): new.  Adjust all users.
2681         (cleanup_import_globals): Move code to ...
2682         (release_import_filter): new.
2683         (save_and_clear_import_filter): New.
2684         (restore_import_filter): New.
2685
2686         gpg: Make sure that internal key import is done with a binary stream.
2687         * g10/import.c (import_keys_internal): Open stream in binary mode.
2688
2689 2016-09-27  Justus Winter  <justus@g10code.com>
2690
2691         build: Do not link gpg-connect-agent against npth.
2692         * tools/Makefile.am: Do not link gpg-connect-agent against npth.
2693
2694         build: Fix check for resolver library on macOS.
2695         * configure.ac: Check for the mangled name of 'dn_skipname' first.
2696
2697         common: Correctly handle modules relying on npth.
2698         * common/Makefile.am (common_sources): Drop 'call-gpg.{c,h}'.
2699         (with_npth_sources): New variable.
2700         (libcommonpth_a_SOURCES): Use the new variable.
2701
2702 2016-09-27  NIIBE Yutaka  <gniibe@fsij.org>
2703
2704         agent, sm: Set CTX after start_agent.
2705         * g10/call-agent.c (agent_keytocard): Assign parm.ctx after start_agent.
2706         * sm/call-agent.c (gpgsm_agent_pksign, gpgsm_scd_pksign)
2707         (gpgsm_agent_readkey, gpgsm_agent_scd_serialno)
2708         (gpgsm_agent_scd_keypairinfo, gpgsm_agent_marktrusted)
2709         (gpgsm_agent_passwd, gpgsm_agent_get_confirmation)
2710         (gpgsm_agent_ask_passphrase, gpgsm_agent_keywrap_key)
2711         (gpgsm_agent_export_key): Likewise.
2712
2713         dirmngr: Removal of no-libgcrypt.o.
2714         * dirmngr/Makefile.am (dirmngr_ldap_LDADD): Remove no-libgcrypt.o.
2715
2716         agent: Allow only specific digest size for ECDSA.
2717         * agent/pksign.c (do_encode_dsa): Fix validation of digest size.
2718
2719 2016-09-22  Neal H. Walfield  <neal@g10code.com>
2720
2721         g10: When adding a user id, make sure the keyblock has been prepared.
2722         * g10/keyedit.c (keyedit_quick_adduid): Call merge_keys_and_selfsig on
2723         KEYBLOCK before adding the user id.
2724         * tests/openpgp/quick-key-manipulation.scm: Make sure that the key
2725         capabilities don't change when adding a user id.
2726         (key-data): New function.
2727
2728 2016-09-20  Justus Winter  <justus@g10code.com>
2729
2730         tests: Add documentation, make interactive debugging possible.
2731         * tests/openpgp/README: Add documentation about debugging and
2732         interfacing with GnuPG.
2733         * tests/openpgp/run-tests.scm (test::run-sync): Hand stdin to the
2734         child so that we can use a repl in the tests.
2735
2736         tests: Port the quick key manipulation test to Scheme.
2737         * tests/openpgp/Makefile.am (XTESTS): Add new test.
2738         * tests/openpgp/quick-key-manipulation.scm: New file.
2739
2740         tests: Remove list of tests from the test runner.
2741         * tests/openpgp/run-tests.scm: Drop hardcoded list.
2742
2743         tests: Reduce runtime of excessive test.
2744         * tests/openpgp/conventional-mdc.scm: Use only two plaintexts when
2745         iterating over all cipher algorithms.
2746
2747         dirmngr: Fix type.
2748         * dirmngr/dns-stuff.c (get_dns_cert): Fix type in fallback code.
2749
2750 2016-09-20  Andre Heinecke  <aheinecke@intevation.de>
2751
2752         dirmngr: Open file CRL's in binary mode.
2753         * dirmngr/crlcache.c (crl_cache_load): Open file in binary mode.
2754
2755 2016-09-20  NIIBE Yutaka  <gniibe@fsij.org>
2756
2757         doc: Fix a xref usage.
2758
2759 2016-09-20  Ineiev  <ineiev@gnu.org>
2760
2761         doc: Do not end section names with "."
2762
2763 2016-09-20  NIIBE Yutaka  <gniibe@fsij.org>
2764
2765         doc: minor fix for @xref.
2766         * doc/yat2m.c (proc_texi_cmd): Captalize "see" for xref.
2767
2768 2016-09-20  Justus Winter  <justus@g10code.com>
2769
2770         doc: Implement simple '@ref'erences.
2771         * doc/yat2m.c (proc_texi_cmd): Handle '@ref'.
2772
2773 2016-09-20  Ineiev  <ineiev@gnu.org>
2774
2775         doc: Fix full stops.
2776         * doc/gpg-agent.texi, doc/gpg.texi, doc/gpgsm.texi,
2777         doc/instguide.texi, doc/scdaemon.texi, doc/specify-user-id.texi,
2778         doc/tools.texi: Fix.
2779
2780         doc: Fix spacings.
2781         * doc/debugging.texi, doc/dirmngr.texi, doc/gpg-agent.texi,
2782         doc/gpg.texi, doc/tools.texi: Fix.
2783
2784         doc: Improve markup.
2785         * doc/gpg-agent.texi, doc/gpg.texi, doc/gpgsm.texi,
2786         doc/howto-create-a-server-cert.texi, doc/scdaemon.texi,
2787         doc/specify-user-id.texi, doc/tools.texi: Fix.
2788
2789         doc: Replace rfc0123 with RFC-0123.
2790         * doc/gpg.texi, doc/gpgsm.texi, doc/specify-user-id.texi: Fix.
2791
2792         doc: Add missing description of datafile.
2793         * doc/gpg.texi: Fix.
2794
2795         doc: Replace UTF8 with UTF-8.
2796         * doc/gpg.texi: Fix.
2797
2798         doc: Fix mistakes.
2799         * doc/dirmngr.texi, doc/gpg.texi, doc/gpgsm.texi,
2800         doc/howto-create-a-server-cert.texi,
2801         doc/scdaemon.texi, doc/tools.texi: Fix.
2802
2803         doc: Eliminate inconsistent UK English.
2804         * doc/dirmngr.texi, doc/gpg-agent.texi, doc/scdaemon.texi,
2805         doc/tools.texi: Fix.
2806
2807         doc: Use the right reference commands.
2808         * doc/debugging.texi, doc/gpg-agent.texi, doc/gpg.texi, doc/gpgsm.texi,
2809         doc/tools.texi: Fix.
2810
2811         doc: Fix "Not(e) that you can(not) abbreviate".
2812         * doc/dirmngr.texi, doc/gpg-agent.texi, doc/gpg.texi, doc/gpgsm.texi,
2813         doc/scdaemon.texi, doc/tools.texi: Fix.
2814
2815         doc: Fix typos.
2816         * doc/debugging.texi, doc/dirmngr.texi, doc/glossary.texi
2817         * doc/gpg-agent.texi, doc/gpg.texi, doc/gpgsm.texi
2818         * doc/instguide.texi, doc/opt-homedir.texi, doc/scdaemon.texi
2819         * doc/specify-user-id.texi, doc/tools.texi: Fix.
2820
2821         doc: Fix Martin Hellman's name.
2822         * doc/contrib.texi: Fix.
2823
2824 2016-09-19  Justus Winter  <justus@g10code.com>
2825
2826         tests: Refine the repl function.
2827         * tests/gpgscm/repl.scm (repl): Add an argument 'environment'.
2828         (interactive-repl): Add an optional argument 'environment'.
2829
2830         tests: Implement interpreter shutdown using exceptions.
2831         * tests/gpgscm/ffi.c (ffi_init): Rename 'exit' to '_exit'.
2832         * tests/gpgscm/ffi.scm (*interpreter-exit*): New variable.
2833         (throw): New function.
2834         (exit): New function.
2835
2836         tests: Correctly handle exceptions in resource handling macros.
2837         * tests/gpgscm/tests.scm (letfd): Correctly release resources when an
2838         exception is thrown.
2839         (with-working-directory): Likewise.
2840         (with-temporary-working-directory): Likewise.
2841         (lettmp): Likewise.
2842
2843         tests: Refine exception handling.
2844         * tests/gpgscm/init.scm (catch): Bind all arguments to '*error*' in
2845         the error handler, update and fix comment.
2846         (*error-hook*): Revert to original definition.
2847         * tests/gpgscm/tests.scm (tr:do): Adapt accordingly.
2848         * tests/openpgp/issue2419.scm: Likewise.
2849
2850         tests: Use descriptive temporary file names.
2851         * tests/gpgscm/ffi.c (do_get_isotime): New function.
2852         (ffi_init): Add parameter 'scriptname', bind new function and
2853         scriptname.
2854         * tests/gpgscm/ffi.h (ffi_init): Update prototype.
2855         * tests/gpgscm/main.c (main): Hand in the script name.
2856         * tests/gpgscm/tests.scm (mkdtemp): Use current time and script name
2857         for the names of temporary directories.
2858
2859 2016-09-19  Werner Koch  <wk@gnupg.org>
2860
2861         gpg: Fix regression in fingerprint printing.
2862         * g10/keylist.c (list_keyblock_print): Do not depend calling
2863         print_fingerprint on opt.keyid_format.
2864
2865         dirmngr: Silence diagnostics about starting housekeeping.
2866         * dirmngr/dirmngr.c (housekeeping_thread): Print info only in very
2867         verbose mode.
2868
2869 2016-09-19  Justus Winter  <justus@g10code.com>
2870
2871         g10: Fix memory leak.
2872         * g10/tofu.c (build_conflict_set): Free 'kb_all'.
2873
2874 2016-09-19  Werner Koch  <wk@gnupg.org>
2875
2876         doc: Update license information.
2877         * tests/fake-pinentries/COPYING: Rename to  ...
2878         * COPYING.CC0: this.  Add a note on the scope of this license.
2879         * COPYING.LIB: Add a note on the scope of this license.
2880         * AUTHORS (License): Mention CC) license.
2881
2882         gpgscm: Fix gcrypt version check.
2883         * tests/gpgscm/main.c (main): Check against required and not installed
2884         version.
2885
2886         gpg: Avoid malloc failure due to no key signatures.
2887         * g10/keyedit.c (check_all_keysigs): Check early for no key
2888         signatures.  Use xtrycalloc.
2889
2890 2016-09-17  NIIBE Yutaka  <gniibe@fsij.org>
2891
2892         Fix comment and format.
2893         * agent/protect-tool.c (main): Fix comment.
2894         * doc/DETAILS (colon listings): Fix list.
2895         * tests/openpgp/multisig.test: Fix comment.
2896
2897 2016-09-17  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
2898
2899         Fix more spelling.
2900         * NEWS, acinclude.m4, agent/command-ssh.c, agent/command.c,
2901           agent/gpg-agent.c, agent/keyformat.txt, agent/protect-tool.c,
2902           common/asshelp.c, common/b64enc.c, common/recsel.c, doc/DETAILS,
2903           doc/HACKING, doc/Notes, doc/TRANSLATE, doc/dirmngr.texi,
2904           doc/faq.org, doc/gpg-agent.texi, doc/gpg.texi, doc/gpgsm.texi,
2905           doc/instguide.texi, g10/armor.c, g10/gpg.c, g10/keyedit.c,
2906           g10/mainproc.c, g10/pkclist.c, g10/tofu.c, g13/sh-cmd.c,
2907           g13/sh-dmcrypt.c, kbx/keybox-init.c, m4/pkg.m4, sm/call-dirmngr.c,
2908           sm/gpgsm.c, tests/Makefile.am, tests/gpgscm/Manual.txt,
2909           tests/gpgscm/scheme.c, tests/openpgp/gpgv-forged-keyring.scm,
2910           tests/openpgp/multisig.test, tests/openpgp/verify.scm,
2911           tests/pkits/README, tools/applygnupgdefaults,
2912           tools/gpg-connect-agent.c, tools/mime-maker.c, tools/mime-parser.c:
2913           minor spelling cleanup.
2914
2915         move some file encodings to UTF-8.
2916         * dirmgnr/cdblib.c: comment used unnecesary hyphenation
2917         * dirmngr/crlcache.h: comment was iso-8859-1
2918         * doc/contrib.text: list contributors using UTF-8 (now we can
2919           acknowledge many more people using their preferred orthography)
2920
2921         At least one other files remains in a non-UTF-8 encoding, which i'm
2922         not sure what to do with:
2923
2924          - build-aux/speedo/w32/inst.nsi is ISO-8859-1, but maybe Windows needs
2925            it that way?
2926
2927 2016-09-16  Neal H. Walfield  <neal@g10code.com>
2928
2929         g10: On failure, propagate the return code.
2930         * g10/tofu.c (tofu_register_encryption): If get_trust fails, set RC.
2931
2932         g10: Don't ignore failure.  On failure, rollback.
2933         * g10/tofu.c (tofu_set_policy): If record_binding fails, fail.  If the
2934         function fails, rollback the transaction.
2935
2936         g10: Load the key block if the supplied user id list is NULL.
2937         * g10/tofu.c (tofu_register_encryption): Load the key block if
2938         USER_ID_LIST is NULL.
2939
2940         g10: Use the accessor functions for accessing and comparing key ids.
2941         * g10/tofu.c (get_trust): Use the pk_main_keyid accessor function.
2942         (tofu_register_signature): Likewise.
2943         (tofu_register_encryption): Likewise.
2944         (tofu_set_policy): Likewise and also use pk_keyid and keyid_cmp.
2945
2946 2016-09-16  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
2947
2948         po: convert localizations to UTF-8.
2949         * po/{it,et,pl,ro,gl,es,el,sk,pt,eo,hu}.po: convert to UTF-8
2950
2951         This was an automated conversion process, using:
2952
2953            for x in po/{it,et,pl,ro,gl,es,el,sk,pt,eo,hu}.po; do
2954                cs=$(grep charset= $x | cut -f2 -d= | cut -f1 -d\\)
2955                iconv -f $cs -t UTF-8 < $x >$x.tmp
2956                sed "s/$cs/UTF-8/" < $x.tmp > $x
2957                rm -f $x.tmp
2958            done
2959
2960 2016-09-16  NIIBE Yutaka  <gniibe@fsij.org>
2961
2962         scd: Add support of ECC pubkey attribute.
2963         * scd/app-openpgp.c (ECC_FLAG_PUBKEY): New.
2964         (send_key_attr, get_public_key, ecc_writekey, do_auth, do_decipher)
2965         (parse_algorithm_attribute): Check ECC_FLAG_DJB_TWEAK.
2966         (build_ecc_privkey_template): Add ECC_Q and ECC_Q_LEN.
2967         Support offering public key when ECC_FLAG_PUBKEY sets.
2968         (ecc_writekey): Supply ECC_Q and ECC_Q_LEN.
2969         (parse_algorithm_attribute): Parse pubkey-required byte.
2970
2971 2016-09-15  Justus Winter  <justus@g10code.com>
2972
2973         g10: Add missing header.
2974         * g10/trustdb.c: Include 'mbox-util.h'.
2975
2976 2016-09-15  Neal H. Walfield  <neal@g10code.com>
2977
2978         g10: Only consider bindings matching the signer's user id.
2979         * g10/trustdb.c (tdb_get_validity_core): If the signer's user id
2980         subpacket is present, only consider matching user ids.
2981
2982         g10: Don't include the signature when printing a binding's validity.
2983         * g10/mainproc.c (check_sig_and_print): When printing information
2984         about a binding don't include the current signature.
2985
2986 2016-09-15  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
2987
2988         tests/fake-pinentries: fake pinentries for downstream developers.
2989         * tests/fake-pinentries/README.txt and
2990           tests/fake-pinentries/fake-pinentry.{sh,py,pl,php}}: New public
2991           domain (CC0) files to encourage better test suite practices from
2992           downstream developers.
2993         * tests/fake-pinentries/COPYING (new): a copy of
2994           https://creativecommons.org/publicdomain/zero/1.0/legalcode.txt
2995
2996         spelling: conenction should be connection.
2997         * dirmngr/server.c, sm/server.c: s/conenction/connection/
2998
2999         spelling: correct achived to achieved.
3000
3001 2016-09-15  NIIBE Yutaka  <gniibe@fsij.org>
3002
3003         tests/gpgscm: Fix use of pointer.
3004         * tests/gpgscm/scheme-private.h (struct scheme): Use (void *) for
3005         alloc_seg.
3006         * tests/gpgscm/scheme.c (alloc_cellseg): Use (void *) for cp.  Use
3007         (void *) for coercion of address calculation.
3008
3009 2016-09-14  Neal H. Walfield  <neal@g10code.com>
3010
3011         g10: Fix whitespace.
3012         * g10/tofu.c (show_statistics): Fix whitespace.
3013
3014         g10: Correctly compute the euclidean distance.
3015         * g10/tofu.c (write_stats_status): Correctly compute the euclidean
3016         distance.
3017         (show_statistics): Likewise.
3018
3019         g10: Change the default TOFU policy for UTKs to good.
3020         * g10/tofu.c (get_trust): Change the default TOFU policy for UTKs to
3021         good.
3022
3023         g10: Add missing static qualifier.
3024         * g10/tofu.c (cross_sigs): Add missing static qualifier.
3025
3026         g10: Default to the "good" TOFU policy for keys signed by a UTK.
3027         * g10/tofu.c (signed_by_utk): New function.
3028         (get_trust): If a key is signed by an ultimately trusted key, then
3029         set any bindings to good.
3030
3031 2016-09-14  Werner Koch  <wk@gnupg.org>
3032
3033         gpg: Emit a new error status line in --quick-adduid.
3034         * g10/keyedit.c (menu_adduid): Emit an ERROR status for an existsing
3035         user id.
3036
3037         gpg: Allow use of "default" algo for--quick-addkey.
3038         * g10/keygen.c (quick_generate_keypair): Write a status error.
3039         (parse_algo_usage_expire): Set a default curve.
3040
3041 2016-09-13  Werner Koch  <wk@gnupg.org>
3042
3043         gpg: Improve usability of --quick-gen-key.
3044         * g10/keygen.c (FUTURE_STD_): New constants.
3045         (parse_expire_string): Handle special keywords.
3046         (parse_algo_usage_expire): Allow "future-default".  Simplify call to
3047         parse_expire_string.
3048         (quick_generate_keypair): Always allow an expiration date.  Replace
3049         former "test-default" by "future-default".
3050
3051 2016-09-12  Werner Koch  <wk@gnupg.org>
3052
3053         gpg: Avoid mixing up status and colon line output.
3054         * g10/keylist.c (list_keyblock_colon): Avoid calling functions which
3055         trigger a status line output before having printed a LF.
3056
3057 2016-09-12  Justus Winter  <justus@g10code.com>
3058
3059         tests: Simplify tofu test.
3060         * tests/openpgp/tofu.scm: Simplify now that we only have one db
3061         format.
3062
3063 2016-09-10  Ben Kibbey  <bjk@luxsci.net>
3064
3065         Portability build fix.
3066         * kbx/Makefile.am: Add NETLIBS.
3067         * dirmngr/Makefile.am: Ditto for dirmngr_ldap.
3068
3069         Fix symbol conflict.
3070         * g10/gpgcompose.c: Rename struct siginfo to signinfo.
3071
3072 2016-09-09  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
3073
3074         gpg: print fingerprint regardless of keyid-format.
3075         * g10/keylist.c (print_fingerprint): use compact format independent of
3076           keyid-format; (print_key_line): always print the fingerprint
3077
3078 2016-09-08  Werner Koch  <wk@gnupg.org>
3079
3080         gpg: Remove option --yes from gpgv.
3081         * g10/gpgv.c (opts): Remove --yes.
3082         (main): Always set opt.ANSWER_YES.
3083
3084         gpg: Add options --output and --yes to gpgv.
3085         * g10/gpgv.c (oOutput, oAnswerYes): New.
3086         (opts): Add --output and --yes.
3087         (main): Implement options.
3088
3089         gpg: Make --output work with --verify.
3090         * g10/mainproc.c (proc_plaintext): Handle opt.output.
3091
3092 2016-09-07  Werner Koch  <wk@gnupg.org>
3093
3094         dirmngr: Terminate on deletion of the socket file (Linux only).
3095         * dirmngr/dirmngr.c [HAVE_INOTIFY_INIT]: Include sys/inotify.h.
3096         (oDisableCheckOwnSocket): New.
3097         (opts): Add --disable-check-own-socket.
3098         (disable_check_own_socket): New var.
3099         (parse_rereadable_options): Set that var.
3100         (my_inotify_is_name) [HAVE_INOTIFY_INIT]: New.
3101         (handle_connections) [HAVE_INOTIFY_INIT]: New.
3102
3103 2016-09-07  Neal H. Walfield  <neal@g10code.com>
3104
3105         g10: Use the time a signature was seen, not the embedded time, for stats
3106         * g10/tofu.c (ask_about_binding): Use the time that a signature was
3107         seen, not allegedly generated, when generating statistics.
3108
3109         tests: Don't use --tofu-db-format.
3110         * tests/openpgp/tofu.scm: Remove use of --tofu-db-format, which is
3111         deprecated.
3112
3113         g10: Check for a new binding a bit later.
3114         * g10/tofu.c (build_conflict_set): Check for the current key after
3115         looking for conflicts and removing any '!'.
3116
3117         g10: Change TOFU code to respect --faked-system-time.
3118         * g10/tofu.c (record_binding): New parameter now.  Update callers.
3119         Don't use SQLite's strftime('%s','now') to get the current time, use
3120         NOW.
3121         (ask_about_binding): Likewise.
3122         (get_trust): New parameter now.  Update callers.
3123         (show_statistics): Likewise.
3124         (tofu_register_signature): Don't use SQLite's strftime('%s','now') to
3125         get the current time, use gnupg_get_time().
3126         (tofu_register_encryption): Likewise.
3127
3128         g10: Use the correct conversion function.
3129         * g10/tofu.c (show_statistics): Use string_to_ulong, not
3130         string_to_long.
3131
3132 2016-09-07  Werner Koch  <wk@gnupg.org>
3133
3134         gpg: Fix format string issues in tofu.
3135         * g10/tofu.c (write_stats_status): Use ulong for MESSSAGES.  Fix
3136         format strings.  Simplify by using the new write_status_printf.
3137
3138 2016-09-06  Neal H. Walfield  <neal@g10code.com>
3139
3140         g10: Make sure some functions are passed a primary key.
3141         * g10/tofu.c (get_trust): Make sure the caller provides a primary key.
3142         (tofu_register_signature): Likewise.
3143
3144         g10: Tweak TOFU's verbosity.
3145         * g10/tofu.c (time_ago_str): Only show the most significant unit.
3146         * g10/tofu.c (show_statistics): Tweak the output.
3147
3148         g10: Only show the TOFU warning once per key.
3149         * g10/tofu.c (show_statistics): Return whether to call show_warning.
3150         Move the warning from here...
3151         (show_warning): ... to this new function.
3152         (tofu_get_validity): If show_statistics returns a non-zero value, call
3153         show_warning.
3154
3155         g10: Record and show statistics for encrypted messages when using TOFU.
3156         * g10/tofu.c: Include "sqrtu32.h".
3157         (struct tofu_dbs_s.s): Rename get_trust_gather_other_keys to
3158         get_trust_gather_signature_stats.  Add new field
3159         get_trust_gather_encryption_stats.
3160         (initdb): Create the encryptions table.
3161         (ask_about_binding): Show the encryption statistics too.
3162         (tofu_register): Rename from this...
3163         (tofu_register_signature): ... to this and update callers.
3164         (tofu_register_encryption): New function.
3165         (write_stats_status): Add parameters encryption_count,
3166         encryption_first_done and encryption_most_recent.  Update callers.
3167         Compute the trust using the euclidean distance of the signature and
3168         signature count.  Compare with twice the threshold.  Include
3169         encryption count information in the TFS and TOFU_STATS lines.
3170         (show_statistics): Also get information about the encrypted messages.
3171         * g10/trustdb.c (tdb_get_validity_core): Use it.
3172
3173         g10: Simplify the binding statistics shown for a TOFU conflict.
3174         * g10/tofu.c (ask_about_binding): Simplify binding statistics.
3175
3176 2016-09-06  Justus Winter  <justus@g10code.com>
3177
3178         gpgscm: Fix detection of unbalanced parenthesis.
3179         * tests/gpgscm/main.c (load): Print error message.
3180         * tests/gpgscm/scheme.c (opexe_0): Correctly report nesting level when
3181         loading files.
3182
3183         tests: Fix test.
3184         * tests/openpgp/multisig.scm: Add missing parenthesis.
3185
3186 2016-09-06  Werner Koch  <wk@gnupg.org>
3187
3188         agent: Terminate on deletion of the socket file (Linux only).
3189         * configure.ac (AC_CHECK_FUNCS): Chec for inotify_init.
3190         * agent/gpg-agent.c [HAVE_INOTIFY_INIT]: Include sys/inotify.h.
3191         (my_inotify_is_name) [HAVE_INOTIFY_INIT]: New.
3192         (handle_connections) [HAVE_INOTIFY_INIT]: New.
3193
3194 2016-09-05  Justus Winter  <justus@g10code.com>
3195
3196         tests: Speed up the test suite.
3197         * tests/openpgp/run-tests.scm (test::run-sync): Pass additional
3198         arguments to the test.
3199         (test::run-sync-quiet): Likewise.
3200         (test::run-async): Likewise.
3201         (run-tests-{parallel,sequential}-isolated): Create a tarball of the
3202         gnupghome, then extract it for each test.
3203         * tests/openpgp/setup.scm: Refactor into functions, add an interface
3204         to tar-up the created environment, and untar it multiple times.
3205
3206         common: Restore a simpler variant of 'gnupg_wait_process'.
3207         * common/exechelp-posix.c (gnupg_wait_process): Use the code prior to
3208         5ba4f604.
3209
3210         common: Fix error handling.
3211         * common/exechelp-posix.c (store_result): Use xtrymalloc.
3212         (gnupg_wait_processes): Likewise, and check result.
3213
3214 2016-09-05  Neal H. Walfield  <neal@g10code.com>
3215
3216         g10: Don't add user attributes to the TOFU DB.
3217         * g10/trustdb.c (tdb_get_validity_core): Skip user attributes.
3218
3219 2016-09-05  Werner Koch  <wk@gnupg.org>
3220
3221         agent: Silence --debug IPC output for connections from self.
3222         * agent/command.c (server_local_s): Add fields 'greeting_seen' and
3223         'connect_from_self'.
3224         (io_monitor): Do not log connections from self.
3225         (start_command_handler): Set flag 'connect_from_self'.
3226         * agent/gpg-agent.c (check_own_socket_thread): Disable logging.
3227         (do_start_connection_thread): Do not log conection start and
3228         termination if IPC debugging is enabled.
3229
3230         agent: Small improvement of the server's local state.
3231         * agent/command.c (sserver_local_s): Change flags to use only one bit.
3232         (option_handler): Make an atoi return 1 or 0.
3233
3234 2016-09-05  Neal H. Walfield  <neal@g10code.com>
3235
3236         g10: Refactor cross sig check code.
3237         * g10/tofu.c (BINDING_NEW): New enum value.
3238         (BINDING_CONFLICT): Likewise.
3239         (BINDING_EXPIRED): Likewise.
3240         (BINDING_REVOKED): Likewise.
3241         (ask_about_binding): Move cross sig check from here...
3242         (get_trust): ... and the conflict set building from here...
3243         (build_conflict_set): ... to this new function.
3244         (format_conflict_msg_part1): Replace parameter conflict with
3245         conflict_set.  Drop parameter fingerprint.  Update callers.
3246         (ask_about_binding): Drop unused parameter conflict and redundant
3247         parameter bindings_with_this_email_count.  Rename parameter
3248         bindings_with_this_email to conflict_set.  Update callers.
3249
3250 2016-09-05  Justus Winter  <justus@g10code.com>
3251
3252         tests: Update README.
3253         * tests/openpgp/README: Update.
3254
3255         tests: Pass flags to test driver.
3256         * tests/openpgp/Makefile.am (xcheck): Pass flags to 'run-tests.scm'.
3257
3258         common: Improve waiting for processes on POSIX.
3259         * common/exechelp-posix.c (struct terminated_child): New definition.
3260         (terminated_children): New variable.
3261         (store_result): New function.
3262         (get_result): Likewise.
3263         (gnupg_wait_process): Store results that were not requested and
3264         consider previously stored results.
3265
3266         waitpid(2) may return information about terminated children that we
3267         did not yet request, and there is no portable way to wait for a
3268         specific set of children.  As a workaround, we store the results of
3269         children for later use.
3270
3271 2016-09-05  Werner Koch  <wk@gnupg.org>
3272
3273         dirmngr: Exclude D lines from the IPC debug output.
3274         * dirmngr/dirmngr.h: Include asshelp.h.
3275         * dirmngr/server.c (server_local_s): Add inhibit_dara_logging fields.
3276         (data_line_write): Implement logging inhibit.
3277         (data_line_cookie_close): Print non-logged D lines.
3278         (cmd_wkd_get, cmd_ks_get, cmd_ks_fetch): Do not log D lines.
3279         (dirmngr_assuan_log_monitor): New.
3280         * dirmngr/dirmngr.c (main): Register monitor function.
3281
3282         common: Add an assuan logging monitor.
3283         * common/asshelp.c (my_log_monitor): New var.
3284         (my_libassuan_log_handler): Run that monitor.
3285         (setup_libassuan_logging): Add arg to set a log monitor and change all
3286         callers.
3287
3288         gpg: New export filter drop-subkey.
3289         * g10/import.c (impex_filter_getval): Add properties for key packets.
3290         * g10/export.c (export_drop_subkey): New var.
3291         (cleanup_export_globals): Release that var.
3292         (parse_and_set_export_filter): Add filter "drop-subkey".
3293         (apply_drop_subkey_filter): New.
3294         (do_export_stream): Run that filter.
3295
3296         common: Add string operator gt,ge,le,lt to recsel.
3297         * common/recsel.c (recsel_parse_expr): Add them.
3298         (recsel_dump): Print them.
3299         (recsel_select): Evaluate them.
3300
3301         gpg: Use a common filter_getval for import and export.
3302         * g10/import.c (filter_getval): Rename to ...
3303         (impex_filter_getval): this.  Make global.
3304         (apply_keep_uid_filter, apply_drop_sig_filter): Adjust.
3305         * g10/export.c (filter_getval): Remove.
3306         (apply_drop_sig_filter): Use impex_filter_getval.
3307
3308 2016-09-03  NIIBE Yutaka  <gniibe@fsij.org>
3309
3310         scd: Fix an action after card removal.
3311         * scd/command.c (update_card_removed): Call apdu_close_reader here.
3312
3313 2016-09-02  Werner Koch  <wk@gnupg.org>
3314
3315         wks: Add framework for policy flags.
3316         * tools/call-dirmngr.c (wkd_get_policy_flags): New.
3317         * tools/gpg-wks.h (struct policy_flags_s, policy_flags_t): New.
3318         * tools/wks-util.c (wks_parse_policy): New.
3319         * tools/gpg-wks-client.c (command_send): Get the policy flags to show
3320         a new info line.
3321         * tools/gpg-wks-server.c (get_policy_flags): New.
3322         (process_new_key): get policy flag and add a stub for "auth-submit".
3323         (command_list_domains): Check policy flags.
3324
3325         dirmngr: Add --policy-flags option to WKD_GET.
3326         * dirmngr/server.c (cmd_wkd_get): Add new option.
3327
3328         common: Check read errors in name-value.c.
3329         * common/name-value.c: Check for read errors.
3330
3331 2016-09-02  NIIBE Yutaka  <gniibe@fsij.org>
3332
3333         scd: Release the card reader after card removal.
3334         * scd/command.c (update_reader_status_file): Call apdu_close_reader.
3335
3336         scd: Clean up unused shutdown method.
3337         * scd/apdu.c (shutdown_ccid_reader, apdu_shutdown_reader): Remove.
3338         (reset_ccid_reader): Don't set shutdown_reader.
3339         * scd/ccid-driver.c (ccid_shutdown_reader): Remove.
3340
3341         agent: invoke scdaemon with --homedir.
3342         * agent/call-scd.c (start_scd): Supply --homedir option when it's not
3343         default homedir.
3344
3345         po: Update Japanese translation.
3346
3347 2016-09-01  Neal H. Walfield  <neal@g10code.com>
3348
3349         g10: End transaction earlier.
3350         * g10/tofu.c (ask_about_binding): End the transaction earlier.
3351
3352         g10: Don't consider cross-signed keys to be in conflict.
3353         * g10/tofu.c (cross_sigs): New function.
3354         (ask_about_binding): If apparently conflicting keys are cross signed,
3355         then don't mark them as conflicting.
3356
3357 2016-09-01  Werner Koch  <wk@gnupg.org>
3358
3359         gpg: Avoid homedir creation by --list-config.
3360         * g10/gpg.c (main): Do not register a key for the list config
3361         commands.
3362
3363         gpg: Simplify code to print VALIDSIG.
3364         * g10/mainproc.c (check_sig_and_print): Use hexfingerprint and
3365         write_status_printf.
3366
3367         gpg: Add new function write_status_printf.
3368         * g10/cpr.c (write_status_printf): New.
3369
3370         gpg: Fix printing of pubkey algo in --verbose signature verify.
3371         * g10/sig-check.c (check_signature2): Replace arg PK by R_PK and
3372         change the semantics.  Also clear the other R_ args on function entry,
3373         use gpg_error() and change retturn type to gpg_error_t.
3374         * g10/mainproc.c (do_check_sig): Add arg R_PK.
3375         (list_node): Pass NULL for new arg.
3376         (check_sig_and_print): Rework to make use of the returned PK.
3377
3378 2016-09-01  Neal H. Walfield  <neal@g10code.com>
3379
3380         g10: When asking about a TOFU binding conflict, default to unknown.
3381         * g10/tofu.c (ask_about_binding): Default to unknown.
3382
3383         g10: Add support for TRUST_NEVER.
3384         * g10/pkclist.c (do_we_trust): Handle TRUST_NEVER, which can be
3385         returned by the TOFU trust model.
3386         (do_we_trust_pre): Print a different message if TRUSTLEVEL is
3387         TRUST_NEVER.
3388         (check_signatures_trust): Improve comment.
3389
3390         g10: Improve text.
3391         * g10/tofu.c (show_statistics): Improve the text (key and user id, not
3392         just key).
3393
3394         g10: Remove unused parameter.
3395         * g10/tofu.c (show_statistics): Remove unused parameter sig_exclude.
3396         Update callers.
3397
3398 2016-09-01  Werner Koch  <wk@gnupg.org>
3399
3400         gpg: Copy the correct digest for use by TOFU.
3401         * g10/mainproc.c (do_check_sig): Use the current digest algo.
3402
3403 2016-09-01  Neal H. Walfield  <neal@g10code.com>
3404
3405         g10: Be careful to not be in a transaction during long operations.
3406         * g10/tofu.c (begin_transaction): New parameter only_batch.  If set,
3407         only start a batch transaction if there is none and one has been
3408         requested.  Update callers.
3409         (tofu_suspend_batch_transaction): New function.
3410         (tofu_resume_batch_transaction): Likewise.
3411         (ask_about_binding): Take a ctrl_t, not a tofu_dbs_t.  Update
3412         callers.  Gather statistics within a transaction.  Suspend any batch
3413         transaction when getting user input.
3414         (get_trust): Take a ctrl_t, not a tofu_dbs_t.  Update callers.
3415         Enclose in a transaction.
3416         (tofu_get_validity): Use a batch transaction, not a normal
3417         transaction.
3418
3419 2016-09-01  Werner Koch  <wk@gnupg.org>
3420
3421         tests: Run test requiring the network only in maintainer-mode.
3422         * dirmngr/Makefile.am (noinst_PROGRAMS, TESTS): Add module_net_tests.
3423         (module_tests): Move t-dns-test to ...
3424         (module_net_tests): here.
3425
3426 2016-08-31  Werner Koch  <wk@gnupg.org>
3427
3428         wks: Send a final message to the user.
3429         * tools/gpg-wks-server.c (send_congratulation_message): New.
3430         (check_and_publish): Call it.
3431
3432         wks: Relax permission check for the top directory.
3433         * tools/gpg-wks-server.c: Allow S_IXOTH for the top directory.
3434
3435 2016-08-31  Neal H. Walfield  <neal@g10code.com>
3436
3437         g10: On a TOFU conflict, show whether the uids are expired or revoked.
3438         * g10/tofu.c (struct signature_stats): Add fields is_expired and
3439         is_revoked.
3440         (signature_stats_prepend): Clear *stats when allocating it.
3441         (ask_about_binding): Also show whether the user ids are expired or
3442         revoked.
3443
3444         doc: Add a help text for tofu.conflict.
3445         * doc/help.txt (.gpg.tofu.conflict): New help text.
3446
3447         g10: Always trust ultimately trusted keys.
3448         * g10/tofu.c (get_trust): Always return TRUST_ULTIMATE for ultimately
3449         trusted keys.
3450
3451         g10: Fix error detection.
3452         * g10/tofu.c: first_seen == 0 is not an error.
3453
3454         g10: Update a key's TOFU policy in a transaction.
3455         * g10/tofu.c (tofu_set_policy): Do the update in a transaction.
3456         * g10/gpg.c (main): Do a TOFU policy update in a batch transaction.
3457
3458         g10: Fix the show old policy functionality when changing a TOFU policy.
3459         * g10/tofu.c (record_binding): Fix the show old policy functionality.
3460
3461         g10: Drop unused argument.
3462         * g10/tofu.c (begin_transaction): Remove unused option only_batch.
3463
3464         gpg: Move state local to tofu.c to a private structure.
3465         * g10/gpg.h (struct server_control_s.tofu): Move fields in_transaction
3466         and batch_update_started from here...
3467         * g10/tofu.c (struct tofu_dbs_s): ... to here.
3468
3469         gpg: Avoid name spaces clash with future sqlite versions (2).
3470         * g10/gpgsql.h (gpgsql_arg_type): Rename SQLITE_ARG_END to
3471         GPGSQL_ARG_END, SQLITE_ARG_INT to GPGSQL_ARG_INT, SQLITE_ARG_LONG_LONG
3472         to GPGSQL_ARG_LONG_LONG, SQLITE_ARG_STRING to GPGSQL_ARG_STRING, and
3473         SQLITE_ARG_BLOB to GPGSQL_ARG_BLOB.
3474
3475 2016-08-31  Werner Koch  <wk@gnupg.org>
3476
3477         gpg: Fix regression in gpgv's printing of the keyid.
3478         * g10/keyid.c (keystr): Take care of KF_NONE != KF_DEFAULT.
3479
3480 2016-08-30  Neal H. Walfield  <neal@g10code.com>
3481
3482         g10: Improve TOFU batch update code.
3483         * g10/gpg.h (tofu): Rename field batch_update_ref to
3484         batch_updated_wanted.
3485         * g10/tofu.c (struct tofu_dbs_s): Rename field batch_update to
3486         in_batch_transaction.
3487         (begin_transaction): Only end an extant batch transaction if we are
3488         not in a normal transaction.  When ending a batch transaction, really
3489         end it.  Update ctrl->tofu.batch_update_started when starting a batch
3490         transaction.
3491         (end_transaction): Only release a batch transaction if ONLY_BATCH is
3492         true.  When releasing a batch transaction, assert that there is no
3493         open normal transaction.  Only allow DBS to be NULL if ONLY_BATCH is
3494         true.
3495         (tofu_begin_batch_update): Don't update
3496         ctrl->tofu.batch_update_started.
3497         (opendbs): Call end_transaction unconditionally.
3498
3499         g10: If a key has no valid user ids, change TOFU to return TRUST_NEVER.
3500         * g10/tofu.c (tofu_get_validity): If a key has no valid (non-expired)
3501         user ids, change TOFU to return TRUST_NEVER.
3502
3503         g10: Change tofu_register & tofu_get_validity to process multiple uids.
3504         * g10/tofu.c (tofu_register): Take a list of user ids, not a single
3505         user id.  Only register the bindings, don't compute the trust.  Thus,
3506         change return type to an int and remove the may_ask parameter.  Update
3507         callers.
3508         (tofu_get_validity): Take a list of user ids, not a single user id.
3509         Update callers.  Observe signatures made by expired user ids, but
3510         don't include them in the trust calculation.
3511
3512         g10: Support nested transactions on the TOFU DB.
3513         * g10/gpg.h (struct server_control_s): New field in_transaction.
3514         * g10/tofu.c (struct tofu_dbs_s): Remove fields savepoint_inner and
3515         savepoint_inner_commit.
3516         (begin_transaction): Increment CTRL->TOFU.IN_TRANSACTION.  Name the
3517         savepoint according to the nesting level.
3518         (end_transaction): Name the savepoint according to the nesting level.
3519         Decrement CTRL->TOFU.IN_TRANSACTION.
3520         (rollback_transaction): Likewise.  Only ever rollback a non-batch
3521         transaction.
3522         (opendbs): Assert that there are no outstanding transactions.
3523
3524         g10: Print the info text in more situations.
3525         * g10/tofu.c (ask_about_binding): Print the info text when the policy
3526         is ask and there are multiple bindings with the email address.
3527
3528         g10: Print the formatted text.
3529         * g10/tofu.c (ask_about_binding): Print the formatted text, not the
3530         unformatted text.
3531
3532         g10: When showing a user id's trust, pass the current signature.
3533         * g10/mainproc.c (check_sig_and_print): Consistently pass SIG to
3534         get_validity.
3535
3536 2016-08-29  Werner Koch  <wk@gnupg.org>
3537
3538         w32: Fix build regression due to 2aa0701.
3539         * common/logging.c (fun_writer): Always declare 'name_for_err'.
3540
3541         gpgconf: Print the plain socket directory with --list-dirs.
3542         * tools/gpgconf.c (list_dirs): Add plain socketdir out.
3543
3544         common: Add a default socket name feature.
3545         * common/logging.c (log_set_socket_dir_cb): New.
3546         (socket_dir_cb): New.
3547         (set_file_fd): Allow "socket://".
3548         (fun_writer): Implement default socket name.
3549         * common/init.c (_init_common_subsystems): Register default socket.
3550
3551         gpg: Make decryption of -R work w/o --try-secret-key or --default-key.
3552         * g10/getkey.c (enum_secret_keys): At state 3 enumerate the keys in all
3553         cases not just when --try-all-secrets is used.
3554
3555 2016-08-25  Werner Koch  <wk@gnupg.org>
3556
3557         gpg: Fix false negatives in Ed25519 signature verification.
3558         * g10/pkglue.c (pk_verify): Fix Ed25519 signatrue values.
3559         * tests/openpgp/verify.scm (msg_ed25519_rshort): New
3560         (msg_ed25519_sshort): New.
3561         ("Checking that a valid Ed25519 signature is verified as such"): New.
3562
3563         common: Rename an odd named function.
3564         * common/openpgp-oid.c (oid_crv25519): Rename to oid_cv25519.
3565         (openpgp_oid_is_crv25519): Rename to openpgp_oid_is_cv25519.  Change
3566         callers.
3567
3568         gpg: New option --with-tofu-info.
3569         * g10/gpg.c (oWithTofuInfo): New.
3570         (opts): Add --with-tofu-info.
3571         (main): Set opt.with_tofu_info.
3572         * g10/options.h (struct opt): Add field WITH_TOFU_INFO.
3573         * g10/tofu.c (show_statistics): Add optional arg OUTFP and enter
3574         special mode if not NULL.  Change all callers.
3575         (tofu_write_tfs_record): New.
3576         * g10/keylist.c (list_keyblock_colon): Do not print the tofu policy as
3577         part of the "uid" record.  Print a new "tfs" record if the new option
3578         is set.
3579         * tests/openpgp/tofu.scm (getpolicy): Change from UID to TFS record.
3580
3581 2016-08-24  Werner Koch  <wk@gnupg.org>
3582
3583         gpg: Change TOFU_STATS to return timestamps.
3584         * g10/tofu.c (write_stats_status): Add arg FP to print a colon
3585         formated line.  Adjust for changed TOFU_STATS interface.
3586         (show_statistics): Let the query return timestamps and use
3587         gnupg_get-time to compute the "time ago" values.
3588
3589         common: Guarantee that gnupg_get_time does not return an error.
3590         * common/gettime.c (gnupg_get_time): Abor if time() failed.
3591         (gnupg_get_isotime): Remove now useless check.
3592         (make_timestamp): Remove check becuase we already checked this modulo
3593         the faked time thing.
3594
3595         wks: Add command --supported to gpg-wks-client.
3596         * tools/gpg-wks-client.c (aSupported): New.
3597         (opts): Add --supported.
3598         (parse_arguments): Ditto.
3599         (main): Call command_supported.
3600         (command_supported): New.
3601
3602 2016-08-22  Werner Koch  <wk@gnupg.org>
3603
3604         wks: Install gpg-wks-client under libexec.
3605         * tools/Makefile.am (bin_PROGRAMS): Move gpg-wks-client to ...
3606         (libexec_PROGRAMS): ...here.
3607
3608         common: Remove unused vars in simple-pwquery.
3609         * common/simple-pwquery.c (agent_send_option): Remove unused vars.
3610         (simple_query): Ditto.
3611         (agent_open): Ditto.  Return RC on error.
3612         (simple_pwquery): Remove unused vars.  Remove shadowing of 'p'.
3613
3614 2016-08-18  Werner Koch  <wk@gnupg.org>
3615
3616         Release 2.1.15.
3617
3618         po: Update German translation.
3619
3620 2016-08-18  Åka Sikrom  <a4@hush.com>
3621
3622         po: Update Norwegian translation.
3623
3624 2016-08-18  Ineiev  <ineiev@gnu.org>
3625
3626         po: Update Russian translation.
3627
3628 2016-08-18  Werner Koch  <wk@gnupg.org>
3629
3630         gpg: Add import filter "drop-sig".
3631         * g10/import.c (import_drop_sig): New variable.
3632         (cleanup_import_globals): Release that.
3633         (parse_and_set_import_filter): Add filter "drop-sig".
3634         (filter_getval): Implement properties for drop-sig.
3635         (apply_drop_sig_filter): New.
3636         (import_one): Apply that filter.
3637
3638         dirmngr: Remove all system daemon features.
3639         * dirmngr/dirmngr.h (opts): Remove fields 'system_service' and
3640         'system_daemon'.
3641         * common/homedir.c (dirmngr_sys_socket_name): Remove.
3642         (dirmngr_user_socket_name): Rename to ...
3643         (dirmngr_socket_name): this.  Change call callers.
3644         * common/asshelp.c (start_new_dirmngr): Remove the system socket
3645         feature.
3646         * tools/gpgconf.c (list_dirs): Do not print "dirmngr-sys-socket".
3647         * sm/server.c (gpgsm_server): Adjust for removed system socket feature.
3648         * dirmngr/server.c (cmd_getinfo): Ditto.
3649         (cmd_killdirmngr): Remove check for system daemon.
3650         (cmd_reloaddirmngr): Ditto.
3651         * dirmngr/dirmngr.c (USE_W32_SERVICE): Remove macro.
3652         (aService): Remove.
3653         (opts): Remove --service.
3654         (w32_service_control): Remove.
3655         (real_main, call_real_main) [W32]: Remove wrapper.
3656         (main): Remove Windows system service feature.  Remove system dameon
3657         feature.  Use only the "~/.gnupg/dirmngr_ldapservers.conf" file.
3658         * dirmngr/certcache.c (load_certs_from_dir): Remove warning in the
3659         system dameon case.
3660         * dirmngr/crlcache.c (DBDIR_D): Always use "~/.gnupg/crls.d".
3661         * dirmngr/ocsp.c (validate_responder_cert): Do not call
3662         validate_cert_chain which was used only in system daemon mode.
3663         * dirmngr/validate.c (validate_cert_chain): Always use the code.
3664
3665         gpg: New option --sender.
3666         * g10/options.h (struct opt): Add field 'sender_list'.
3667         * g10/gpg.c: Include mbox-util.h.
3668         (oSender): New.
3669         (opts): Add option "--sender".
3670         (main): Parse option.
3671
3672 2016-08-16  Werner Koch  <wk@gnupg.org>
3673
3674         agent: Allow import of overly large keys.
3675         * agent/command.c (MAXLEN_KEYDATA): Double the size.
3676
3677 2016-08-14  Werner Koch  <wk@gnupg.org>
3678
3679         g13: Allow the use of a g13tab label for --mount.
3680         * g13/mount.c (g13_mount_container): Do not run the first access&n