55fe2f932ea8a1caedf3bc77384f25b94b341562
[gnupg.git] / g10 / ChangeLog
1 2008-12-21  David Shaw  <dshaw@jabberwocky.com>
2
3         * gpg.c (main): Properly handle UTF8 usernames with --sign-key and
4         --lsign-key.
5
6 2008-12-11  Werner Koch  <wk@g10code.com>
7
8         * sig-check.c (check_revocation_keys): Close message digest.
9         (signature_check2): Switch to SHA-1 for SIG_ID computation.  This
10         is to match 2.0.10.
11
12 2008-12-09  Werner Koch  <wk@g10code.com>
13
14         * keygen.c (proc_parameter_file): Check that key and subkey usages
15         are allowed.
16
17 2008-11-18  David Shaw  <dshaw@jabberwocky.com>
18
19         * trustdb.c (validate_one_keyblock): Fix the trust signature
20         calculations so that we lower the trust depth of signatures to fit
21         within the current chain, rather than discarding any signature
22         that does not fit within the trust depth.
23
24 2008-10-03  David Shaw  <dshaw@jabberwocky.com>
25
26         * main.h, mainproc.c (check_sig_and_print),
27          keylist.c (list_keyblock_print), pkclist.c (do_edit_ownertrust),
28          keyedit.c (menu_showphoto), photoid.c (generate_photo_id,
29          show_photos), misc.c (pct_expando): Add %v and %V expandos so
30          that displaying photo IDs can show the attribute validity
31          tag (%v) and string (%V).  Originally by Daniel Gillmor.
32
33 2008-09-24  David Shaw  <dshaw@jabberwocky.com>
34
35         * keyedit.c (keyedit_menu): Fix bug where a modified keyring loses
36         its modified status after a "clean" or "minimize" that doesn't
37         need to do anything.
38
39 2008-09-23  David Shaw  <dshaw@jabberwocky.com>
40
41         * pkclist.c (select_algo_from_prefs): Redo function to rank prefs
42         and pick a consensus winner across all keys.
43
44 2008-09-04  David Shaw  <dshaw@jabberwocky.com>
45
46         * keyserver.c (keyserver_import_cert): Allow keyserver URLs in
47         addition to full URLs in CERT records.
48
49 2008-08-11  Werner Koch  <wk@g10code.com>
50
51         * keygen.c (ask_expire_interval): Check for time overflow of an
52         u32.  Fixes bug #947.  Use SIZEOF_TIME_T for the 2039--2106 check.
53
54 2008-08-01  Werner Koch  <wk@g10code.com>
55
56         * tdbio.c (open_db) [!EROFS]: Move closing parens out of the
57         ifdef.  Reported by Ken Takusagawa.
58
59 2008-04-30  Werner Koch  <wk@g10code.com>
60
61         * getkey.c (parse_auto_key_locate): Ignore nodefault and local
62         methods.
63
64 2008-04-17  David Shaw  <dshaw@jabberwocky.com>
65
66         * parse-packet.c (parse_key): Add constant for Camellia-192.
67
68 2008-04-12  David Shaw  <dshaw@jabberwocky.com>
69
70         * getkey.c (merge_selfsigs_subkey): If there are multiple 0x19
71         backsigs, take the most recent one.
72
73 2008-03-25  Werner Koch  <wk@g10code.com>
74
75         * keyserver.c (parse_keyrec): Take care of char defaulting to
76         unsigned when using hextobyte.
77
78         * options.skel: Make the default keyserver keys.gnupg.net.
79
80 2008-03-23  David Shaw  <dshaw@jabberwocky.com>
81
82         * import.c (collapse_uids): Fix bug 894: possible memory
83         corruption around deduplication of user IDs.
84
85 2008-03-17  David Shaw  <dshaw@jabberwocky.com>
86
87         * parse-packet.c (parse_key): Parse a secret key encrypted with
88         Camellia.
89
90 2008-02-09  Marcus Brinkmann  <marcus@g10code.de>
91
92         * gpg.c (main): New variable default_configname.  Use it if
93         save_configname is NULL (can happen if default configfile does
94         not exist).  Move default configname determination to ...
95         (get_default_configname): ... this new function.
96
97 2008-01-26  Werner Koch  <wk@g10code.com>
98
99         * card-util.c (get_manufacturer): Add vendor 004 and support for
100         the unmanaged range.
101
102 2007-12-14  Werner Koch  <wk@g10code.com>
103
104         * gpg.c (main): Set opt.no_homedir_creation already on the first
105         option parsing pass.  This is required so that the gpg_dearmor
106         tool won't create a ~/.gnupg.
107
108 2007-12-12  Werner Koch  <wk@g10code.com>
109
110         * misc.c (print_pubkey_algo_note): Print a warning for type 20 keys.
111         (openpgp_pk_test_algo, openpgp_pk_algo_usage): Allow type 20 fro
112         encryption only with option --rfc2440.
113         * mainproc.c (proc_pubkey_enc): Ditto.
114
115 2007-12-12  David Shaw  <dshaw@jabberwocky.com>
116
117         * trustdb.c (sanitize_regexp): New.  Protect against dangerous
118         regexps (malloc bombs) by force-commenting any characters aside
119         from the ones we explicitly want.
120         (check_regexp): Use it here before passing the regexp to
121         regcomp().
122
123 2007-12-11  Werner Koch  <wk@g10code.com>
124
125         * mainproc.c (proc_pubkey_enc): Allow type 20 Elgamal key for
126         decryption.
127
128 2007-12-10  Werner Koch  <wk@g10code.com>
129
130         * cardglue.h (gpg_error_from_syserror): New.
131
132         * app-openpgp.c (do_decipher): Take care of cryptograms shorter
133         that 128 bytes.  Fixes bug#851.
134
135         * import.c (auto_create_card_key_stub):  Do not clear the entire
136         fingerprint.  This finally makes the stub creation work.  My past
137         tests seemed to work because there was a key with a all zero
138         fingerprint available (Elgamal signing keys).
139
140 2007-12-08  Werner Koch  <wk@g10code.com>
141
142         * misc.c (openpgp_pk_algo_usage): Allow Elgamal type 20 for
143         encryption.
144
145 2007-12-03  Werner Koch  <wk@g10code.com>
146
147         * keygen.c (ask_key_flags): Add a translation remark and implement
148         a workaround.
149
150 2007-11-28  David Shaw  <dshaw@jabberwocky.com>
151
152         * sig-check.c (do_check): Code to try both the incorrect and
153         correct SHA-224 DER prefixes when verifying a signature.  See the
154         change itself for more discussion.
155
156         * main.h, seskey.c (do_encode_md): Rename to pkcs1_encode_md and
157         make non-static.
158
159         * gpg.c (print_algo_names): New.
160         (list_config): Use it here for the "ciphername" and "digestname"
161         config items so we can get a script-parseable list of the names.
162
163 2007-11-19  Werner Koch  <wk@g10code.com>
164
165         * keyedit.c (keyedit_menu): String grammar fix.
166
167 2007-11-12  Werner Koch  <wk@g10code.com>
168
169         * status.c (do_get_from_fd, do_shm_get): s/bool/getbool/ to
170         overcome problems with Mac OS 10.5 which seems to include
171         stdbool.h silently.
172
173 2007-10-27  David Shaw  <dshaw@jabberwocky.com>
174
175         * parse-packet.c (parse_onepass_sig): Sigclass is hex, so include
176         the 0x.
177
178         * keyserver.c (keyserver_spawn): Cosmetic, but looks cleaner.
179
180 2007-10-23  Werner Koch  <wk@g10code.com>
181
182         Switched entire package to GPLv3+.
183
184 2007-10-22  David Shaw  <dshaw@jabberwocky.com>
185
186         * gpg.c (main): Add --require-cross-certification to
187         --openpgp/--rfc4880 mode.
188
189         * gpg.c (main): Disable --rfc2440-text and --force-v3-sigs by
190         default.  Enable --require-cross-certification by default.
191         --openpgp (--rfc4880) is the same as --rfc2440 except with
192         "--enable-dsa2 --no-rfc2440-text --escape-from-lines".
193
194 2007-10-21  David Shaw  <dshaw@jabberwocky.com>
195
196         * misc.c (compliance_option_string, compliance_failure): Minor
197         cleanup.
198
199         * armor.c (is_armor_header): Comment about 4880.
200
201 2007-10-17  David Shaw  <dshaw@jabberwocky.com>
202
203         * options.h, gpg.c (main), misc.c (compliance_option_string): Add
204         --rfc4880, and make --openpgp an alias to it.  --rfc2440 now
205         stands alone.  For now, use the old 2440 defaults for 4880.
206
207         * keyedit.c (keyedit_menu): Use compliance_option_string() instead
208         of printing the compliance modes here.
209
210 2007-09-02  David Shaw  <dshaw@jabberwocky.com>
211
212         * import.c (collapse_uids): Significant speedup for de-duping user
213         IDs.
214
215 2007-08-24  Werner Koch  <wk@g10code.com>
216
217         * keyring.c (keyring_register_filename): Use same_file_p.
218         Suggested by Kurt Fitzner.
219
220 2007-07-19  David Shaw  <dshaw@jabberwocky.com>
221
222         * gpg.c (main): Fix typo.  Noted by John Clizbe.
223
224         * armor.c (parse_header_line): Improve test so that the header
225         test only allows "Hash" in the signed data section.
226
227 2007-07-18  David Shaw  <dshaw@jabberwocky.com>
228
229         * armor.c (is_armor_tag): New.  Detect if an armor header matches
230         2440bis-21.
231         (parse_header_line): Call it here, as bis-21 requires warning the
232         user (but continuing to process the message) when seeing an
233         unknown header.
234
235 2007-07-09  Werner Koch  <wk@g10code.com>
236
237         * gpg.c: Better print an extra warning if Camellia has been
238         configured.
239
240 2007-07-06  David Shaw  <dshaw@jabberwocky.com>
241
242         * encode.c (encode_crypt): Missed one call to
243         setup_plaintext_name().  This is bug#809.
244
245 2007-06-12  David Shaw  <dshaw@jabberwocky.com>
246
247         * sign.c (mk_notation_policy_etc): expect all sigs that this is
248         called for are >=v4.
249         (write_signature_packets, make_keysig_packet): Only call it for
250         >=v4 sigs.  This allows --force-v3-sigs and --force-v4-certs to
251         enable or disable notations, policies, and keyserver URLs.  This
252         is bug#800.
253
254 2007-05-09  Werner Koch  <wk@g10code.com>
255
256         * openfile.c (overwrite_filep, open_outfile) [W32]: Need to use
257         just "nul".  Though, I am pretty sure that some MSDOS versions
258         grok the extra /dev/.
259
260 2007-05-07  Werner Koch  <wk@g10code.com>
261
262         * openfile.c (open_outfile, overwrite_filep) [W32]: Use "/dev/nul".
263
264 2007-04-16  David Shaw  <dshaw@jabberwocky.com>
265
266         * packet.h, mainproc.c (reset_literals_seen): New function to
267         reset the literals count.
268
269         * verify.c (verify_one_file), decrypt.c (decrypt_messages): Call
270         it here so we allow multiple literals in --multifile mode (in
271         different files - not concatenated together).
272
273         * gpg.c, pkclist.c: #include <strings.h> for strcasecmp if it is
274         present.  Note that autoconf protects us against a strings.h that
275         cannot be used together with string.h.
276
277 2007-04-03  David Shaw  <dshaw@jabberwocky.com>
278
279         * parse-packet.c (parse_marker): New.  Enforce that the marker
280         contains 'P', 'G', 'P', and nothing but.
281         (parse): Call it here.
282         (skip_packet): No longer need to handle marker packets here.
283
284 2007-03-14  David Shaw  <dshaw@jabberwocky.com>
285
286         * keyserver.c: Windows Vista doesn't grok X_OK and so fails
287         access() tests.  Previous versions interpreted X_OK as F_OK
288         anyway, so we'll just use F_OK directly.
289
290 2007-03-08  Werner Koch  <wk@g10code.com>
291
292         * plaintext.c (handle_plaintext): Add two extra fflush for stdout.
293
294 2007-03-06  David Shaw  <dshaw@jabberwocky.com>
295
296         * keyedit.c (keyedit_menu): If we modify the keyblock (via
297         fix_keyblock() or collapse_uids()) make sure we reprocess the
298         keyblock so the flags are correct.  Noted by Robin H. Johnson.
299
300         * getkey.c (fixup_uidnode): Properly clear flags that don't apply
301         to us (revoked, expired) so that we can reprocess a uid.
302
303 2007-03-01  David Shaw  <dshaw@jabberwocky.com>
304
305         * options.h, gpg.c (main), mainproc.c (check_sig_and_print): Allow
306         multiple sig verification again as this is protected via the
307         multiple-messages code.
308
309 2007-02-26  Werner Koch  <wk@g10code.com>
310
311         * gpg.c (main): Add verify option show-primary-uid-only.
312         * options.h (VERIFY_SHOW_PRIMARY_UID_ONLY): New.
313         * mainproc.c (check_sig_and_print): Implement it.
314
315         * status.h (STATUS_ERROR): New status code.
316         * status.c (get_status_string): Ditto.
317         * mainproc.c (proc_plaintext): Emit it if multiple messages are
318         detected.
319
320 2007-02-20  David Shaw  <dshaw@jabberwocky.com>
321
322         * mainproc.c (literals_seen): New.
323         (proc_plaintext): Error out if more than one plaintext packet is
324         encountered
325         
326         * options.h, gpg.c: New option --allow-multiple-messages and --no
327         variant.
328
329 2007-02-13  David Shaw  <dshaw@jabberwocky.com>
330
331         * parse-packet.c (parse_signature): It's hex.
332
333         * getkey.c (merge_selfsigs_subkey): Avoid listing the contents of
334         a backsig when list mode is on.  Noted by Timo Schulz.
335
336 2007-02-04  Werner Koch  <wk@g10code.com>
337
338         * parse-packet.c (parse_signature): Limit bytes read for an
339         unknown alogorithm.  Fixes Debian bug#402592.
340
341 2007-02-01  David Shaw  <dshaw@jabberwocky.com>
342
343         * main.h, keygen.c (ask_expire_interval, parse_expire_string):
344         Pass in the time to use to calculate the expiration offset, rather
345         than querying it internally.  Change all callers.
346
347 2007-01-31  David Shaw  <dshaw@jabberwocky.com>
348
349         * keygen.c (do_generate_keypair, proc_parameter_file)
350         (generate_keypair, generate_subkeypair): Pass a timestamp through
351         to all the gen_xxx functions.
352
353         * keyedit.c (sign_uids): Another multiple to single timestamp
354         operation.
355
356         * sign.c (write_plaintext_packet): Take timestamp from outside.
357         Change all callers.
358         (sign_file, clearsign_file, sign_symencrypt_file): Calculate one
359         timestamp for the whole transaction.  Different timestamps for
360         each step can leak performance information.
361
362         * main.h, keygen.c (ask_expiredate), keyedit.c (menu_expire):
363         Remove the need for ask_expiredate().
364
365 2007-01-30  David Shaw  <dshaw@jabberwocky.com>
366
367         * keygen.c (make_backsig, write_direct_sig, write_selfsigs)
368         (write_keybinding): Have the various selfsigs created during key
369         generation use the timestamp of their parent key.  This helps
370         avoid leaking information about the performance of the machine
371         where the keys were generated.  Noted by Christian Danner.
372
373 2007-01-15  Werner Koch  <wk@g10code.com>
374
375         * parse-packet.c (read_protected_v3_mpi): Make sure to stop
376         reading even for corrupted packets.
377         * keygen.c (generate_user_id): Need to allocate one byte more.
378         Reported by Felix von Leitner.
379
380 2006-12-14  David Shaw  <dshaw@jabberwocky.com>
381
382         * options.skel: Tweak some examples to match reality and update
383         the RFC for CERT now that it is out of draft.
384
385 2006-12-13  David Shaw  <dshaw@jabberwocky.com>
386
387         * Makefile.am: Install options.skel via dist_pkgdata_DATA so that
388         "make uninstall" works properly.
389
390 2006-12-13  Werner Koch  <wk@g10code.com>
391
392         * gpgv.c, gpg.c: Do not include the now removed g10defs.h file.
393
394 2006-12-11  Werner Koch  <wk@g10code.com>
395
396         * seskey.c (encode_session_key, do_encode_md): Use new
397         mpi_nlimb_hint_from_nbytes function.
398         * sign.c (do_sign): Ditto.
399
400         * Makefile.am (AM_CPPFLAGS): Define GNUPG_LIBDIR.
401         * gpgv.c (i18n_init): s/G10_LOCALEDIR/LOCALEDIR/.
402         * gpg.c (i18n_init): Ditto.
403
404 2006-12-07  Werner Koch  <wk@g10code.com>
405
406         * Makefile.am (AM_CPPFLAGS): Define GNUPG_DATADIR.
407         * openfile.c (copy_options_file): Use log_info and not log_error
408         to avoid error returns in case of a missing skeleton file.
409
410 2006-12-04  Werner Koch  <wk@g10code.com>
411
412         * filter.h (armor_filter_context_t): New field REFCOUNT.
413         * armor.c (new_armor_context, release_armor_context) 
414         (push_armor_filter): New.
415         (armor_filter): Call releae_armor_context for IOBUFCTRL_FREE.
416         * import.c (import): Use the new function here instead of the
417         old hack using the iobuf_push_filter2. 
418         * keyserver.c (keyserver_spawn): Ditto.
419
420 2006-12-03  Werner Koch  <wk@g10code.com>
421
422         * keyedit.c (menu_clean): Made strings translatable.
423
424 2006-12-03  David Shaw  <dshaw@jabberwocky.com>
425
426         * keyedit.c (menu_clean): Show "already minimized" rather than
427         "already clean" when a minimized key is minimized again.  From
428         Dirk Traulsen.
429
430 2006-12-02  David Shaw  <dshaw@jabberwocky.com>
431
432         * options.h, gpg.c (main), passphrase.c (passphrase_to_dek): Add
433         --passphrase-repeat option to control how many times gpg will
434         re-prompt for a passphrase to ensure the user has typed it
435         correctly.  Defaults to 1.
436
437 2006-12-02  Werner Koch  <wk@g10code.com>
438
439         * encr-data.c: Allocate DFX context on the heap and not on the
440         stack.  Changes at several places.  Fixes CVE-2006-6235.
441
442 2006-11-27  Werner Koch  <wk@g10code.com>
443
444         * openfile.c (ask_outfile_name): Fixed buffer overflow occurring
445         if make_printable_string returns a longer string.  Fixes bug 728.
446
447 2006-10-23  Werner Koch  <wk@g10code.com>
448
449         * gpg.c (main): New command --gpgconf-list.
450
451 2006-10-12  David Shaw  <dshaw@jabberwocky.com>
452
453         * parse-packet.c (parse_symkeyenc): Show the unpacked as well as
454         the packed s2k iteration count.
455
456         * main.h, options.h, gpg.c (encode_s2k_iterations, main),
457         passphrase.c (hash_passphrase): Add --s2k-count option to specify
458         the number of s2k hash iterations.
459
460 2006-10-06  David Shaw  <dshaw@jabberwocky.com>
461
462         * keyserver.c (keyserver_spawn): Write the 16-digit keyid rather
463         than whatever key selector the user used on the command line.
464
465 2006-10-02  Werner Koch  <wk@g10code.com>
466
467         * encr-data.c (decrypt_data, mdc_decode_filter): Check the MDC
468         right here and don't let parse-packet handle the MDC.
469
470 2006-08-21  Werner Koch  <wk@g10code.com>
471
472         * skclist.c (is_insecure): Also test for uppercase version of the
473         insecure string.
474
475 2006-07-31  Werner Koch  <wk@g10code.com>
476
477         * openfile.c (open_outfile) [USE_ONLY_8DOT3]: Search backwards for
478         the dot.  Fixes bug 654.
479
480         * passphrase.c (agent_open): Use log_info instead of log_error to
481         allow a fallback without having gpg return an error code.  Fixes
482         bug #655.
483
484         * encode.c (encode_crypt_files): Invalidate the whole fd cache.
485         This is a workaround for problems in iobuf's stupid fd cache.
486         * decrypt.c (decrypt_messages): Ditto.
487         * verify.c (verify_files): Ditto.
488
489 2006-07-26  Werner Koch  <wk@g10code.com>
490
491         * keygen.c (gen_card_key_with_backup): Initialize sk_{un}protected.
492
493         * import.c (import): Initialize KEYBLOCK.
494
495         * pkclist.c (edit_ownertrust): Intialize trust to avoid gcc
496         warning.
497
498         * parse-packet.c (parse_comment): Cap comments at 65k.
499         (parse_gpg_control): Skip too large control packets.
500
501 2006-06-28  David Shaw  <dshaw@jabberwocky.com>
502
503         * keydb.h, pkclist.c (select_algo_from_prefs, algo_available):
504         Pass a union for preference hints rather than doing void * games.
505
506         * sign.c (sign_file): Use it here.
507
508         * sign.c (sign_file): When signing with multiple DSA keys, one
509         being DSA1 and one being DSA2 and encrypting at the same time, if
510         the recipient preferences give a hash that can work with the DSA2
511         key, then allow the DSA1 key to be promoted rather than giving up
512         and using hash_for().
513
514         * pkclist.c (algo_available): Automatically enable DSA2 mode when
515         handling a key that clearly isn't DSA1 (i.e. q!=160).
516
517 2006-06-28  Werner Koch  <wk@g10code.com>
518
519         * import.c (check_prefs_warning): Fix change for better
520         translatability.
521
522         * app-openpgp.c (do_writekey): Fixed computation of memmove
523         length.  This led to garbled keys if E was larger than one byte.
524         Thanks to Achim Pietig for hinting at the garbled E.
525
526 2006-06-27  Werner Koch  <wk@g10code.com>
527
528         * gpg.c (reopen_std) [HAVE_W32_SYSTEM]: Do not use it.
529
530 2006-06-22  David Shaw  <dshaw@jabberwocky.com>
531
532         * options.h, gpg.c (main), keygen.c (keygen_upd_std_prefs,
533         keygen_add_std_prefs, proc_parameter_file): Add
534         --default-keyserver-url to specify a keyserver URL at key
535         generation time, and "Keyserver:" keyword for doing the same
536         through a batch file.
537
538         * sign.c (do_sign): Accept a truncated hash even for DSA1 keys (be
539         liberal in what you accept, etc).
540
541 2006-06-12  David Shaw  <dshaw@jabberwocky.com>
542
543         * import.c (import_one): Add a flag (from_sk) so we don't check
544         prefs on an autoconverted public key.  The check should only
545         happen on the sk side.  Noted by Dirk Traulsen.
546
547 2006-06-09  David Shaw  <dshaw@jabberwocky.com>
548
549         * keygen.c (gen_card_key): Add optional argument to return a
550         pointer (not a copy) of the stub secret key for the secret key we
551         just generated on the card.
552         (generate_card_subkeypair): Use it here so that the signing key on
553         the card can use the card to generate the 0x19 backsig on the
554         primary key.  Noted by Janko Heilgeist and Jonas Oberg.
555
556         * parse-packet.c (parse_user_id): Cap the user ID size at 2048
557         bytes.  This prevents a memory allocation attack with a very large
558         user ID.  A very large packet length could even cause the
559         allocation (a u32) to wrap around to a small number.  Noted by
560         Evgeny Legerov on full-disclosure.
561
562 2006-05-25  David Shaw  <dshaw@jabberwocky.com>
563
564         * keygen.c (gen_dsa): Allow generating DSA2 keys
565         (allow specifying sizes > 1024 when --enable-dsa2 is set).  The
566         size of q is set automatically based on the key size.
567         (ask_keysize, generate_keypair): Ask for DSA size when
568         --enable-dsa2 is set.
569
570 2006-05-24  David Shaw  <dshaw@jabberwocky.com>
571
572         * exec.c (make_tempdir): Fix bug with a temporary directory on
573         Win32 that is over 256 bytes long.  Noted by Israel G. Lugo.
574
575 2006-05-23  David Shaw  <dshaw@jabberwocky.com>
576
577         * gpg.c (reopen_std): New function to reopen fd 0, 1, or 2 if we
578         are called with them closed.  This is to protect our
579         keyring/trustdb files from corruption if they get attached to one
580         of the standard fds.  Print a warning if possible that this has
581         happened, and fail completely if we cannot reopen (should never
582         happen).
583         (main): Call it here.
584
585 2006-05-22  David Shaw  <dshaw@jabberwocky.com>
586
587         * parse-packet.c (dump_sig_subpkt, parse_signature),
588         build-packet.c (build_sig_subpkt_from_sig), getkey.c
589         (fixup_uidnode, merge_selfsigs_main, merge_selfsigs_subkey),
590         keygen.c (keygen_add_key_expire): Fix meaning of key expiration
591         and sig expiration subpackets - zero means "never expire"
592         according to 2440, not "expire instantly".
593
594         * getkey.c (get_pubkey_byname), import.c (import_one): Fix key
595         selection problem when auto-key-locate returns a list of keys, not
596         all of which are usable (revoked, expired, etc).  Noted by Simon
597         Josefsson.
598
599 2006-04-26  David Shaw  <dshaw@jabberwocky.com>
600
601         * keyserver.c (direct_uri_map): New.
602         (keyserver_spawn): Used here to add "_uri" to certain gpgkeys_xxx
603         helpers when the meaning is different if a path is provided
604         (i.e. ldap).
605         (keyserver_import_cert): Show warning if there is a CERT
606         fingerprint, but no --keyserver set.
607
608 2006-04-22  David Shaw  <dshaw@jabberwocky.com>
609
610         * keyserver.c: Fix build problem with platforms that stick libcurl
611         in a place not in the regular include search path.
612
613 2006-04-20  David Shaw  <dshaw@jabberwocky.com>
614
615         * options.h, gpg.c (main): Add --enable-dsa2 and --disable-dsa2.
616         Defaults to disable.
617
618         * pkclist.c (algo_available): If --enable-dsa2 is set, we're
619         allowed to truncate hashes to fit DSA keys.
620
621         * sign.c (match_dsa_hash): New.  Return the best match hash for a
622         given q size.
623         (do_sign, hash_for, sign_file): When signing with a DSA key, if it
624         has q==160, assume it is an old DSA key and don't allow truncation
625         unless --enable-dsa2 is also set.  q!=160 always allows truncation
626         since they must be DSA2 keys.
627         (make_keysig_packet): If the user doesn't specify a
628         --cert-digest-algo, use match_dsa_hash to pick the best hash for
629         key signatures.
630
631 2006-04-19  David Shaw  <dshaw@jabberwocky.com>
632
633         * gpg.c (print_mds), armor.c (armor_filter, parse_hash_header):
634         Add SHA-224.
635
636         * sign.c (write_plaintext_packet), encode.c (encode_simple):
637         Factor common literal packet setup code from here, to...
638
639         * main.h, plaintext.c (setup_plaintext_name): Here. New. Make sure
640         the literal packet filename field is UTF-8 encoded.
641
642         * options.h, gpg.c (main): Make sure --set-filename is UTF-8
643         encoded and note when filenames are already UTF-8.
644
645 2006-04-18  David Shaw  <dshaw@jabberwocky.com>
646
647         * keyedit.c (menu_backsign): Give some more verbose errors when we
648         have no need to backsign.
649
650 2006-04-11  David Shaw  <dshaw@jabberwocky.com>
651
652         * options.skel, photoid.c (get_default_photo_command): Find an
653         image viewer at runtime.  Seems FC5 doesn't have xloadimage.
654
655 2006-04-08  David Shaw  <dshaw@jabberwocky.com>
656
657         * getkey.c (parse_auto_key_locate): Fix dupe-removal code.
658
659         * keyedit.c (menu_backsign): Allow backsigning even if the secret
660         subkey doesn't have a binding signature.
661
662         * armor.c (radix64_read): Don't report EOF when reading only a pad
663         (=) character.  The EOF actually starts after the pad.
664
665         * gpg.c (main): Make --export, --send-keys, --recv-keys,
666         --refresh-keys, and --fetch-keys follow their arguments from left
667         to right.  Suggested by Peter Palfrader.
668
669 2006-04-08  Werner Koch  <wk@g10code.com>
670
671         * mainproc.c (list_node): Print ring trust value only if not empty
672         and --with-colons has been given.
673
674 2006-04-05  Werner Koch  <wk@g10code.com>
675
676         * getkey.c (user_id_not_found_utf8): New.
677         (get_primary_uid, get_user_id): Use it.  Fixes Debian bug #205028
678         in the right way.
679
680 2006-04-03  Werner Koch  <wk@g10code.com>
681
682         * import.c (check_prefs_warning): Merged strings for better
683         translation.
684
685         * gpg.c (main) [__GLIBC__]: Default to libpcsclite.so.1.
686
687         * status.h, status.c (STATUS_BEGIN_SIGNING): New.  Suggested by
688         Daiki Ueno.
689         * textfilter.c (copy_clearsig_text): Issue new status code.
690         * sign.c (sign_file, sign_symencrypt_file): Ditto.
691
692 2006-03-31  David Shaw  <dshaw@jabberwocky.com>
693
694         * getkey.c (get_pubkey_byname): Fix missing auto_key_retrieve
695         unlock.  Fix strings to not start with a capital letter as per
696         convention.
697
698 2006-03-30  David Shaw  <dshaw@jabberwocky.com>
699
700         * main.h, seskey.c (encode_md_value): Modify to allow a q size
701         greater than 160 bits as per DSA2.  This will allow us to verify
702         and issue DSA2 signatures for some backwards compatibility once we
703         start generating DSA2 keys.     
704         * sign.c (do_sign), sig-check.c (do_check): Change all callers.
705
706         * sign.c (do_sign): Enforce the 160-bit check for new signatures
707         here since encode_md_value can handle non-160-bit digests now.
708         This will need to come out once the standard for DSA2 is firmed
709         up.
710
711 2006-03-28  Werner Koch  <wk@g10code.com>
712
713         * openfile.c (overwrite_filep): Fix small cpr issue.  Noted by
714         Daiki Ueno.
715
716 2006-03-22  David Shaw  <dshaw@jabberwocky.com>
717
718         * getkey.c (parse_auto_key_locate): Silently strip out duplicates
719         rather than causing an error.
720
721 2006-03-22  Werner Koch  <wk@g10code.com>
722
723         * sig-check.c (signature_check2): Changed warning URL to include faq.
724         * misc.c (idea_cipher_warn): Ditto.
725
726 2006-03-22  David Shaw  <dshaw@jabberwocky.com>
727
728         * mainproc.c (get_pka_address): Fix bug introduced as part of
729         sig_to_notation conversion.  Noted by Peter Palfradrer.
730
731 2006-03-21  Werner Koch  <wk@g10code.com>
732
733         * cardglue.c (agent_scd_pksign): Allow the use of ripemd-160 along
734         with scdaemon.
735
736 2006-03-16  David Shaw  <dshaw@jabberwocky.com>
737
738         * keyserver.c (keyserver_import_cert): Handle the IPGP CERT type
739         for both the fingerprint alone, and fingerprint+URL cases.
740
741         * getkey.c (get_pubkey_byname): Minor cleanup.
742
743 2006-03-13  David Shaw  <dshaw@jabberwocky.com>
744
745         * keyserver-internal.h, keyserver.c (keyserver_import_pka): Use
746         the same API as the other auto-key-locate fetchers.
747
748         * getkey.c (get_pubkey_byname): Use the fingerprint of the key
749         that we actually fetched.  This helps prevent problems where the
750         key that we fetched doesn't have the same name that we used to
751         fetch it.  In the case of CERT and PKA, this is an actual security
752         requirement as the URL might point to a key put in by an attacker.
753         By forcing the use of the fingerprint, we won't use the attacker's
754         key here.
755
756         * keyserver-internal.h, keyserver.c (keyserver_spawn,
757         keyserver_work, keyserver_import_cert, keyserver_import_name,
758         keyserver_import_ldap): Pass fingerprint info through.
759
760         * main.h, import.c (import_one): Optionally return the fingerprint
761         of the key being imported.
762         (import_keys_internal, import_keys_stream, import): Change all
763         callers.
764
765 2006-03-12  David Shaw  <dshaw@jabberwocky.com>
766
767         * sig-check.c (signature_check2): Print the backsig warning when
768         there is no backsig present.  Give a URL for more information.
769
770         * keyedit.c (menu_backsign): Small tweak to work properly with
771         keys originally generated with older GnuPGs that included comments
772         in the secret keys.
773
774 2006-03-10  Werner Koch  <wk@g10code.com>
775
776         * card-util.c (get_manufacturer): Added Vendor 3
777
778 2006-03-09  David Shaw  <dshaw@jabberwocky.com>
779
780         * build-packet.c (string_to_notation): Add ability to indicate a
781         notation to be deleted with a '-' prefix.
782
783         * keyedit.c (menu_set_notation): Use it here to allow deleting a
784         notation marked with '-'.  This works with either "-notation" or
785         "-notation=value".
786
787 2006-03-08  David Shaw  <dshaw@jabberwocky.com>
788
789         * keyedit.c (menu_set_notation): New function to set notations on
790         self-signatures.
791         (keyedit_menu): Call it here.
792         (tty_print_notations): Helper.
793         (show_prefs): Show notations in "showpref".
794
795         * mainproc.c (get_pka_address)
796         * keylist.c (show_notation): Remove
797         duplicate code by using notation functions.
798
799         * packet.h, build-packet.c (sig_to_notation)
800         * keygen.c (keygen_add_notations): Provide printable text for
801         non-human-readable notation values.
802         
803         * packet.h, build-packet.c (sig_to_notation)
804         * keygen.c (keygen_add_notations): Tweak to handle non-human-readable
805         notation values.
806
807         * options.h, sign.c (mk_notation_policy_etc)
808         * gpg.c (add_notation_data): Use it here for the various notation
809         commands.
810
811         * packet.h, main.h, keygen.c (keygen_add_notations)
812         * build-packet.c (string_to_notation, sig_to_notation)
813         (free_notation): New "one stop shopping" functions to handle
814         notations and start removing some code duplication.
815
816 2006-03-08  Werner Koch  <wk@g10code.com>
817
818         * mainproc.c (do_check_sig): Use log_error for standalone revocations.
819
820 2006-03-07  David Shaw  <dshaw@jabberwocky.com>
821
822         * options.h, mainproc.c (check_sig_and_print), gpg.c (main):
823         pka-lookups, not pka-lookup.
824
825         * options.h, gpg.c (main), keyedit.c [cmds], sig-check.c
826         (signature_check2): Rename "backsign" to "cross-certify" as a more
827         accurate name.
828
829         * options.h, gpg.c (main, parse_trust_model), pkclist.c
830         (check_signatures_trust), mainproc.c (check_sig_and_print,
831         pka_uri_from_sig), trustdb.c (init_trustdb): Some tweaks to PKA so
832         that it is a verify-option now.
833
834 2006-03-07  Werner Koch  <wk@g10code.com>
835
836         * mainproc.c (proc_signature_packets): Return any_sig_seen to caller.
837         (check_sig_and_print): Option to partly allow the old behaviour.
838         * gpg.c: New option --allow-multisig-verification.
839
840 2006-03-06  David Shaw  <dshaw@jabberwocky.com>
841
842         * sign.c (make_keysig_packet): Don't use MD5 for a RSA_S key as
843         that is not a PGP 2.x algorithm.
844
845         * mainproc.c (proc_compressed): "Uncompressed" is not a valid
846         compression algorithm.
847
848 2006-03-06  Werner Koch  <wk@g10code.com>
849
850         * mainproc.c (check_sig_and_print): Made the composition test more
851         tight.  This is due to another bug report by Tavis Ormandy.
852         (add_onepass_sig): Simplified.
853
854 2006-03-05  Werner Koch  <wk@g10code.com>
855
856         * plaintext.c (handle_plaintext): Replace assert by explict error
857         conflict message.  Reported by Tavis Ormandy.
858
859 2006-03-02  Werner Koch  <wk@g10code.com>
860
861         * cardglue.c (check_card_serialno): Don't ask in batch mode.
862
863 2006-03-01  David Shaw  <dshaw@jabberwocky.com>
864
865         * getkey.c (parse_auto_key_locate): Error if the user selects
866         "cert" or "pka" when those features are disabled.
867
868         * misc.c (has_invalid_email_chars): Fix some C syntax that broke
869         the compilers on SGI IRIX MIPS and Compaq/DEC OSF/1 Alpha.  Noted
870         by Nelson H. F. Beebe.
871
872 2006-02-27  David Shaw  <dshaw@jabberwocky.com>
873
874         * options.skel: Document auto-key-locate and give a pointer to
875         Simon Josefsson's page for CERT.
876
877 2006-02-24  David Shaw  <dshaw@jabberwocky.com>
878
879         * keydb.h, getkey.c (release_akl), gpg.c (main): Add
880         --no-auto-key-locate.
881
882         * options.h, gpg.c (main): Keep track of each keyserver registered
883         so we can match on them later.
884
885         * keyserver-internal.h, keyserver.c (cmp_keyserver_spec,
886         keyserver_match), gpgv.c: New.  Find a keyserver that matches ours
887         and return its spec.
888
889         * getkey.c (get_pubkey_byname): Use it here to get the
890         per-keyserver options from an earlier keyserver.
891
892 2006-02-23  David Shaw  <dshaw@jabberwocky.com>
893
894         * keyserver.c (parse_keyserver_options): Only change max_cert if
895         it is used.
896
897         * options.c, gpg.c (main), keyserver.c (keyserver_spawn): No
898         special treatment of include-revoked, include-subkeys, and
899         try-dns-srv.  These are keyserver features, and GPG shouldn't get
900         involved here.
901
902         * keyserver.c (parse_keyserver_uri, add_canonical_option): Always
903         append options to the list, as ordering may be significant to the
904         user.
905
906         * gpg.c (add_notation_data): Fix reversed logic for isascii check
907         when adding notations.  Noted by Christian Biere.
908
909         * options.h, keyserver.c (add_canonical_option): New.
910         (parse_keyserver_options): Moved from here.
911         (parse_keyserver_uri): Use it here so each keyserver can have some
912         private options in addition to the main keyserver-options
913         (e.g. per-keyserver auth).
914
915 2006-02-22  David Shaw  <dshaw@jabberwocky.com>
916
917         * options.h, keyserver-internal.h, keyserver.c
918         (keyserver_import_name), getkey.c (free_akl,
919         parse_auto_key_locate, get_pubkey_byname): The obvious next step:
920         allow arbitrary keyservers in the auto-key-locate list.
921
922         * options.h, keyserver.c (parse_keyserver_options): Remove
923         auto-cert-retrieve as it is no longer meaningful.  Add
924         max-cert-size to allow users to pick a max key size retrieved via
925         CERT.
926
927         * options.h, gpg.c (main), mainproc.c (check_sig_and_print),
928         keyserver.c (keyserver_opts): Rename auto-pka-retrieve to
929         honor-pka-record to be consistent with honor-keyserver-url.
930
931         * options.h, keydb.h, g10.c (main), getkey.c
932         (parse_auto_key_locate): Parse a list of key access methods.
933         (get_pubkey_byname): Walk the list here to try and retrieve keys
934         we don't have locally.
935
936 2006-02-21  David Shaw  <dshaw@jabberwocky.com>
937
938         * getkey.c (get_pubkey_byname): Fix minor security problem with
939         PKA when importing at -r time.  The URL in the PKA record may
940         point to a key put in by an attacker.  Fix is to use the
941         fingerprint from the PKA record as the recipient.  This ensures
942         that the PKA record is followed.
943
944         * keyserver-internal.h, keyserver.c (keyserver_import_pka): Return
945         the fingerprint we requested.
946
947         * gpgv.c: Stub keyserver_import_ldap.
948
949         * keyserver-internal.h, keyserver.c (keyserver_import_ldap):
950         Import using the PGP Universal trick of asking
951         ldap://keys.(maildomain) for the key.
952
953 2006-02-20  David Shaw  <dshaw@jabberwocky.com>
954
955         * keyserver.c (parse_keyserver_uri): Include the scheme in the uri
956         even when we've assumed "hkp" when there was no scheme.
957
958 2006-02-20  Werner Koch  <wk@g10code.com>
959
960         * apdu.c (open_pcsc_reader): As a precaution set LIST to NULL
961         after free.
962
963 2006-02-14  Werner Koch  <wk@gnupg.org>
964
965         * verify.c (verify_signatures): Print warning also for NO_DATA.
966
967         * mainproc.c (struct mainproc_context): New field any_sig_seen.
968         (add_signature): Set it.
969         (proc_signature_packets): Test and return NO_DATA.
970
971 2006-02-09  Werner Koch  <wk@g10code.com>
972
973         * gpg.c (main) <oLockNever>: Disable random locking.
974
975 2006-02-06  Werner Koch  <wk@g10code.com>
976
977         * ccid-driver.c, ccid-driver.h: Updated from GnuPG 1.9.  Changes:
978         * ccid-driver.h (CCID_DRIVER_ERR_NO_KEYPAD): New.
979         * ccid-driver.c (send_escape_cmd): New args RESULT, RESULTLEN and
980         RESULTMAX.  Changed all callers.
981         (ccid_transceive_escape): New.
982         * ccid-driver.c (special_transport): New
983         (ccid_open_reader, do_close_reader, ccid_shutdown_reader)
984         (bulk_out, bulk_in): Add support for CardMan 4040 reader.
985         * ccid-driver.c (scan_or_find_devices): Factored most code out to
986         (scan_or_find_usb_device): .. new.
987         (make_reader_id): Fixed vendor mask.
988
989 2006-01-24  David Shaw  <dshaw@jabberwocky.com>
990
991         * keyserver.c (parse_keyserver_uri): If there is a path present,
992         set the direct_uri flag so the right keyserver helper is run.
993
994 2006-01-22  David Shaw  <dshaw@jabberwocky.com>
995
996         * keyserver.c (keyserver_spawn): Include the EXEEXT so we can find
997         keyserver helpers on systems that use extensions.
998
999         * misc.c (path_access) [HAVE_DRIVE_LETTERS]: Do the right thing
1000         with drive letter systems.
1001
1002 2006-01-17  David Shaw  <dshaw@jabberwocky.com>
1003
1004         * keydb.h, passphrase.c (next_to_last_passphrase): New.  "Touch" a
1005         passphrase as if it was used (move from next_pw to last_pw).
1006
1007         * pubkey-enc.c (get_session_key): Use it here to handle the case
1008         where a passphrase happens to be correct for a secret key, but yet
1009         that key isn't the anonymous recipient (i.e. the secret key could
1010         be decrypted, but not the session key).  This also handles the
1011         case where a secret key is located on a card and a secret key with
1012         no passphrase.  Note this does not fix bug 594 (anonymous
1013         recipients on smartcard do not work) - it just prevents the
1014         anonymous search from stopping when the card is encountered.
1015
1016 2006-01-07  David Shaw  <dshaw@jabberwocky.com>
1017
1018         * keyserver.c (keyserver_refresh): Fix problem when more than one
1019         key in a refresh batch has a preferred keyserver set.  Noted by
1020         Nicolas Rachinsky.
1021
1022 2006-01-01  David Shaw  <dshaw@jabberwocky.com>
1023
1024         * mainproc.c (check_sig_and_print), keyserver.c
1025         (keyserver_import_pka), card-util.c (fetch_url): Always require a
1026         scheme:// for keyserver URLs except when used as part of the
1027         --keyserver command for backwards compatibility.
1028
1029         * sign.c (write_signature_packets): Lost a digest_algo line.
1030
1031         * sign.c (hash_for): Add code to detect if the sk lives on a smart
1032         card.  If it does, only allow 160-bit hashes, a la DSA.  This
1033         involves passing the *sk in, so change all callers.  This is
1034         correct for today, given the current 160-bit q in DSA, and the
1035         current SHA-1/RIPEMD160 support in the openpgp card.  It will
1036         almost certainly need changing down the road.
1037
1038         * app-openpgp.c (do_sign): Give user error if hash algorithm is
1039         not supported by the card.
1040
1041 2005-12-23  David Shaw  <dshaw@jabberwocky.com>
1042
1043         * keyserver.c (keyserver_import_pka): New.  Moved from
1044         getkey.c:get_pubkey_byname which was getting crowded.
1045
1046         * keyserver.c (keyserver_import_cert): Import a key found in DNS
1047         via CERT records.  Can handle both the PGP (actual key) and IPGP
1048         (URL) CERT types.
1049
1050         * getkey.c (get_pubkey_byname): Call them both here.
1051
1052         * options.h, keyserver.c (parse_keyserver_options): Add
1053         "auto-cert-retrieve" option with optional max size argument.
1054
1055         * gpgv.c: Stubs.
1056
1057         * keyserver-internal.h, keyserver.c (keyserver_spawn,
1058         keyserver_work, keygerver_getname): New keyserver_getname function
1059         to fetch keys by name.
1060
1061         * getkey.c (get_pubkey_byname): Call it here to enable locating
1062         keys by full mailbox from a keyserver a la PKA.  Try PKA first,
1063         though, as it is likely to be faster.
1064
1065 2005-12-20  Werner Koch  <wk@g10code.com>
1066
1067         * gpg.c: New option --allow-pka-lookup.
1068         (parse_trust_model): Add "+pka" variants.
1069         (main): Make KEYSERVER_AUTO_PKA_RETRIEVE teh default.
1070         * options.h (opt): New fields PKA_TRUST_INCREASE and
1071         ALLOW_PKA_LOOKUP.
1072         * status.h (STATUS_PKA_TRUST_BAD, STATUS_PKA_TRUST_GOOD): New.
1073         * pkclist.c (check_signatures_trust): Increase trust due to valid
1074         PKA only if that new option has been set.  Issue new status lines.
1075         * trustdb.c (init_trustdb): Print info if this option is active.
1076         * getkey.c (get_pubkey_byname): Honor allow-pka-lookup.
1077         * mainproc.c (pka_uri_from_sig): Ditto.
1078         
1079         * trustdb.c (validate_keys): Print no "ultimately trusted keys
1080         found" only in non-quiet mode.
1081
1082 2005-12-19  David Shaw  <dshaw@jabberwocky.com>
1083
1084         * getkey.c (merge_selfsigs_main): All primary keys can certify.
1085
1086 2005-12-18  David Shaw  <dshaw@jabberwocky.com>
1087
1088         * gpg.c (main): Restore convert-sk-to-pk as programs rely on it.
1089
1090         * keyid.c (usagestr_from_pk): Remove special PUBKEY_USAGE_CERT
1091         flag.  It's no longer needed.
1092
1093 2005-12-14  David Shaw  <dshaw@jabberwocky.com>
1094
1095         * gpg.c (main): Don't default to import-options convert-sk-to-pk.
1096         It causes confusing warning messages when importing a PGP-exported
1097         key that contains a secret key without selfsigs followed by the
1098         public key.
1099
1100 2005-12-08  David Shaw  <dshaw@jabberwocky.com>
1101
1102         * keyserver.c (keyserver_fetch): Switch on fast-import before we
1103         --fetch-keys so we don't rebuild the trustdb after each fetch.
1104
1105 2005-12-08  Werner Koch  <wk@g10code.com>
1106
1107         * gpg.c (main): Check for DBCS lead byte when converting the
1108         homedir.  By Kazuyoshi Kakihara. Fixes PR561.
1109
1110         * keyserver.c (keyserver_fetch): Made strings translatable.
1111
1112 2005-12-08  David Shaw  <dshaw@jabberwocky.com>
1113
1114         * options.h, keyserver.c (curl_cant_handle, keyserver_spawn)
1115         (keyserver_fetch): Set a flag to indicate that we're doing a direct
1116         URI fetch so we can differentiate between a keyserver operation
1117         and a URI fetch for protocols like LDAP that can do either.
1118
1119 2005-12-07  David Shaw  <dshaw@jabberwocky.com>
1120
1121         * keyserver.c (keyserver_spawn): Don't print "searching for key
1122         00000000" when fetching a URI.
1123
1124         * keyserver-internal.h, keyserver.c (keyserver_fetch): New.  Fetch
1125         an arbitrary URI using the keyserver helpers.
1126
1127         * gpg.c (main): Call it from here for --fetch-keys.
1128
1129 2005-12-07  Werner Koch  <wk@g10code.com>
1130
1131         * pkclist.c (do_we_trust): Add NOTREACHED comment.
1132
1133 2005-11-20  David Shaw  <dshaw@jabberwocky.com>
1134
1135         * main.h, keylist.c (print_revokers): New.  Print the "rvk"
1136         designated revoker record.  Moved from
1137         keyedit.c:show_key_with_all_names_colon.
1138
1139         * keylist.c (list_keyblock_colon): Use it here ...
1140
1141         * keyedit.c (show_key_with_all_names_colon): ... and here.
1142
1143 2005-11-19  David Shaw  <dshaw@jabberwocky.com>
1144
1145         * free-packet.c (copy_secret_key): Copy secret key into secure
1146         memory since we may unprotect it.
1147
1148         * main.h, g10.c (main), revoke.c (gen_desig_revoke): Add local
1149         user support so users can use -u with --desig-revoke.  This
1150         bypasses the interactive walk over the revocation keys.
1151
1152 2005-11-17  David Shaw  <dshaw@jabberwocky.com>
1153
1154         * keyedit.c (keyedit_menu, menu_clean): Simplify clean options to
1155         just "clean", and add "minimize".
1156
1157         * import.c (parse_import_options): Make help text match the export
1158         versions of the options.
1159
1160         * options.h, export.c (parse_export_options, do_export_stream):
1161         Reduce clean options to two: clean and minimize.
1162
1163         * trustdb.h, trustdb.c (clean_one_uid): New function that joins
1164         uid and sig cleaning into one for a simple API outside trustdb.
1165
1166 2005-11-13  David Shaw  <dshaw@jabberwocky.com>
1167
1168         * armor.c (parse_header_line): A fussy bit of 2440: header lines
1169         are delimited with a colon-space pair.  Therefore a line such as
1170         "Comment: " (with a trailing space) is actually legal, albeit not
1171         particularly useful.
1172
1173 2005-11-11  David Shaw  <dshaw@jabberwocky.com>
1174
1175         * trustdb.h, trustdb.c (clean_key): New function to handle key
1176         cleaning from one convenient place.
1177
1178         * options.h, import.c (parse_import_options,
1179         clean_sigs_from_all_uids, import_one): Reduce clean options to
1180         two: clean and minimize.
1181
1182         * parse-packet.c (setup_user_id): Remove.
1183         (parse_user_id, parse_attribute): Just use xmalloc_clear instead.
1184
1185         * trustdb.c (clean_uid_from_key, clean_uids_from_key):
1186         Significantly simpler implementation.
1187
1188 2005-11-10  David Shaw  <dshaw@jabberwocky.com>
1189
1190         * keyedit.c (keyedit_menu, menu_clean_sigs_from_uids): Add
1191         "minimize" command.
1192
1193         * packet.h, keyedit.c (menu_clean_uids_from_key), trustdb.c
1194         (clean_uids_from_key): Fix display bug where sigs cleaned for
1195         other reasons caused a uid to appear as if it had been compacted.
1196
1197         * packet.h: Move some flags to a bitfield.  Change all callers.
1198
1199         * options.h, import.c (parse_import_options,
1200         clean_sigs_from_all_uids, import_one): Add import-minimal option.
1201         Similar to export-minimal, except it works on the way in.
1202
1203         * trustdb.h, trustdb.c (clean_sigs_from_uid): Add flag to remove
1204         all non-selfsigs from key during cleaning.  Change all callers.
1205
1206         * export.c (do_export_stream): Use it here for export-minimal so
1207         we don't need additional minimize code in the export path.
1208
1209 2005-11-06  David Shaw  <dshaw@jabberwocky.com>
1210
1211         * options.skel: Add a section for --encrypt-to.  This is Debian
1212         bug 336211 by Javier Fernández-Sanguino Peña.
1213
1214 2005-11-05  David Shaw  <dshaw@jabberwocky.com>
1215
1216         * Makefile.am: Include @LIBUSB_CPPFLAGS@ in our CPPFLAGS.
1217         Strictly speaking this should be only in gpg_CPPFLAGS, but then we
1218         have to compile everything twice for gpg and gpgv.
1219
1220         * apdu.c (open_pcsc_reader): Fix double free.
1221
1222         * gpg.c (main) [__APPLE__]: Default the PCSC driver to the OS X
1223         location.  Suggested by Patty A. Hardy.
1224
1225 2005-11-02  David Shaw  <dshaw@jabberwocky.com>
1226
1227         * trustdb.c (clean_sigs_from_uid): Include sigs from unavailable
1228         keys in the sigs that are cleaned.  Suggested by Dirk Traulsen and
1229         many others.
1230
1231 2005-11-01  David Shaw  <dshaw@jabberwocky.com>
1232
1233         * import.c (import_one): Do collapse_uids() before we do any
1234         cleaning so keyserver mangled keys with doubled user IDs can be
1235         properly cleaned - possibly sigs on the different user IDs cancel
1236         each other out.
1237
1238         * import.c (parse_import_options), export.c
1239         (parse_export_options): List "xxx-clean" before the longer options
1240         so we don't end up with a partial match on the longer options.
1241
1242         * trustdb.c (clean_uids_from_key): Return proper number of cleaned
1243         user IDs.  Don't count user IDs as cleaned unless we actually
1244         delete something.
1245
1246 2005-10-27  David Shaw  <dshaw@jabberwocky.com>
1247
1248         * keyedit.c (menu_addrevoker), getkey.c (finish_lookup): Fix
1249         problem with adding a cert-only designated revoker.  Code was
1250         looking for a key with sign ability, and not cert ability.  Noted
1251         by Timo Schulz.
1252
1253 2005-10-27  Werner Koch  <wk@g10code.com>
1254
1255         * gpg.c [__CYGWIN__]: Set default driver to winscard.dll.
1256
1257         * apdu.c, apdu.h: Updated from gnupg 1.9.  Changes are:
1258         * apdu.c [__CYGWIN__]: Make cygwin environment similar to _WIN32.
1259         Suggested by John P. Clizbe.
1260         * apdu.h (SW_HOST_NO_KEYPAD): New.
1261         * apdu.c (host_sw_string): Support new code. 
1262         (reader_table_s): New field CHECK_KEYPAD.
1263         (new_reader_slot, open_ct_reader, open_pcsc_reader) 
1264         (open_ccid_reader, open_rapdu_reader): Initialize it.
1265         (check_ccid_keypad): New.
1266         (apdu_check_keypad): New.
1267         (apdu_send_le): Factored all code out to ...
1268         (send_le): .. new.  Takes an additional arg; changed all callers
1269         of the orginal function to use this one with a NULL for the new
1270         arg.
1271         (apdu_send_simple_kp): New.
1272         (ct_send_apdu, pcsc_send_apdu, my_rapdu_send_apdu) 
1273         (send_apdu_ccid): New arg PININFO.
1274         (send_apdu_ccid): Use the new arg.
1275
1276 2005-10-26  David Shaw  <dshaw@jabberwocky.com>
1277
1278         * keygen.c (proc_parameter_file): Default key and subkey usage
1279         flags to algo capabilities if parameter file doesn't specify them.
1280         Noted by Timo Schulz.
1281
1282 2005-10-18  Werner Koch  <wk@g10code.com>
1283
1284         * cardglue.c (pin_cb): Fixed prompt for repeated PIN.  Return
1285         G10ERR_CANCELED and not just -1.
1286         (status_sc_op_failure): New.  Use it where we issue that status.
1287         (pin_cb): Append serial number to the need-pin status message.
1288         (agent_scd_change_pin): Add arg SERIALNO.  Changed all callers.
1289         (agent_scd_writekey): Ditto.
1290         (agent_scd_setattr): Ditto.
1291         (agent_scd_genkey): Ditto.
1292         (agent_scd_checkpin): Pass serialno to the pin_cb.
1293
1294         * keygen.c (parse_expire_string): Allow setting the expire
1295         interval using a "seconds=<n>" syntax.  This is useful for
1296         debugging.
1297
1298 2005-10-17  Werner Koch  <wk@g10code.com>
1299
1300         * export.c (do_export_stream): Factored some code out to ...
1301         (skip_subkey_p): .. new.
1302         (subkey_in_list_p, release_subkey_list): New.
1303         (new_subkey_list_item): New. 
1304         (do_export_stream): Export exactly specified subkeys into one
1305         keyblock.
1306
1307 2005-10-13  David Shaw  <dshaw@jabberwocky.com>
1308
1309         * keyedit.c (keyedit_menu, menu_backsign): New "backsign" command
1310         to add 0x19 backsigs to old keys that don't have them.
1311
1312         * misc.c (parse_options): Fix build warning.
1313
1314         * main.h, keygen.c (make_backsig): Make public.
1315
1316 2005-10-12  David Shaw  <dshaw@jabberwocky.com>
1317
1318         * options.h, getkey.c (merge_selfsigs_subkey), gpg.c (main),
1319         sig-check.c (signature_check2): Add --require-backsigs and
1320         --no-require-backsigs.  Currently defaults to
1321         --no-require-backsigs.
1322
1323 2005-10-11  David Shaw  <dshaw@jabberwocky.com>
1324
1325         * getkey.c (merge_selfsigs_subkey), sig-check.c
1326         (signature_check2), keygen.c (make_backsig): Did some backsig
1327         interop testing with the PGP folks.  All is well, so I'm turning
1328         generation of backsigs on for new keys.  Checking for backsigs on
1329         verification is still off.
1330
1331 2005-10-05  Werner Koch  <wk@g10code.com>
1332
1333         * g10.c: Renamed to ..
1334         * gpg.c: ..this.
1335         * Makefile.am: Adjusted accordingly.
1336
1337 2005-09-22  Werner Koch  <wk@g10code.com>
1338
1339         * sign.c (write_plaintext_packet): Don't print an empty file
1340         warning if the file is actually too large.
1341         * encode.c (encode_simple,encode_crypt): Ditto.
1342         * progress.c (handle_progress): Adjusted for iobuf_get_filelength
1343         change.
1344         * photoid.c (generate_photo_id): Ditto.
1345
1346 2005-09-20  Werner Koch  <wk@g10code.com>
1347
1348         * mainproc.c (proc_symkey_enc): Take care of a canceled passphrase
1349         prompt.
1350
1351 2005-09-19  David Shaw  <dshaw@jabberwocky.com>
1352
1353         * keylist.c (reorder_keyblock, do_reorder_keyblock): Reorder
1354         attribute IDs as well as regular text IDs.
1355
1356         * plaintext.c (ask_for_detached_datafile): Use make_filename() on
1357         filename so tilde expansion works.
1358
1359 2005-09-14  David Shaw  <dshaw@jabberwocky.com>
1360
1361         * main.h, misc.c (parse_options): Add the ability to have help
1362         strings in xxx-options commands.
1363
1364         * keyserver.c (keyserver_opts), import.c (parse_import_options),
1365         export.c (parse_export_options), g10.c (parse_list_options, main):
1366         Add help strings to xxx-options.
1367
1368 2005-09-10  David Shaw  <dshaw@jabberwocky.com>
1369
1370         * keyedit.c (show_names): Moved name display code out from
1371         show_key_with_all_names.
1372         (keyedit_menu): Call it here for pref and showpref so they can
1373         show only the selected user ID.  Suggested by Timo Schulz.
1374
1375 2005-09-07  Werner Koch  <wk@g10code.com>
1376
1377         * cardglue.h (GPG_ERR_TOO_LARGE): New.
1378
1379         * apdu.c, apdu.h, iso7816.c, iso7816.h
1380         * ccid-driver.c, ccid-driver.h: Updated from GnuPG 1.9 source.
1381         Changes are:
1382         * iso7816.c (iso7816_select_path): New.
1383         * iso7816.c (iso7816_read_binary): Use Le=0 when reading all
1384         data.  Handle 6C00 error and take 6B00 as indication for EOF.
1385         * apdu.h (SW_EXACT_LENGTH_P): New.
1386         * apdu.c (new_reader_slot, reset_pcsc_reader, pcsc_get_status) 
1387         (open_pcsc_reader): Set new reader state IS_T0.
1388         (apdu_send_le): When doing T=0 make sure not to send Lc and Le.
1389         Problem reported by Carl Meijer.
1390         (apdu_send_direct): Initialize RESULTLEN.
1391
1392         * misc.c (parse_options): Allow meta option "help" to list all
1393         options and to exit the program.
1394
1395 2005-09-02  David Shaw  <dshaw@jabberwocky.com>
1396
1397         * parse-packet.c (enum_sig_subpkt, parse_signature,
1398         parse_attribute_subpkts): Make a number of warnings verbose items.
1399         These fire on many slightly mangled keys in the field, so the
1400         warning is becoming burdensome.
1401
1402 2005-09-01  David Shaw  <dshaw@jabberwocky.com>
1403
1404         * photoid.h, photoid.c (generate_photo_id): Allow passing in a
1405         suggested filename.
1406
1407         * keyedit.c (keyedit_menu, menu_adduid): Call it here so "addphoto
1408         filename" works.
1409
1410 2005-08-31  David Shaw  <dshaw@jabberwocky.com>
1411
1412         * photoid.c (generate_photo_id): Enable readline completion and
1413         tilde expansion for the JPEG prompt.
1414
1415 2005-08-30  Werner Koch  <wk@g10code.com>
1416
1417         * passphrase.c (agent_open): Print a warning and not an error in
1418         case of a missing agent.  Should fix Debian bug #325578.
1419
1420 2005-08-26  David Shaw  <dshaw@jabberwocky.com>
1421
1422         * misc.c (openpgp_pk_algo_usage): Default to allowing CERT for
1423         signing algorithms.
1424
1425         * keyedit.c (sign_uids): Don't request a signing key to make a
1426         certification.
1427
1428         * keygen.c (do_add_key_flags): Force the certify flag on for all
1429         primary keys, as the spec requires primary keys must be able to
1430         certify (if nothing else, which key is going to issue the user ID
1431         signature?)
1432         (print_key_flags): Show certify flag.
1433         (ask_key_flags, ask_algo): Don't allow setting the C flag for
1434         subkeys.
1435         
1436         * keyid.c (usagestr_from_pk), getkey.c (parse_key_usage):
1437         Distinguish between a sign/certify key and a certify-only key.
1438
1439         * keyedit.c (ask_revoke_sig): Add a revsig --with-colons mode.
1440         Suggested by Michael Schierl.
1441
1442 2005-08-21  David Shaw  <dshaw@jabberwocky.com>
1443
1444         * Makefile.am: No need to link with curl any longer.
1445
1446         * main.h, misc.c (path_access): New.  Same as access() but does a
1447         PATH search like execlp.
1448
1449         * keyserver.c (curl_can_handle): Removed.  Replaced by...
1450         (curl_cant_handle): We are now relying on curl as the handler of
1451         last resort.  This is necessary because PGP LDAP and curl LDAP are
1452         apples and oranges.
1453         (keyserver_typemap): Only test for ldap and ldaps.
1454         (keyserver_spawn): If a given handler is unusable (as determined
1455         by path_access()) then try gpgkeys_curl.
1456
1457         * exec.h, exec.c (make_tempdir, expand_args, exec_write,
1458         exec_read): Minor cleanup to use bitfield flags instead of a bunch
1459         of integers.
1460
1461 2005-08-20  David Shaw  <dshaw@jabberwocky.com>
1462
1463         * g10.c (main): Add aliases sign-with->local-user and
1464         user->recipient to make switching from PGP command line to GPG
1465         easier.
1466
1467 2005-08-19  David Shaw  <dshaw@jabberwocky.com>
1468
1469         * options.skel: Remove the surfnet LDAP keyserver from the list of
1470         samples since it is being shut down.
1471
1472         * getkey.c (classify_user_id): Disable the '.' and '+' search
1473         modes since they aren't supported yet.
1474
1475 2005-08-05  David Shaw  <dshaw@jabberwocky.com>
1476
1477         * g10.c (main), passphrase.c (set_passphrase_from_string): New
1478         --passphrase command line option.  Only useful in very special
1479         circumstances.
1480
1481 2005-08-05  Werner Koch  <wk@g10code.com>
1482
1483         * gpgv.c (keyserver_import_fprint): New stub.
1484
1485         * keygen.c (ask_user_id): Moved email checking code out to ..
1486         * misc.c (is_valid_mailbox): .. new.
1487         * mainproc.c (get_pka_address): Use it here.
1488         * getkey.c (get_pubkey_byname): Add falback to auto-retrieve a key
1489         via the PKA mechanism.
1490
1491         * options.h (KEYSERVER_AUTO_PKA_RETRIEVE): New.
1492         * keyserver.c (keyserver_opts): Ditto.
1493         * mainproc.c (check_sig_and_print): Use it here to retrieve keys
1494         from a PKA DNS record.
1495
1496         * pkclist.c (build_pk_list): Add comments to this function;
1497         re-indented it.
1498
1499 2005-08-04  David Shaw  <dshaw@jabberwocky.com>
1500
1501         * keygen.c (proc_parameter_file): Sanity check items in keygen
1502         batch file.  Noted by Michael Schierl.
1503
1504         * pkclist.c (do_edit_ownertrust): Don't allow ownertrust level 0.
1505         Noted by Michael Schierl.
1506
1507         * keygen.c (write_keyblock): Don't try and build deleted kbnodes
1508         since we start our tree with one.
1509
1510 2005-08-04  Werner Koch  <wk@g10code.com>
1511
1512         * export.c (do_export_stream): Skip on-card keys when only subkeys
1513         are to be exported.  It does not make sense to replace the on-card
1514         key stub by a no-key stub.
1515
1516         * revoke.c (gen_revoke): Check for non-online keys.
1517
1518         * seckey-cert.c (is_secret_key_protected): Return -3 for
1519         non-online key stubs.  The old code assumes that a protection
1520         algorithm is still set but in some cases this one is 0 and thus it
1521         won't be possible to decide whether it is unprotected or
1522         protected.
1523
1524 2005-07-28  Werner Koch  <wk@g10code.com>
1525
1526         * Makefile.am (other_libs): Add SRVLIBS.
1527
1528         * parse-packet.c (can_handle_critical_notation): We know about
1529         pka-address@gnupg.org.
1530         * packet.h (PKT_signature): New fields PKA_INFO and PKA_TRIED. 
1531         (pka_info_t): New.
1532         * free-packet.c (cp_pka_info): New.
1533         (free_seckey_enc, copy_signature): Support new fields.
1534         * mainproc.c (get_pka_address, pka_uri_from_sig): New.
1535         (check_sig_and_print): Try to get the keyserver from the PKA
1536         record.
1537         * pkclist.c (check_signatures_trust): Adjust the trust based on
1538         the PKA.
1539         * gpgv.c (parse_keyserver_uri): New stub.
1540
1541         * keygen.c (has_invalid_email_chars): Moved to ..
1542         * misc.c (has_invalid_email_chars): .. here and made global.
1543
1544 2005-07-27  Werner Koch  <wk@g10code.com>
1545
1546         * export.c (do_export_stream): Make two strings translatable.
1547
1548 2005-07-26  David Shaw  <dshaw@jabberwocky.com>
1549
1550         * keyserver.c (keyserver_typemap): Special-case LDAP since curl
1551         will report that it can handle it, and we don't want it to.
1552
1553 2005-07-26  Werner Koch  <wk@g10code.com>
1554
1555         * passphrase.c (agent_get_passphrase): Make sure to release the
1556         saved codeset.
1557         (agent_open): Add arg ORIG_CODESET and switch back to it in case
1558         of error.  Changed all callers.
1559
1560 2005-07-22  David Shaw  <dshaw@jabberwocky.com>
1561
1562         * keyedit.c (sign_uids): Don't prompt for setting signature expiry
1563         to match key expiry unless --ask-cert-expire is set.  Suggested by
1564         Peter Palfrader.
1565
1566 2005-07-22  Werner Koch  <wk@g10code.com>
1567
1568         * g10.c, options.h: New option --exit-on-status-write-error.
1569         * status.c (write_status_text): Make use of this option.
1570
1571 2005-07-22  David Shaw  <dshaw@jabberwocky.com>
1572
1573         * options.h, g10.c (main): Removed option --no-interactive-selection.
1574         * keyedit.c (keyedit_menu): Use --interactive to enable the uid
1575         walking when signing a key with no uids specified to sign.
1576
1577         * keylist.c (list_keyblock_print): Fix silly typo.  Noted by Greg
1578         Sabino Mullane.
1579
1580 2005-07-20  Werner Koch  <wk@g10code.com>
1581
1582         * openfile.c (open_outfile): Disable FD caching for created files.
1583         * encode.c (encode_simple, encode_crypt): Disable FD caching for
1584         input files.
1585         * verify.c (verify_one_file): Ditto.
1586         * decrypt.c (decrypt_messages): Ditto. This is bug #479.
1587
1588         * misc.c (get_libexecdir) [W32]: Changed to return the value of
1589         program used to create the process.
1590         * keyserver.c (keyserver_spawn) [DISABLE_KEYSERVER_PATH]: Don't
1591         change the exec-path at all.
1592
1593 2005-07-20  David Shaw  <dshaw@jabberwocky.com>
1594
1595         * keyserver.c (curl_can_handle): New.  Do a runtime check against
1596         libcurl to see if it can handle a particular protocol.
1597         (keyserver_typemap): Call it here.
1598
1599         * Makefile.am: Pull in libcurl for curl_version_info() if used.
1600
1601 2005-07-19  Werner Koch  <wk@g10code.com>
1602
1603         * g10.c, options.h: New option --limit-card-insert-tries.
1604         * cardglue.c (open_card): Use it.
1605
1606         * export.c (parse_export_options): New option
1607         export-reset-subkey-passwd.
1608         (do_export_stream): Implement it.
1609
1610         * misc.c (get_libexecdir): New.
1611         * keyserver.c (keyserver_spawn): Use it
1612
1613 2005-07-18  Werner Koch  <wk@g10code.com>
1614
1615         * tdbio.c (open_db): Check for EROFS.  Suggested by Bryce Nichols.
1616
1617 2005-07-08  David Shaw  <dshaw@jabberwocky.com>
1618
1619         * trustdb.c (clean_uids_from_key): Don't keep a valid selfsig
1620         around when compacting a uid.  There is no reason to make an
1621         attacker's job easier - this way they only have a revocation which
1622         is useless in bringing the uid back.
1623
1624         * keydb.h, kbnode.c (undelete_kbnode): Removed.  No longer needed.
1625
1626         * import.c (chk_self_sigs): Allow a uid revocation to be enough to
1627         allow importing a particular uid (no self sig needed).  This
1628         allows importing compacted uids.
1629
1630 2005-06-20  David Shaw  <dshaw@jabberwocky.com>
1631
1632         * keygen.c (save_unprotected_key_to_card): Better fix for gcc4
1633         warning.
1634
1635 2005-06-20  Werner Koch  <wk@g10code.com>
1636
1637         * g10.c, options.h: New option --no-interactive-selection.
1638         * keyedit.c (keyedit_menu): Use it.
1639
1640 2005-06-18  Werner Koch  <wk@g10code.com>
1641
1642         * parse-packet.c (parse_signature): Use log_info for messages
1643         about missing timestamp or keyid.  In case we don't use that key
1644         there won't be no further error and thus gpg does not need to
1645         return with an error.
1646
1647 2005-06-13  David Shaw  <dshaw@jabberwocky.com>
1648
1649         * keygen.c (save_unprotected_key_to_card): Fix gcc4 warning.
1650
1651         * options.h, import.c (parse_import_options, import_one): Add
1652         import-clean-uids option to automatically compact unusable uids
1653         when importing.  Like import-clean-sigs, this may nodify the local
1654         keyring.
1655
1656         * trustdb.c (clean_uids_from_key): Only allow selfsigs to be a
1657         candidate for re-inclusion.
1658
1659 2005-06-12  David Shaw  <dshaw@jabberwocky.com>
1660
1661         * options.h, import.c (parse_import_options,
1662         clean_sigs_from_all_uids, import_one): Add import-clean-sigs
1663         option to automatically clean a key when importing.  Note that
1664         when importing a key that is already on the local keyring, the
1665         clean applies to the merged key - i.e. existing superceded or
1666         invalid signatures are removed.
1667
1668         * getkey.c (merge_selfsigs_main, merge_selfsigs_subkey): Make sure
1669         that even after keys may be merged together, we only have one
1670         chosen selfsig.
1671
1672 2005-06-09  David Shaw  <dshaw@jabberwocky.com>
1673
1674         * options.h, import.c (parse_import_options, delete_inv_parts):
1675         import-unusable-sigs is now a noop.
1676
1677         * options.h, export.c (do_export_stream), keyedit.c (keyedit_menu,
1678         menu_clean_subkeys_from_key), trustdb.h, trustdb.c
1679         (clean_subkeys_from_key): Remove subkey cleaning function.  It is
1680         of very limited usefulness since it cannot be used on any subkey
1681         that can sign, and can only affect multiple selfsigs on
1682         encryption-only subkeys.
1683
1684         * keydb.h, kbnode.c (undelete_kbnode): New function to undelete a
1685         kbnode.
1686
1687         * trustdb.c (clean_uids_from_key): Further tweak the algorithm so
1688         that the last good selfsig is kept when the chosen selfsig is a
1689         revocation.
1690
1691 2005-06-08  David Shaw  <dshaw@jabberwocky.com>
1692
1693         * trustdb.c (clean_uids_from_key), keyedit.c
1694         (menu_clean_uids_from_key): Tweak algorithm to preserve the last
1695         selfsig which helps prevent uid resurrections.
1696
1697         * getkey.c (fixup_uidnode, merge_selfsigs_main): Handle both
1698         expired and revoked uids in fixup_uidnode().  No need to special
1699         case in merge_selfsigs_main().  This also means that an expired
1700         uid will have its selfsig tagged with chosen_selfsig.
1701
1702 2005-06-07  David Shaw  <dshaw@jabberwocky.com>
1703
1704         * options.h, g10.c (main), export.c (parse_export_options,
1705         do_export_stream): Add export-options export-clean-sigs,
1706         export-clean-uids, export-clean-subkeys, and export-clean which is
1707         all of the above.  Export-minimal is the same except it also
1708         removes all non-selfsigs.  export-unusable-sigs is now a noop.
1709
1710 2005-06-06  Werner Koch  <wk@g10code.com>
1711
1712         * cardglue.c (open_card): Emit new CARDCTRL status 5 for no reader
1713         available.
1714
1715 2005-06-02  Werner Koch  <wk@g10code.com>
1716
1717         * app-openpgp.c (do_writekey): Typo fix.
1718
1719         * status.c, status.h: Removed STATUS_BAD_PASSPHRASE_PIN.
1720
1721 2005-06-01  David Shaw  <dshaw@jabberwocky.com>
1722
1723         * signal.c [HAVE_DOSISH_SYSTEM]: Fix unused function warnings on
1724         mingw32.  Noted by Joe Vender.
1725
1726         * passphrase.c [_WIN32]: Remove unused variables.
1727
1728 2005-05-31  David Shaw  <dshaw@jabberwocky.com>
1729
1730         * keyedit.c (menu_clean_uids_from_key,
1731         menu_clean_subkeys_from_key), trustdb.c (clean_uids_from_key,
1732         clean_subkeys_from_key): Fix mingw32 build warnings.  Noted by Joe
1733         Vender.
1734
1735 2005-05-31  Werner Koch  <wk@g10code.com>
1736
1737         * keydb.h [!ENABLE_AGENT_SUPPORT]: Define dummy types.
1738
1739         * cardglue.c (assuan_strerror, assuan_transact): Dummy functions
1740         if not build with agent support. 
1741
1742         * armor.c (check_input): Don't bail out on invalid header lines
1743         unless in struict rfc2440 mode.  Suggested by Richard Patterson.
1744
1745 2005-05-30  Werner Koch  <wk@g10code.com>
1746
1747         * tlv.c: Add hack to compile without gpg-error.h.
1748
1749 2005-05-30  David Shaw  <dshaw@jabberwocky.com>
1750
1751         * trustdb.h, trustdb.c (clean_subkeys_from_key): New.  Walk
1752         through the subkeys on a key, and mark any that aren't usable for
1753         deletion.  Note that a signing subkey is never marked for deletion
1754         since these keys are still useful after expiration or revocation.
1755
1756         * keyedit.c (menu_clean_subkeys_from_key): New function to call
1757         clean_subkeys_from_key() on a key.  Note that the strings here are
1758         not marked for translation yet.  The UI is still in flux, and
1759         there is no point in annoying the translators twice.
1760         (keyedit_menu): Call it here as part of the "clean" command.
1761
1762 2005-05-29  David Shaw  <dshaw@jabberwocky.com>
1763
1764         * trustdb.h, trustdb.c (clean_uids_from_key): New.  Walk through
1765         the user IDs on a key, and mark any that aren't valid for
1766         deletion.
1767
1768         * keyedit.c (menu_clean_uids_from_key): New function to call
1769         clean_uids_from_key() on a key.
1770         (keyedit_menu): Call it from here as part of the "clean" command.
1771
1772 2005-05-26  David Shaw  <dshaw@jabberwocky.com>
1773
1774         * g10.c (main): Default {export|import}-unusable-sigs to off until
1775         the "clean" UI can be finished.
1776
1777 2005-05-24  Werner Koch  <wk@g10code.com>
1778
1779         * passphrase.c (ask_passphrase): Unescape the description string.
1780         * cardglue.c (unescape_status_string): Removed.  Changed all
1781         caller to use ...
1782         * misc.c (unescape_percent_string): New.
1783
1784         * g10.c (add_notation_data): Check number of at-signs.
1785
1786 2005-05-23  Werner Koch  <wk@g10code.com>
1787
1788         * app-openpgp.c, app-common.h: Again updated from gnupg 1.9 CVS.
1789
1790         * cardglue.c (open_card): Check USE_AGENT.
1791         (agent_scd_checkpin): Implemented Assuan part.
1792         (agent_scd_change_pin): Ditto.
1793
1794         * g10.c (main): Option --debug-ccid-driver may now be given
1795         several times increase the debug level.
1796
1797         * ccid-driver.c (parse_ccid_descriptor): Mark SCR335 FW version
1798         5.14 as good.
1799         (do_close_reader): Never do a reset. The caller should instead
1800         make sure that the reader has been closed properly.  The new retry
1801         code in ccid_slot_status will make sure that the readersatrts up
1802         fine even if the last process didn't closed the USB connection
1803         properly.
1804         (ccid_get_atr): For certain readers try switching to ISO mode.
1805         Thanks to Ludovic Rousseau for this hint and the magic numbers.
1806         (print_command_failed): New.
1807         (bulk_in): Use it here. Add new arg NO_DEBUG.
1808         (ccid_slot_status): Disabled debugging.
1809
1810 2005-05-21  Werner Koch  <wk@g10code.com>
1811
1812         * cardglue.c (send_status_info): Make CTRL optional.
1813         (agent_scd_writekey, inq_writekey_parms): New.
1814         (agent_openpgp_storekey): Removed.
1815         * cardglue.h: Add a few more error code mappings.
1816         * keygen.c (copy_mpi): Removed.
1817         (save_unprotected_key_to_card): Changed to use agent_scd_writekey.
1818         * app-common.h, app-openpgp.c, tlv.c, tlv.h: Updated from newer
1819         version in gnupg 1.9 CVS.
1820
1821 2005-05-20  Werner Koch  <wk@g10code.com>
1822
1823         * ccid-driver.c (ccid_transceive): Arghhh.  The seqno is another
1824         bit in the R-block than in the I block, this was wrong at one
1825         place. Fixes bug #419 and hopefully several others.
1826
1827 2005-05-19  Werner Koch  <wk@g10code.com>
1828
1829         * app-common.h, app-openpgp.c, tlv.c, tlv.h: Updated from newer
1830         version in gnupg 1.9 CVS.
1831
1832 2005-05-18  Werner Koch  <wk@g10code.com>
1833
1834         * passphrase.c (agent_open): Made global and add arg TRY.
1835         (agent_close): Made global.
1836
1837         * app-common.h (app_t): Add a field to store the Assuan context.
1838
1839 2005-05-13  David Shaw  <dshaw@jabberwocky.com>
1840
1841         * build-packet.c (do_comment): Removed.
1842         (build_packet): Ignore comment packets.
1843
1844         * export.c (do_export_stream): Don't export comment packets any
1845         longer.
1846
1847         * options.h, g10.c (main): Remove --sk-comments and
1848         --no-sk-comments options, and replace with no-op.
1849
1850 2005-05-11  David Shaw  <dshaw@jabberwocky.com>
1851
1852         * keygen.c (write_selfsigs): Rename from write_selfsig.  Write the
1853         same selfsig into both the pk and sk, so that someone importing
1854         their sk (which will get an autoconvert to the pk) won't end up
1855         with two selfsigs.
1856         (do_generate_keypair): Call it from here.
1857
1858         * parse-packet.c (can_handle_critical_notation): New.  Check for
1859         particular notation tags that we will accept when critical.
1860         Currently, that's only preferred-email-encoding@pgp.com, since we
1861         know how to handle it (pass it through to a mail program).
1862         (can_handle_critical): Call it from here.
1863         (parse_one_sig_subpkt): Sanity check that notations are
1864         well-formed in that the internal lengths add up to the size of the
1865         subpacket.
1866
1867 2005-05-07  Werner Koch  <wk@g10code.com>
1868
1869         * ccid-driver.c (do_close_reader): Don't do a reset before close.
1870         Some folks reported that it makes the SCR335 hang less often.
1871         Look at the source on how to re-enable it.
1872
1873 2005-05-06  David Shaw  <dshaw@jabberwocky.com>
1874
1875         * main.h, keygen.c (parse_expire_string, ask_expire_interval),
1876         sign.c (sign_file, clearsign_file, sign_symencrypt_file), g10.c
1877         (main), keyedit.c (sign_uids): Use seconds rather than days
1878         internally to calculate expiration.  We no longer need the
1879         day-based code as we don't generate v3 keys.
1880
1881         * sign.c (sign_file, clearsign_file, sign_symencrypt_file): Use
1882         the default sig expire value when signing in batchmode.
1883
1884 2005-05-05  David Shaw  <dshaw@jabberwocky.com>
1885
1886         * Makefile.am, packet.h, main.h, comment.c: Remove comment.c.  We
1887         don't use any of these functions any longer.
1888
1889         * keygen.c (start_tree): New function to "prime" a KBNODE list.
1890         (do_generate_keypair): Use it here rather than creating and
1891         deleting a comment packet.
1892
1893         * keygen.c (gen_elg, gen_dsa): Do not put public factors in secret
1894         key as a comment.
1895
1896         * options.h, encode.c (encode_simple, encode_crypt), keygen.c
1897         (do_create): Remove disabled comment packet code.
1898
1899         * keygen.c (keygen_set_std_prefs): Add SHA256 and BZip2 to default
1900         preferences.
1901
1902         * options.h, g10.c (main): Add new --default-sig-expire and
1903         --default-cert-expire options.  Suggested by Florian Weimer.
1904
1905         * main.h, keygen.c (parse_expire_string, ask_expire_interval): Use
1906         defaults passed in, or "0" to control what default expiration is.
1907
1908         * keyedit.c (sign_uids), sign.c (sign_file, clearsign_file,
1909         sign_symencrypt_file): Call them here, so that default expiration
1910         is used when --ask-xxxxx-expire is off.
1911
1912 2005-05-03  Werner Koch  <wk@g10code.com>
1913
1914         * passphrase.c (agent_get_passphrase): Add new arg CACHEID.
1915         Changed all callers.
1916         (ask_passphrase): Add new arg CACHEID and use it in agent mode.
1917         Changed all callers.
1918         (passphrase_clear_cache): New arg CACHEID.  Changed all callers.
1919         * cardglue.c (format_cacheid): New.
1920         (pin_cb): Compute a cache ID.
1921         (agent_scd_pksign, agent_scd_pkdecrypt): Use it.
1922         (agent_clear_pin_cache): New.
1923         * card-util.c (change_pin): Clear the PIN cache.
1924         (check_pin_for_key_operation): Ditto.
1925
1926 2005-04-24  David Shaw  <dshaw@jabberwocky.com>
1927
1928         * trustdb.h, trustdb.c (mark_usable_uid_certs): Add flags for the
1929         no-pubkey and chosen revocation cases.
1930         (clean_uid): New function to clean a user ID of unusable (as
1931         defined by mark_usable_uid_certs) certs.
1932
1933         * keyedit.c (keyedit_menu, menu_clean_uids): Call it here for new
1934         "clean" command that removes unusable sigs from a key.
1935
1936         * trustdb.h, keyedit.c (keyedit_menu, menu_select_uid_namehash):
1937         Allow specifying user ID via the namehash from --with-colons
1938         --fixed-list-mode --list-keys.  Suggested by Peter Palfrader.
1939
1940 2005-04-21  David Shaw  <dshaw@jabberwocky.com>
1941
1942         * keyedit.c (sign_uids, keyedit_menu): When the user requests to
1943         sign a key without specifying which user IDs to sign, and declines
1944         to sign all user IDs, walk through the set of user IDs and prompt
1945         for which to sign.
1946
1947         * mainproc.c (symkey_decrypt_seskey): There is no need to have an
1948         extra check for a bad passphrase and/or unknown cipher algorithm
1949         here.  We'll fail quite happily later, and usually with a better
1950         error message to boot.
1951
1952 2005-04-20  Werner Koch  <wk@g10code.com>
1953
1954         * sign.c (sign_file, sign_symencrypt_file): Allow for hash
1955         debugging.
1956
1957 2005-04-16  David Shaw  <dshaw@jabberwocky.com>
1958
1959         * keyserver.c (keyserver_spawn): Free some memory.
1960
1961         * sign.c (hash_for): Comments.
1962
1963 2005-04-11  Werner Koch  <wk@g10code.com>
1964
1965         * g10.c (main, add_notation_data, add_policy_url)
1966         (add_keyserver_url): Use isascii() to protect the isfoo macros and
1967         to replace direct tests.  Possible problems noted by Christian
1968         Biere.
1969         * keyserver.c (parse_keyserver_uri): Ditto.
1970
1971 2005-04-07  Werner Koch  <wk@g10code.com>
1972
1973         * g10.c (main): Declare --pipemode deprecated.
1974         * misc.c (deprecated_command): New.
1975
1976         * ccid-driver.c (ccid_slot_status): Fixed debug messages.
1977
1978         * card-util.c (card_edit): Add command "verify".  Enhanced admin
1979         command to allow optional arguments "on", "off" and "verify".
1980         (card_status): Print private DOs in colon mode.
1981         * app-openpgp.c (do_check_pin): Add hack to allow verification of
1982         CHV3.
1983
1984 2005-04-01  Werner Koch  <wk@g10code.com>
1985
1986         * keygen.c (keygen_set_std_prefs): Explain the chosen order of
1987         AES key sizes. 
1988
1989 2005-04-01  David Shaw  <dshaw@jabberwocky.com>
1990
1991         * mainproc.c (proc_plaintext): Properly handle SIG+LITERAL
1992         (old-style PGP) signatures that use hashes other than SHA-1,
1993         RIPEMD160, or MD5.
1994
1995 2005-03-31  David Shaw  <dshaw@jabberwocky.com>
1996
1997         * exec.h, exec.c (set_exec_path): Remove some dead code and change
1998         all callers.  We no longer need to append to $PATH.
1999
2000 2005-03-31  Werner Koch  <wk@g10code.com>
2001
2002         * passphrase.c (agent_open): Dropped support for W32 - is was
2003         never actually used.  Removed support for the old non-assuan
2004         protocol; there has never been a matured implementation and
2005         gpg-agent is now arround for quite some time.  Rewritten to make
2006         use of the Assuan code from ../util.
2007         (gpga_protocol_codes): Removed.
2008         (readn): Removed.
2009         (agent_close): Simplified for use with Assuan.
2010         (agent_get_passphrase, passphrase_clear_cache): Removed support
2011         for old protocol.  Use only with ENABLE_CARD_SUPPORT defined.
2012         (agent_send_all_options): Take assuan context instead of a file
2013         descriptor.
2014         (agent_send_option): Likewise. Use assuan_transact.
2015         * passphrase.c (writen, readaline): Removed.
2016
2017         * g10.c (main): Print a warning if --use-agent has been used but
2018         it has not been build with support for it.
2019
2020         * keydb.c (keydb_add_resource): Clarify meaning of flags.  Add new
2021         flag 4.  Use log_info for errors registering the default secret key.
2022         * g10.c (main): Flag the default keyrings.
2023
2024 2005-03-30  David Shaw  <dshaw@jabberwocky.com>
2025
2026         * keyserver.c (keyserver_spawn): Don't mess about with the $PATH.
2027         Rather, call keyserver helpers with the full path.  This fixes
2028         some PATH-inspired DLL problems on W32.  Noted by Carlo Luciano
2029         Bianco.
2030
2031 2005-03-30  Werner Koch  <wk@g10code.com>
2032
2033         * cardglue.c (pin_cb): Print a warning if the info string hack is
2034         not there.  This may happen due to typos in the translation.
2035
2036 2005-03-22  Werner Koch  <wk@g10code.com>
2037
2038         * misc.c (w32_shgetfolderpath) [W32]: Changed declaration of
2039         function ptr.  Noted by Tim Costello. 
2040         * apdu.c [W32]: Changed declaration of dlopened function pointers.
2041
2042 2005-03-21  David Shaw  <dshaw@jabberwocky.com>
2043
2044         * gpgv.c: Stubs for tty_enable_completion() &
2045         tty_disable_completion().
2046
2047         * openfile.c (ask_outfile_name): Enable readline completion when
2048         prompting for an output filename.
2049
2050         * plaintext.c (ask_for_detached_datafile): Enable readline
2051         completion when prompting for a detached sig datafile.
2052
2053 2005-03-21  Werner Koch  <wk@g10code.com>
2054
2055         * keyedit.c (command_generator, keyedit_completion): Changed
2056         indentation.
2057         * card-util.c (command_generator, card_edit_completion): Ditto.
2058
2059 2005-03-19  David Shaw  <dshaw@jabberwocky.com>
2060
2061         * card-util.c (command_generator, card_edit_completion)
2062         [GNUPG_MAJOR_VERSION==1 && HAVE_LIBREADLINE]: New functions to
2063         enable command completion in the --card-edit menu.
2064         (card_edit): Call them here.
2065
2066 2005-03-18  David Shaw  <dshaw@jabberwocky.com>
2067
2068         * keyedit.c (command_generator, keyedit_completion)
2069         [HAVE_LIBREADLINE]: New functions to enable command completion in
2070         the --edit-key menu.
2071         (keyedit_menu): Call them here.
2072
2073 2005-03-17  David Shaw  <dshaw@jabberwocky.com>
2074
2075         * getkey.c (get_seckey_byname2): If no explicit default key is
2076         set, don't pick a disabled default.  Noted by David Crick.
2077
2078         * Makefile.am: Calculate GNUPG_LIBEXECDIR directly.  Do not
2079         redefine $libexecdir.
2080
2081         * options.h, keyserver.c (parse_keyserver_options)
2082         (keyserver_spawn): Don't treat 'verbose' and 'include-disabled' as
2083         special.  Just pass them through silently to the keyserver helper.
2084
2085 2005-03-16  Werner Koch  <wk@g10code.com>
2086
2087         * ccid-driver.c (parse_ccid_descriptor): Make SCM workaround
2088         reader type specific.
2089         (scan_or_find_devices): Do not check the interface subclass in the
2090         SPR532 kludge, as this depends on the firmware version.
2091         (ccid_get_atr): Get the Slot status first.  This solves the
2092         problem with readers hanging on recent Linux 2.6.x.
2093         (bulk_in): Add argument TIMEOUT and changed all callers to pass an
2094         appropriate one.  Change the standard timeout from 10 to 5 seconds.
2095         (ccid_slot_status): Add a retry code with an initial short timeout.
2096         (do_close_reader): Do an usb_reset before closing the reader.
2097
2098 2005-03-14  Werner Koch  <wk@g10code.com>
2099
2100         * card-util.c (card_status): Use isotimestamp and not the
2101         localized asctimestamp to match the timezone used in the key
2102         information.
2103
2104         * cardglue.c (pin_cb): Disable debug output.
2105
2106 2005-03-11  Werner Koch  <wk@g10code.com>
2107
2108         * keygen.c (gen_card_key_with_backup): Write status line with the
2109         backup filename.
2110
2111         * status.h, status.h (STATUS_BACKUP_KEY_CREATED): New.
2112
2113 2005-03-10  David Shaw  <dshaw@jabberwocky.com>
2114
2115         * keyserver.c (parse_keyserver_options): Accept honor-http-proxy
2116         as an alias for http-proxy.
2117
2118         * delkey.c (do_delete_key, delete_keys): Fix problem with --expert
2119         preventing --delete-secret-and-public-keys from deleting secret
2120         keys.
2121
2122 2005-03-10  Werner Koch  <wk@g10code.com>
2123
2124         * keyedit.c (keyedit_menu) [W32]: Run the trustdb stale check
2125         earlier.
2126
2127 2005-03-07  Werner Koch  <wk@g10code.com>
2128
2129         * cardglue.c (agent_scd_pkdecrypt, agent_scd_pksign) 
2130         (agent_scd_genkey, agent_scd_setattr, agent_scd_change_pin) 
2131         (agent_scd_checkpin, agent_openpgp_storekey): Make sure to send a
2132         SC_OP_FAILURE after card operations which might change data.
2133         * card-util.c (change_pin): Send a SC_OP_SUCCESS after a PIN has
2134         been changed.
2135         (change_name): Removed a debug output.
2136         * status.h, status.c: New codes BAD_PASSPHRASE_PIN, SC_OP_FAILURE
2137         and SC_OP_SUCCESS.
2138
2139 2005-02-24  David Shaw  <dshaw@jabberwocky.com>
2140
2141         * keyedit.c (keyedit_menu): Only print the key signing hint when
2142         signing from a place where it is useful (i.e. --edit-key and not
2143         --sign-key).
2144
2145 2005-02-16  Werner Koch  <wk@g10code.com>
2146
2147         * card-util.c (fetch_url): Fetch the key from the default
2148         keyserver if no URL is available.
2149
2150 2005-02-15  Werner Koch  <wk@g10code.com>
2151
2152         * passphrase.c (agent_get_passphrase): Don't call free_public_key
2153         if PK is NULL.
2154         (passphrase_clear_cache): Ditto. Removed debug output.
2155         (passphrase_to_dek): Ditto.
2156
2157 2005-02-13  Werner Koch  <wk@g10code.com>
2158
2159         * keyedit.c (cmds): Limit code to 80 columns. Add command
2160         BKUPTOCARD.
2161
2162 2005-02-09  David Shaw  <dshaw@jabberwocky.com>
2163
2164         * encr-data.c (decrypt_data): Use it here to turn off the "quick
2165         check" bytes for PK decryptions.  This is in regards to the Mister
2166         and Zuccherato attack on OpenPGP CFB mode.
2167
2168         * mainproc.c (proc_symkey_enc): Set a flag to indicate that a
2169         particular session key came from a passphrase and not a PK.
2170
2171 2005-02-08  Werner Koch  <wk@g10code.com>
2172
2173         * misc.c (w32_shgetfolderpath): New.
2174         (default_homedir): Use it to avoid problems under Windows95.
2175
2176 2005-02-06  David Shaw  <dshaw@jabberwocky.com>
2177
2178         * trustdb.h, trustdb.c (trustdb_check_or_update): New.  If the
2179         trustdb is dirty and --interactive is set, do an --update-trustdb.
2180         If not interactive, do a --check_trustdb unless
2181         --no-auto-check-trustdb is set.
2182
2183         * import.c (import_keys_internal): Moved from here.
2184
2185         * keyserver.c (keyserver_refresh): Call it here after all
2186         refreshing has happened so that we don't rebuild after each
2187         preferred keyserver set of imports, but do one big rebuild at the
2188         end.  This is Debian bug #293816, noted by Kurt Roeckx.
2189
2190 2005-02-04  David Shaw  <dshaw@jabberwocky.com>
2191
2192         * getkey.c (merge_selfsigs_subkey): Merged away definition from
2193         the backsigs code.
2194
2195 2005-01-31  David Shaw  <dshaw@jabberwocky.com>
2196
2197         * keygen.c (do_generate_keypair): Write the auth key to the card
2198         before the encryption key.  This is a partial workaround for a PGP
2199         bug (as of this writing, all versions including 8.1), that causes
2200         it to try and encrypt to the most recent subkey regardless of
2201         whether that subkey is actually an encryption type.  In this case,
2202         the auth key is an RSA key so it succeeds.
2203
2204 2005-01-27  David Shaw  <dshaw@jabberwocky.com>
2205
2206         * keyid.c (keyid_from_sk, keyid_from_pk): Use 0xFFFFFFFFFFFFFFFF
2207         instead of 0x0000000000000000 for the invalid key ID since
2208         all-zeroes is reserved for the anonymous recipient.
2209
2210         * keyedit.c (change_passphrase), keygen.c (generate_subkeypair):
2211         Fix a string ;)
2212
2213 2005-01-27  Werner Koch  <wk@g10code.com>
2214
2215         * parse-packet.c (listfp): New.
2216         (set_packet_list_mode): Intialize it to stdout or stderr depending
2217         on a global option.  Made all printing in list mode use LISTFP.
2218
2219         * keygen.c (generate_subkeypair): Detect primary key on-card and
2220         ask for the passphrase.  Return an error if the primary key is a
2221         plain stub.
2222
2223         * keyedit.c (change_passphrase): Don't ever change any stub key.
2224         Print a note if a key consists of only stub keys.  Reported by
2225         Dany Nativel.  These are bugs #401 and #402.
2226
2227 2005-01-26  Werner Koch  <wk@g10code.com>
2228
2229         * ccid-driver.c (parse_ccid_descriptor): Need the CSM workaround
2230         also for newer firmware versions.  Need to get a list of fixed
2231         firmware versions and use that.
2232
2233 2005-01-26  David Shaw  <dshaw@jabberwocky.com>
2234
2235         * keyserver.c (parse_keyserver_uri): Allow RFC-2732 IPv6 [literal
2236         address] syntax in keyserver URLs.
2237         (keyserver_typemap): Map ftps if we are supporting it.
2238
2239 2005-01-25  Werner Koch  <wk@g10code.com>
2240
2241         * keygen.c (do_generate_keypair): Don't continue after an error;
2242         fixed at two places. Why at all didn't I used a goto to cleanup,
2243         tsss?
2244
2245         * app-openpgp.c (get_cached_data): New arg GET_IMMEDIATE to bypass
2246         the cache.  Changed all callers.
2247         (get_one_do): Bypass the cache if the value would have been read
2248         directly for v1.1 cards.  It makes things a bit slower but only for
2249         1.0 cards and there are not that many cards out in the wild.  This
2250         is required to fix a caching bug when generating new keys; as a
2251         side effect of the retrieval of the the C4 DO from the 6E DO the
2252         chaced fingerprint will get updated to the old value and later
2253         when signing the generated key the checking of the fingerprint
2254         fails becuase it won't match the new one.  Thanks to Moritz for
2255         analyzing this problem.
2256         (verify_chv3): Removed the CHV status reread logic because we
2257         won't cache the C4 DO anymore.
2258
2259 2005-01-21  David Shaw  <dshaw@jabberwocky.com>
2260
2261         * keyserver.c (free_keyserver_spec): Fix small leak.
2262         (keyserver_typemap): Map https if we are supporting it.
2263
2264 2005-01-20  Werner Koch  <wk@g10code.com>
2265
2266         * cardglue.c (open_card): Issue new CARDCTRL(4) status.
2267
2268         * gpgv.c (tty_fprintf): New stub.
2269
2270         * card-util.c (card_status): Create a secret key stub on the fly
2271         and print more information about a card key.
2272         * import.c (pub_to_sec_keyblock, auto_create_card_key_stub): New.
2273         * getkey.c (get_seckeyblock_byfprint): New.
2274         * keylist.c (print_card_key_info): New.
2275
2276         * g10.c (i18n_init) [W32]: Pass registry key to gettext
2277         initialization.
2278         * gpgv.c (i18n_init) [W32]: Ditto.
2279
2280 2005-01-18  Werner Koch  <wk@g10code.com>
2281
2282         * misc.c (default_homedir): New.  Taken from gnupg 1.9.15.
2283         * g10.c (main): Use it.
2284         * gpgv.c (main): Ditto.
2285
2286         * keylist.c (public_key_list): Do a trustdb staleness check before
2287         opening the keyring.
2288         (secret_key_list): Ditto.
2289
2290 2005-01-10  David Shaw  <dshaw@jabberwocky.com>
2291
2292         * keyedit.c (keyedit_menu): Move command strings outside the
2293         function to get ready for the readline completion code.
2294
2295         * passphrase.c (readline, agent_send_option, agent_open,
2296         agent_get_passphrase, passphrase_clear_cache): Rename readline()
2297         to readaline() to keep readline library namespace clear.
2298
2299 2005-01-06  David Shaw  <dshaw@jabberwocky.com>
2300
2301         * filter.h, armor.c (armor_filter): Use the eol string from the
2302         armor filter context instead of hardcoding '\n' or '\r\n'.  If no
2303         eol string is provided, default to '\n' or '\r\n' as appropriate.
2304         (is_armor_header): Trim tabs in armor header lines as well.
2305
2306         * keyserver.c (keyserver_spawn): Use it here to force '\n' line
2307         endings since the keyserver output file gets a LF->CRLF expansion
2308         on win32.
2309
2310 2005-01-05  David Shaw  <dshaw@jabberwocky.com>
2311
2312         * g10.c (main): Typo.
2313
2314         * armor.c (is_armor_header): Allow CR and LF (not just actual
2315         spaces) in an armor header line (-----BEGIN etc).  This is needed
2316         due to CRLF issues on win32.  As before, --openpgp makes it
2317         strict.
2318
2319 2005-01-03  David Shaw  <dshaw@jabberwocky.com>
2320
2321         * Makefile.am: Use @LIBUSB@ instead of @LIBUSB_LIBS@
2322
2323         * import.c (delete_inv_parts): Comments on import-unusable-sigs.
2324
2325 2005-01-01  David Shaw  <dshaw@jabberwocky.com>
2326
2327         * options.h, import.c (parse_import_options, delete_inv_parts):
2328         Add import-unusable-sigs flag to enable importing unusable
2329         (currently: expired) sigs.
2330
2331         * options.h, export.c (parse_export_options, do_export_stream):
2332         Add export-unusable-sigs flag to enable exporting unusable
2333         (currently: expired) sigs.
2334
2335 2004-12-29  David Shaw  <dshaw@jabberwocky.com>
2336
2337         * packet.h, getkey.c (merge_selfsigs_main, sig_to_revoke_info),
2338         keyid.c (revokestr_from_pk), keyedit.c (show_key_with_all_names):
2339         Show who revoked a key (either the same key or a designated
2340         revoker) and when.
2341
2342 2004-12-28  Werner Koch  <wk@g10code.com>
2343
2344         * ccid-driver.c (find_endpoint): New.
2345         (scan_or_find_devices): Add new args to return endpoint info and
2346         interface number.
2347         (ccid_open_reader, ccid_shutdown_reader): Take care of these new
2348         args.
2349         (bulk_in, bulk_out): Use the correct endpoints.
2350         (ccid_transceive_apdu_level): New.
2351         (ccid_transceive): Divert to above.
2352         (parse_ccid_descriptor): Allow APDU level exchange mode.
2353         (do_close_reader): Pass the interface number to usb_release_interface.
2354
2355 2004-12-24  David Shaw  <dshaw@jabberwocky.com>
2356
2357         * keyserver.c (keyserver_typemap): Only map HTTP and FTP if
2358         libcurl has specifically been selected to handle them.
2359
2360 2004-12-22  David Shaw  <dshaw@jabberwocky.com>
2361
2362         * options.h, keyserver.c (parse_keyserver_uri): Properly parse
2363         auth data from URLs and pass to keyserver helpers.
2364
2365         * keyserver.c (keyserver_typemap): New.  Map certain keyserver
2366         types to a common type (e.g. ldaps -> ldap).  If we are building
2367         with curl, map both http and ftp to curl.
2368
2369         * build-packet.c (build_sig_subpkt): Only allow one preferred
2370         keyserver subpacket at a time.
2371
2372 2004-12-21  David Shaw  <dshaw@jabberwocky.com>
2373
2374         * keyedit.c (menu_set_keyserver_url): Make sure we only operate on
2375         the chosen selfsig so we don't accidentally promote an older
2376         selfsig to chosen.  Discovered by Simon Josefsson and 'Todd'.
2377
2378         * keygen.c (ask_expire_interval): Fix typo.
2379
2380 2004-12-20  David Shaw  <dshaw@jabberwocky.com>
2381
2382         * keylist.c (list_keyblock_print): Secret key listings should
2383         always show everything (expired UIDs, revoked subkeys, etc, etc).
2384
2385         * keyedit.c (keyedit_menu): Add additional help for the "sign"
2386         flags.
2387
2388 2004-12-20  Werner Koch  <wk@g10code.com>
2389
2390         * keygen.c (ask_expire_interval): For better translations chnage 2
2391         strings.
2392
2393         * seckey-cert.c (do_check): Handle case when checksum was okay but
2394         passphrase still wrong.  Roman Pavlik found such a case.
2395
2396 2004-12-20  David Shaw  <dshaw@jabberwocky.com>
2397
2398         * keyedit.c (keyedit_menu): Invisible alias "passwd" as
2399         "password".
2400
2401         * passphrase.c: Don't check for __CYGWIN__, so it is treated as a
2402         unix-like system.
2403
2404         * options.h, g10.c (main), textfilter.c (standard): Use new option
2405         --rfc2440-text to determine whether to filter "<space>\t\r\n" or
2406         just "\r\n" before canonicalizing text line endings.  Default to
2407         "<space>\t\r\n".
2408
2409 2004-12-19  David Shaw  <dshaw@jabberwocky.com>
2410
2411         * keygen.c (keygen_get_std_prefs): Set reference count when
2412         creating the temporary user ID.
2413
2414         * keyedit.c (keyedit_menu): Merge updpref and setpref.  Keep
2415         updpref as an invisible alias.  Add invisible alias for revphoto.
2416         Fix small memory leak when using "setpref" (not all of the uid was
2417         freed).
2418         (menu_revkey): Trigger a trust rebuild after revoking a key.
2419         Don't allow revoking an already-revoked whole key.
2420         (menu_revsubkey): Don't allow revoking an already-revoked subkey.
2421
2422 2004-12-18  David Shaw  <dshaw@jabberwocky.com>
2423
2424         * keyedit.c (menu_revkey): Rename to menu_revsubkey.
2425         (menu_revkey): New.  Revoke a whole key.
2426         (keyedit_menu): Call it here for when 'revkey' is used without any
2427         subkeys selected.  This is to be consistent with the other
2428         functions which are "selected part if selected, whole key if not".
2429
2430         * signal.c: Use only HAVE_LIBREADLINE to detect readline
2431         availability.
2432
2433         * Makefile.am: Link with readline where necessary.
2434
2435 2004-12-17  Werner Koch  <wk@g10code.com>
2436
2437         * passphrase.c (agent_get_passphrase): Define NREAD locally as
2438         size_t or int.
2439
2440         * keylist.c (list_keyblock_print): Make field width an int.
2441         * keyedit.c (show_key_with_all_names): Ditto.
2442
2443 2004-12-16  David Shaw  <dshaw@jabberwocky.com>
2444
2445         * g10.c (main): Add --require-secmem/--no-require-secmem to cause
2446         gpg to exit if it cannot lock memory.  Also remove --nrsign-key
2447         and --nrlsign-key since this can better be done via --edit-key.
2448
2449 2004-12-15  David Shaw  <dshaw@jabberwocky.com>
2450
2451         * apdu.c (apdu_send_le, apdu_send_direct), keylist.c
2452         (status_one_subpacket, print_one_subpacket): Fix some compiler
2453         warnings.
2454
2455         * g10.c (main): Fix --compression-algo to take a string argument
2456         like --compress-algo.
2457
2458         * trustdb.c (uid_trust_string_fixed): For safety, check for a pk.
2459
2460 2004-12-14  David Shaw  <dshaw@jabberwocky.com>
2461
2462         * keyedit.c (keyedit_menu): Re-remove the N_() markers.
2463
2464         * trustdb.c (uid_trust_string_fixed): Show uids as revoked if the
2465         key is revoked.
2466         
2467         * keyedit.c (show_key_with_all_names): Don't show validity for
2468         secret key UIDs.
2469
2470         * keyedit.c (parse_sign_type): New.  Figure out the flags (local,
2471         nonrevoke, trust) for a signature.
2472         (keyedit_menu): Call it here so we can mix and match flags, and
2473         don't need "nrltsign", "ltsign", "tnrsign", etc, etc, etc.
2474
2475 2004-12-14  Werner Koch  <wk@g10code.com>
2476
2477         * passphrase.c (agent_get_passphrase): Removed debug output
2478
2479         * keyserver.c (keyserver_work, keyserver_spawn): Map ldaps to ldap.
2480
2481         * keyedit.c (keyedit_menu): Removed the N_() markers from the
2482         command names.
2483         * card-util.c (card_edit): Ditto.
2484
2485 2004-12-13  Werner Koch  <wk@g10code.com>
2486
2487         * passphrase.c (read_passphrase_from_fd): Fixed memory leak.
2488         Noted by Andrei Darashenka.
2489
2490 2004-12-11  David Shaw  <dshaw@jabberwocky.com>
2491
2492         * keyserver.c (parse_preferred_keyserver): Force preferred
2493         keyserver subpackets to have a URI scheme specified.
2494
2495 2004-12-10  David Shaw  <dshaw@jabberwocky.com>
2496
2497         * options.h, g10.c (main), textfilter.c (standard): Use --rfc2440
2498         or --openpgp directly to determine the end of line hashing rule.
2499
2500         * trustdb.c (uid_trust_string_fixed): Show uids as expired if the
2501         key is expired.
2502
2503 2004-12-10  Werner Koch  <wk@g10code.com>
2504
2505         * app-openpgp.c (send_fprtime_if_not_null): New.
2506         (do_getattr): Add KEY_TIME.
2507         (do_learn_status): Print KEY_TIME.
2508         * cardglue.c (learn_status_cb): Parse KEY-TIME.
2509         * card-util.c (card_status): Print creation time if available.
2510
2511 2004-12-09  David Shaw  <dshaw@jabberwocky.com>
2512
2513         * options.h, g10.c (main), textfilter.c (len_without_trailing_ws):
2514         Removed (not used).
2515         (standard): 2440 says that textmode hashes should canonicalize
2516         line endings to CRLF and remove spaces and tabs.  2440bis-12 says
2517         to just canonicalize to CRLF.  So, we default to the 2440bis-12
2518         behavior, but revert to the strict 2440 behavior if the user
2519         specifies --rfc2440.  In practical terms this makes no difference
2520         to any signatures in the real world except for a textmode detached
2521         signature.
2522
2523 2004-12-09  Werner Koch  <wk@g10code.com>
2524
2525         * passphrase.c (agent_get_passphrase): New args CUSTOM_PROMPT and
2526         CUSTOM_DESCRIPTION.     Changed all callers.
2527
2528         * app-openpgp.c (do_getattr, do_learn_status, do_setattr): Support
2529         the new private DOs.
2530         (do_change_pin): Add a "N" prefix to the strings so that the
2531         callback can act accordingly for a new PIN.  Unfortunately this
2532         breaks existing translations but I see no wother way to overvome
2533         this.
2534
2535         * cardglue.c (learn_status_cb): Ditto.
2536         (agent_release_card_info): Ditto.
2537         (struct pin_cb_info_s): Removed and changed all users.
2538         (pin_cb): Reworked.
2539
2540         * card-util.c (card_status): Print them
2541         (card_edit): New command PRIVATEDO.
2542         (change_private_do): New.
2543
2544 2004-12-09  David Shaw  <dshaw@jabberwocky.com>
2545
2546         * keygen.c (ask_algo): Add a choose-your-own-capabilities option
2547         for DSA.
2548
2549 2004-12-07  David Shaw  <dshaw@jabberwocky.com>
2550
2551         * keygen.c (ask_keysize): Change strings to always use %u instead
2552         of hardcoding key sizes.  Bump default to 2048.  Bump minimum down
2553         to 512, where possible, but require --expert to get there.  DSA is
2554         always 1024 unless --expert is given.
2555
2556 2004-11-29  David Shaw  <dshaw@jabberwocky.com>
2557
2558         * getkey.c (parse_key_usage): New function to parse out key usage
2559         flags.  Set PUBKEY_USAGE_UNKNOWN to handle flags that we don't
2560         understand.
2561         (fixup_uidnode, merge_selfsigs_main, merge_selfsigs_subkey): Call
2562         it from here to remove duplicate code.
2563
2564 2004-11-26  David Shaw  <dshaw@jabberwocky.com>
2565
2566         * export.c (do_export_stream): Allow export-minimal to work with
2567         secret keys, even though a non-selfsig secret key signature is
2568         rare.
2569
2570         * options.h, export.c (parse_export_options, do_export_stream),
2571         import.c (parse_import_options, import_keys_internal): Make the
2572         import-options and export-options distinct since they can be mixed
2573         together as part of keyserver-options.
2574
2575 2004-11-24  David Shaw  <dshaw@jabberwocky.com>
2576
2577         * options.h, export.c (parse_export_options, do_export_stream):
2578         Add "export-minimal" option to disregard any sigs except selfsigs.
2579
2580         * trustdb.c (uid_trust_string_fixed): Use a string that can be
2581         atoi-ed, but also has a comment for the translator.
2582
2583         * trustdb.h, trustdb.c (uid_trust_string_fixed): New.  Return a
2584         fixed-size translatable string similar to trust_value_to_string.
2585         This allows for easier lining up of displays.
2586
2587         * keyedit.c (show_key_with_all_names), keylist.c
2588         (list_keyblock_print): Use it here to print validity strings.
2589
2590         * gpgv.c: Stub.
2591
2592 2004-11-18  Werner Koch  <wk@g10code.com>
2593
2594         * g10.c (S_IRGRP) [HAVE_DOSISH_SYSTEM]: Define to 0.
2595
2596 2004-11-17  Werner Koch  <wk@g10code.com>
2597
2598         * g10.c (open_info_file): New.
2599         (main): Unconditionally implement --status-file, --logger-file,
2600         --attribute-file, --passphrase-file, --command-file.  This is not
2601         generally useful but easy to support and might make scripting
2602         under Windows easier.
2603
2604 2004-11-11  Werner Koch  <wk@g10code.com>
2605
2606         * passphrase.c (readn): Fixed test against EINTR.
2607
2608 2004-11-05  Werner Koch  <wk@g10code.com>
2609
2610         * app-openpgp.c: Made more strings translatable.
2611         (verify_chv3, do_change_pin): Add a special prefix to the prompt
2612         of the Admin PIN prompts.
2613         * passphrase.c (ask_passphrase): Add arg TRYAGAIN_TEXT.  Changed
2614         call callers.
2615         * cardglue.c (pin_cb): Make use of the OPAQUE arg to pass
2616         arguments to the PIN callback.  Use this to implement a way to
2617         check for correct PIN repetition.  Changed all callers to pass an
2618         opaque argument. Improved detection of Admin PIN prompts.
2619
2620 2004-11-04  David Shaw  <dshaw@jabberwocky.com>
2621
2622         * plaintext.c (handle_plaintext): Don't try and create a
2623         zero-length filename when using --use-embedded-filename with input
2624         that has no filename (clearsigned or message generated from a
2625         pipe).
2626
2627         * encode.c (encode_simple, encode_crypt), progress.c
2628         (handle_progress), sign.c (write_plaintext_packet): Fix a few
2629         inconsistent calls (NULL filename means a pipe here, so don't
2630         bother to check it twice).
2631
2632 2004-11-03  David Shaw  <dshaw@jabberwocky.com>
2633
2634         * misc.c (print_digest_algo_note): The latest 2440bis drafts
2635         deprecates MD5, so give a warning.
2636         (print_pubkey_algo_note, print_cipher_algo_note,
2637         print_digest_algo_note): Give the algorithm name in the
2638         experimental algo warning.
2639
2640 2004-11-03  Timo Schulz  <twoaday@g10code.com>
2641
2642         * passphrase.c (readn, writen): Use w32_strerror instead
2643         of just showing the error number.
2644         * misc.c [_WIN32]: Fix warning about missing prototypes.
2645         
2646 2004-10-28  David Shaw  <dshaw@jabberwocky.com>
2647
2648         * skclist.c (build_sk_list): Don't need to warn about
2649         PGP-generated Elgamal signing keys since we no longer support any
2650         Elgamal signing keys.
2651
2652         * sign.c (sign_file, clearsign_file): Use "writing to" instead of
2653         "writing to file" to match other strings.
2654
2655         * pkclist.c (check_signatures_trust): Fix typo.  Noted by Moray
2656         Allan.  This is Debian bug #278708.
2657
2658         * passphrase.c (ask_passphrase, passphrase_to_dek): "password" ->
2659         "passphrase".
2660
2661         * keyedit.c (show_key_with_all_names): Show designated revoker as
2662         part of translatable string.
2663
2664 2004-10-28  Werner Koch  <wk@g10code.com>
2665
2666         * Makefile.am (other_libs): New.  Also include LIBICONV.  Noted by
2667         Tim Mooney.
2668
2669 2004-10-28  Werner Koch  <wk@g10code.com>
2670
2671         * apdu.c (open_pcsc_reader): Removed bad free in error handler.
2672
2673 2004-10-27  David Shaw  <dshaw@jabberwocky.com>
2674
2675         * card-util.c, delkey.c, keygen.c, plaintext.c, keyedit.c,
2676         passphrase.c, revoke.c: Collapse the two different "can't do that
2677         in batch mode" strings into one.
2678
2679         * keylist.c (status_one_subpacket): New.  Send the subpacket data
2680         to the --status interface.
2681
2682         * card-util.c (card_edit): Show when admin is enabled or not.
2683
2684         * status.h, status.c: New STATUS_SIG_SUBPACKET type.
2685
2686         * build-packet.c (build_sig_subpkt): Multiple keyserver URLs are
2687         allowed.
2688
2689         * keyring.c: Make some strings translatable.
2690
2691         * exec.c, sign.c: Change "can't open file" to "can't open" and
2692         "can't create file" to "can't create" to be consistent with other
2693         strings so we don't have to translate both.
2694
2695         * delkey.c, export.c, keyedit.c, pkclist.c, revoke.c, skclist.c:
2696         Fix a few missed possible \"username\" quotes.
2697
2698 2004-10-26  Werner Koch  <wk@g10code.com>
2699
2700         * app-openpgp.c (verify_chv3): The minimum length for CHV3 is
2701         8. Changed string to match the other ones.
2702
2703         * passphrase.c (agent_send_all_options): Try to deduce the ttyname
2704         from stdin.
2705
2706 2004-10-22  Werner Koch  <wk@g10code.com>
2707
2708         * card-util.c (fetch_url): Disable for gnupg 1.9
2709         (card_generate_subkey): Ditto.
2710         (card_store_subkey): Ditto.
2711
2712 2004-10-21  David Shaw  <dshaw@jabberwocky.com>
2713
2714         * options.h, g10.c (main), mainproc.c (check_sig_and_print):
2715         Rename verify-option show-validity to show-uid-validity to match
2716         the similar list-option.
2717
2718         * app-openpgp.c (verify_chv3): Fix typo.
2719
2720 2004-10-21  Werner Koch  <wk@g10code.com>
2721
2722         * app-common.h (app_openpgp_storekey): Add prototype.
2723
2724         * app-openpgp.c (do_sign): Replace asprintf by direct allocation.
2725         This avoids problems with missing vasprintf implementations.
2726
2727         * card-util.c (generate_card_keys): Add a #warning for gnupg 1.9
2728         and use the same string there.
2729
2730 2004-10-20  David Shaw  <dshaw@jabberwocky.com>
2731
2732         * g10.c (parse_list_options): Fix non-constant initializer so we
2733         can build with C89.
2734
2735 2004-10-17  David Shaw  <dshaw@jabberwocky.com>
2736
2737         * keylist.c (print_one_subpacket): The flags field should be hex.
2738
2739 2004-10-17  Werner Koch  <wk@g10code.com>
2740
2741         * passphrase.c (agent_get_passphrase): Cast UIDLEN to int.  Noted
2742         by Christian Cornelssen.
2743
2744 2004-10-16  David Shaw  <dshaw@jabberwocky.com>
2745
2746         * parse-packet.c (parse_one_sig_subpkt, enum_sig_subpkt): Don't
2747         BUG() on unknown subpackets.  Rather, just return them silently.
2748         
2749 2004-10-15  Werner Koch  <wk@g10code.com>
2750
2751         * status.h (STATUS_NEED_PASSPHRASE_PIN): New.
2752         * status.c (get_status_string): Added.
2753         * passphrase.c (ask_passphrase): Moved status printing to ..
2754         * cardglue.c (pin_cb): .. here and issue new status message.
2755
2756         * keyedit.c (sign_uids): Don't include the leading LF in the
2757         translatable string but print them separately.
2758
2759         * apdu.c (apdu_open_remote_reader) [_WIN32]: We don't have ENOSYS.
2760
2761         * app-openpgp.c (parse_login_data): New. 
2762         (app_select_openpgp): Call it.
2763         (do_setattr): Reparse it after change.
2764
2765         * pkclist.c (do_edit_ownertrust): Add a note to translators.
2766         * keygen.c (ask_user_id): Ditto.
2767
2768         * helptext.c: Typo fix.
2769
2770 2004-10-14  David Shaw  <dshaw@jabberwocky.com>
2771
2772         * keylist.c (list_keyblock_print): Show the fingerprint after the
2773         key, not after the first user ID.
2774
2775         * keyedit.c (show_key_with_all_names): Don't show validity if
2776         we're just printing user IDs for signing.
2777
2778         * armor.c (fake_packet): Properly handle the case where the line
2779         is dash-space (i.e. a blank line that was quoted).  Give a warning
2780         for bad dash escaping.
2781
2782 2004-10-14  Werner Koch  <wk@g10code.com>
2783
2784         * export.c (do_export_stream) [ENABLE_SELINUX_HACKS]: Don't allow
2785         secret key export.
2786         * import.c (import_secret_one) [ENABLE_SELINUX_HACKS]: Likewise 
2787
2788         * misc.c (is_secured_filename): New.
2789         * keydb.c (maybe_create_keyring)
2790         * tdbio.c (tdbio_set_dbname)
2791         * plaintext.c (handle_plaintext)
2792         * openfile.c (copy_options_file, open_outfile)
2793         * exec.c (exec_write)
2794         * keygen.c (do_generate_keypair, gen_card_key_with_backup)
2795
2796         * sign.c (sign_file, clearsign_file)
2797         * keyring.c (create_tmp_file, do_copy): Check for secured files
2798         before creating them. 
2799
2800         * keygen.c (print_status_key_created, read_parameter_file):
2801         s/unsigned char/byte/ due to a strange typedef for RISC OS.  Noted
2802         by Stefan.
2803
2804 2004-10-13  David Shaw  <dshaw@jabberwocky.com>
2805
2806         * armor.c (fake_packet): Allow arbitrary dash-escaped lines as per
2807         2440bis-10.  This is bug #158.
2808
2809         * keyserver.c (keyserver_work): Handle keyserver timeouts.
2810
2811         * pkclist.c (do_edit_ownertrust): Different prompt when we're
2812         using direct trust since the meaning is different.
2813
2814         * keyedit.c (trustsig_prompt): Change the strings to match the
2815         ones in pkclist.c:do_edit_ownertrust to make translation easier.
2816
2817         * trustdb.c (trust_model_string, get_validity): Add direct trust
2818         model which applies to the key as a whole and not per-uid.
2819
2820         * options.h, g10.c (parse_trust_model): New.
2821         (main): Call it from here to do string-to-trust-model.
2822
2823 2004-10-13  Werner Koch  <wk@g10code.com>
2824
2825         * tdbdump.c (import_ownertrust): Removed all log_error_f and
2826         reworded the messages.
2827
2828         * dermor.c: Include i18n.h.  Made 2 strings translatable.
2829         
2830         * misc.c (register_secured_file, is_secured_file)
2831         (unregister_secured_file): New.
2832         * keyring.c (do_copy, rename_tmp_file): Implement the SELinux hacks.
2833         (keyring_register_filename): Ditto.
2834         * tdbio.c (open_db): Ditto.
2835         * openfile.c (copy_options_file, open_sigfile): Ditto.
2836         * verify.c (verify_signatures, verify_one_file): Ditto.
2837         * photoid.c (generate_photo_id): Ditto.
2838         * keygen.c (read_parameter_file): Ditto.
2839         * import.c (import_keys_internal): Ditto.
2840         * decrypt.c (decrypt_message, decrypt_messages): Ditto.
2841         * dearmor.c (dearmor_file, enarmor_file): Ditto.
2842         * g10.c (main, print_mds): Ditto.
2843         * exec.c (exec_write, exec_read): Ditto. 
2844         * card-util.c (change_login): Ditto.
2845         * encode.c (encode_simple, encode_crypt): Ditto.
2846
2847         * openfile.c (overwrite_filep, make_outfile_name, open_outfile) 
2848         (open_sigfile): Use iobuf_is_pipe_filename to check for pipes so
2849         that special filesnames are taken into account. This is bug 327.
2850
2851         * tdbdump.c (import_ownertrust): Ditto.
2852
2853         * sign.c (write_plaintext_packet): Ditto.
2854         (sign_file, clearsign_file, sign_symencrypt_file): 
2855
2856         * progress.c (handle_progress): Ditto.
2857         * plaintext.c (handle_plaintext): Ditto.
2858         (ask_for_detached_datafile, hash_datafiles): 
2859
2860         * encode.c (encode_simple, encode_crypt): Ditto. 
2861
2862 2004-10-12  Werner Koch  <wk@g10code.com>
2863
2864         * keygen.c (read_parameter_file): Changed to use iobuf based file
2865         reading to allow the special file name feature to work.
2866
2867         * keygen.c (read_parameter_file): New keyword "Handle".  This is
2868         bug 287.
2869         (print_status_key_not_created): New.
2870         (print_status_key_created): Add new arg HANDLE.
2871         (do_generate_keypair): Print not created status.
2872         * status.c, tatus.h (STATUS_KEY_NOT_CREATED): New. 
2873
2874 2004-10-11  David Shaw  <dshaw@jabberwocky.com>
2875
2876         * pkclist.c (do_edit_ownertrust): Use the same translated string
2877         for showing the user ID as mainproc.c:print_pkenc_list.
2878
2879         * mainproc.c (print_pkenc_list): Allow translating the quotes
2880         around the user ID.
2881
2882         * card-util.c, g10.c, photoid.c, trustdb.c: The last of the \"%s\"
2883         -> `%s' quoting for things that aren't user IDs.
2884
2885         * keyserver.c (keyserver_spawn): If there is no keyserver host,
2886         print the whole URI since it is self-contained.
2887
2888 2004-10-11  Werner Koch  <wk@g10code.com>
2889
2890         * keyserver.c (keyserver_spawn): Print an empty string in log_info
2891         if the host is not set (e.g. finger).
2892
2893 2004-10-10  David Shaw  <dshaw@jabberwocky.com>
2894
2895         * card-util.c, keyedit.c, openfile.c, pkclist.c, delkey.c,
2896         keygen.c, photoid.c, revoke.c: Some yes-or-no prompts end in
2897         "(y/n)".  Some don't.  Consistently use y/n everywhere.
2898
2899         * keygen.c (ask_key_flags): New.
2900         (ask_algo): Call it here in --expert mode so we don't need to
2901         specify each possible variation of RSA capabilities.
2902
2903         * keygen.c (do_add_key_flags): The spec says that all primary keys
2904         MUST be able to certify.  Force the certify flag on for primaries
2905         (and off for subkeys).
2906
2907         * keygen.c (generate_keypair): Fix generating keys with the auth
2908         flag.
2909
2910 2004-10-08  David Shaw  <dshaw@jabberwocky.com>
2911
2912         * encr-data.c (decrypt_data): Give a warning with a weak key, but
2913         still allow to decrypt the message.
2914
2915 2004-10-07  David Shaw  <dshaw@jabberwocky.com>
2916
2917         * pkclist.c (build_pk_list): Keystrify.
2918
2919         * mainproc.c (check_sig_and_print), pkclist.c
2920         (do_edit_ownertrust): Improve translatability of user ID prompts.
2921
2922 2004-10-06  David Shaw  <dshaw@jabberwocky.com>
2923
2924         * helptext.c, pkclist.c (do_we_trust): It is not possible to get
2925         here with a revoked or expired key, so BUG() that case.  Remove
2926         question about overriding revoked/expired.  Also
2927         --keyid-format-ify.
2928         (do_we_trust_pre): Use print_pubkey_info() instead of printing the
2929         info ourselves.
2930
2931         * passphrase.c (passphrase_to_dek): Improve translatability of
2932         user ID prompts.
2933
2934         * keylist.c (print_pubkey_info): Use the user ID the pk was
2935         selected by, if any.
2936
2937         * keyedit.c (sign_uids, ask_revoke_sig): Improve translatability
2938         of user ID prompts.
2939         (ask_revoke_sig, menu_revsig): Try and use common strings for
2940         these two functions so they don't need to be translated twice.
2941
2942         * keyedit.c, keylist.c, keyserver.c, mainproc.c: The
2943         revoked/expired/expires string change of 2004-09-29 was too
2944         simple.  Use two styles for each tag.
2945
2946 2004-10-06  Werner Koch  <wk@g10code.com>
2947
2948         * ccid-driver.c (ccid_open_reader): Store the vendor ID.
2949         (ccid_transceive_secure): New.
2950         (parse_ccid_descriptor): Workaround for an SCM reader problem.
2951         (send_escape_cmd): New.
2952
2953 2004-10-05  David Shaw  <dshaw@jabberwocky.com>
2954
2955         * passphrase.c (agent_get_passphrase): Use keystrs for agent
2956         strings, and fix sprintf warnings.
2957
2958         * keyserver.c (keyserver_spawn): Fix BUG() with certain sets of
2959         mixed regular and preferred keyserver refreshes.  Noted by
2960         Sebastian Wiesinger.
2961
2962         * keyedit.c (show_key_with_all_names): Show uid validity in menu.
2963
2964 2004-10-03  Timo Schulz  <twoaday@g10code.de>
2965
2966         * apdu.c (apdu_open_remote_reader) [_WIN32]: Do not set ENOSYS.
2967         
2968 2004-10-03  David Shaw  <dshaw@jabberwocky.com>
2969
2970         * keyedit.c (print_and_check_one_sig_colon): Fix bad keyids in
2971         colon delsig output.  Noted by Peter Palfrader.
2972         (show_prefs): Do not reference missing selfsig.  Noted by Alex
2973         Moroz.
2974
2975 2004-10-01  Werner Koch  <wk@g10code.com>
2976
2977         * gpgv.c (i18n_init): Always use LC_ALL.
2978
2979 2004-09-30  Werner Koch  <wk@g10code.com>
2980
2981         * app-openpgp.c (verify_chv3) [GNUPG_MAJOR_VERSION!=1]: Typo fix.
2982
2983 2004-09-30  David Shaw  <dshaw@jabberwocky.com>
2984
2985         * gpgv.c, keydb.c (keydb_add_resource): Factored keyring creation
2986         out to ..
2987         (maybe_create_keyring): .. new.  Make sure that we do the checks
2988         in a locked state.  Problem reported by Stefan Haller.  Try to
2989         create the home directory before acquiring a lock for the keyring.
2990         From Werner on stable branch.
2991
2992         * g10.c (main): Blow up if we didn't lose setuid.  From Werner on
2993         stable branch.
2994
2995 2004-09-29  David Shaw  <dshaw@jabberwocky.com>
2996
2997         * keyedit.c, keylist.c, keyserver.c, mainproc.c: Reduce the many
2998         variations of "revoked" ("revoked", "[revoked]", " [revoked]",
2999         "[revoked] ") "and" expired down to two to simplify translation.
3000
3001 2004-09-28  David Shaw  <dshaw@jabberwocky.com>
3002
3003         * keyedit.c (print_and_check_one_sig): Account for the extra space
3004         that show-sig-expire takes up so we do not wrap lines.
3005         (show_key_with_all_names): No need to show subkey revocations as a
3006         seperate line since we now show revocation date in the main subkey
3007         line.
3008
3009         * signal.c (got_fatal_signal): HAVE_DECL_SYS_SIGLIST is defined,
3010         but zero if not found.  Noted by John Clizbe.
3011
3012         * keyserver.c (parse_keyrec): Fix problem with non-expiring keys
3013         appearing expired in --search-keys results.
3014
3015 2004-09-27  Werner Koch  <wk@g10code.com>
3016
3017         * card-util.c (card_edit): Take admin only status from the table.
3018
3019         * app-openpgp.c: Made all strings translatable.
3020         (verify_chv3) [GNUPG_MAJOR_VERSION]: Make opt.allow_admin
3021         available for use in gnupg 2. 
3022         (verify_chv3): Reimplemented countdown showing to use only
3023         functions from this module.  Flush the CVH status cache on a
3024         successful read.
3025         (get_one_do): Hack to bypass the cache for cards versions > 1.0.
3026         (store_fpr): Store the creation date for card version > 1.0.
3027
3028 2004-09-25  David Shaw  <dshaw@jabberwocky.com>
3029
3030         * main.h, g10.c (main), card-util.c (change_pin): If "admin" has
3031         not been issued, skip right to the CHV1/CHV2 PIN change.  No need
3032         to show the unblock or admin PIN change option.
3033         (card_edit): Add "admin" command to add admin commands to the
3034         menu.  Do not allow admin commands until "admin" is given.
3035
3036         * app-openpgp.c (verify_chv3): Show a countdown of how many wrong
3037         admin PINs can be entered before the card is locked.
3038
3039         * options.h, g10.c (main), app-openpgp.c (verify_chv3): Remove
3040         --allow-admin.
3041
3042 2004-09-24  David Shaw  <dshaw@jabberwocky.com>
3043
3044         * main.h: Create S2K_DIGEST_ALGO macro so we do not need to always
3045         set opt.s2k_digest_algo.  This helps fix a problem with PGP 2.x
3046         encrypted symmetric messages.  Change all callers (encode.c,
3047         g10.c, keyedit.c, keygen.c, passphrase.c, sign.c).
3048
3049         * armor.c, cardglue.c, getkey.c, import.c, keygen.c: Be consistent
3050         in some more quoted strings.  Always use 'user ID', not 'user id',
3051         "quotes" for user IDs, etc.
3052
3053         * keyedit.c (keyedit_menu), gpgv.c (agent_scd_getattr (stub)),
3054         keygen.c (copy_mpi, generate_raw_key): Fix a compile problem and a
3055         few warnings when building without card support.
3056
3057 2004-09-23  Werner Koch  <wk@g10code.com>
3058
3059         * card_util.c (generate_card_keys): ask whether backup should be
3060         created.
3061         (card_store_subkey): Factored some code out to ..
3062         * keygen.c (save_unprotected_key_to_card): .. new function.
3063         (gen_card_key_with_backup): New.
3064         (generate_raw_key): New.
3065         (generate_keypair): New arg BACKUP_ENCRYPTION_DIR.  Changed all
3066         callers.
3067         (do_generate_keypair): Divert to gen_card_key_with_backup when
3068         desired.
3069
3070         * apdu.c (open_pcsc_reader): Do not print empty reader string.
3071
3072         * keygen.c (ask_algo): Allow creation of AUTH keys.
3073
3074         * keyid.c (usagestr_from_pk): New.
3075
3076         * app-openpgp.c (app_openpgp_storekey): Call flush_cache.
3077         (get_cached_data): Move local data initialization to ..
3078         (app_select_openpgp): .. here. Read some flags for later use.
3079         (do_getattr): New read-only attribute EXTCAP.
3080
3081         * keyedit.c (keyedit_menu): New command "keytocard"
3082         (keyedit_menu): Bad hack for the not_with_sk element.
3083         (show_key_with_all_names): Print the usage.
3084         (find_pk_from_sknode): New.
3085
3086         * card-util.c (card_store_subkey): New.
3087         (copy_mpi): New.
3088
3089         * cardglue.c (agent_openpgp_storekey): New.
3090
3091 2004-09-22  Werner Koch  <wk@g10code.com>
3092
3093         * card-util.c (card_generate_subkey, generate_card_keys): Factored
3094         common code out to ...
3095         (get_info_for_key_operation, check_pin_for_key_operation)
3096         (restore_forced_chv1, replace_existing_key_p)
3097         (show_card_key_info): ... new functions.
3098
3099 2004-09-21  David Shaw  <dshaw@jabberwocky.com>
3100
3101         * mainproc.c (check_sig_and_print), keyedit.c (show_prefs,
3102         menu_set_keyserver_url): Make sure that keyserver URLs with
3103         control characters inside are printed properly.  In fact, handle
3104         them as UTF8.
3105
3106         * keyedit.c (keyedit_menu): Don't show "addcardkey" in the menu if
3107         we do not have card support.
3108
3109         * keydb.h, keyserver.c (print_keyrec, keyserver_spawn): fpr is an
3110         array of unsigned bytes.
3111
3112 2004-09-20  Werner Koch  <wk@g10code.com>
3113
3114         * g10.c: Make -K an alias for --list-secret-keys.
3115
3116         * keylist.c (print_card_serialno): New. Taken from gnupg 1.9.11.
3117         (list_keyblock_print): Make use of it.
3118         * keyedit.c (show_key_with_all_names): Print the card S/N.
3119
3120         * keyedit.c (keyedit_menu): New command ADDCARDKEY.
3121         * card-util.c (card_generate_subkey): New.
3122         * keygen.c (generate_card_subkeypair): New.
3123         (gen_card_key): New arg IS_PRIMARY; changed all callers.
3124
3125         * cardglue.c (open_card): Use shutdown code if possible.
3126         (check_card_serialno): Ditto.
3127
3128         * ccid-driver.c (do_close_reader): Factored some code out from ...
3129         (ccid_close_reader): ..here.
3130         (ccid_shutdown_reader): New.
3131
3132         * apdu.c (apdu_shutdown_reader): New.
3133         (shutdown_ccid_reader): New.
3134
3135 2004-09-17  Werner Koch  <wk@g10code.com>
3136
3137         * g10.c (list_config): New config option ccid-reader-id.
3138         (gpgconf_list): Add "reader-port".
3139
3140         * apdu.c (open_ccid_reader): New arg PORTSTR.  Pass it to
3141         ccid_open_reader.
3142         (apdu_open_reader): Pass portstr to open_ccid_reader.
3143         (apdu_open_reader): No fallback if a full CCID reader id has been
3144         given.
3145
3146         * ccid-driver.c (ccid_get_reader_list): New.
3147         (ccid_open_reader): Changed API to take a string for the reader.
3148         Removed al the cruft for the libusb development vesion which seems
3149         not to be maintained anymore and there are no packages anyway.
3150         The stable library works just fine.
3151         (struct ccid_reader_id_s): Deleted and replaced everywhere by a
3152         simple string.
3153         (usb_get_string_simple): Removed.
3154         (bulk_in): Do valgrind hack here and not just everywhere.
3155
3156 2004-09-16  David Shaw  <dshaw@jabberwocky.com>
3157
3158         * keyedit.c (show_key_with_all_names, show_prefs): Show preferred
3159         keyserver(s) in "showpref" output.
3160
3161         * keygen.c (keygen_add_keyserver_url), keyedit.c
3162         (menu_set_keyserver_url): Allow setting a keyserver URL of "none"
3163         to remove an existing keyserver URL.
3164
3165         * keyedit.c (menu_set_keyserver_url): Confirm replacement of a
3166         keyserver URL before overwriting the old one.
3167
3168 2004-09-15  David Shaw  <dshaw@jabberwocky.com>
3169
3170         * gpgv.c (agent_scd_getattr): Stub.
3171
3172         * misc.c (get_signature_count): New.  Get the signature count from
3173         a smartcard.
3174         (pct_expando): Call it here so the %c expando becomes the number
3175         of signatures issued.  This allows for notations or the like with
3176         an automatic signature count.
3177
3178         * ccid-driver.c (usb_get_string_simple): Replacement function to
3179         work with older libusb.
3180
3181 2004-09-15  Werner Koch  <wk@g10code.com>
3182
3183         * g10.c [HAVE_LIBUSB]: New option --debug-ccid-driver.
3184
3185         * ccid-driver.c (read_device_info): Removed.
3186         (make_reader_id, scan_or_find_devices): New.
3187         (ccid_open_reader): Simplified by make use of the new functions.
3188         (ccid_set_debug_level): New.  Changed the macros to make use of
3189         it.  It has turned out that it is often useful to enable debugging
3190         at runtime so I added this option.
3191
3192 2004-09-13  David Shaw  <dshaw@jabberwocky.com>
3193
3194         * getkey.c (premerge_public_with_secret): Fix subkey<->binding sig
3195         mismatch when some secret subkeys are missing.  Discovered by
3196         Michael Roth.
3197
3198         * main.h, keylist.c (print_subpackets_colon): Make a public
3199         function.
3200
3201         * keyedit.c (print_and_check_one_sig_colon): New.  Print a
3202         with-colons version of the sig record.
3203         (menu_delsig): Call it here for a with-colons delsig.
3204
3205 2004-09-12  David Shaw  <dshaw@jabberwocky.com>
3206
3207         * options.h, keylist.c (print_one_subpacket,
3208         print_subpackets_colon): Print a spk record for each request
3209         subpacket.
3210         (list_keyblock_colon): Call them here.
3211
3212         * g10.c (parse_subpacket_list, parse_list_options): New.  Make the
3213         list of subpackets we are going to print.
3214         (main): Call them here.
3215
3216 2004-09-11  David Shaw  <dshaw@jabberwocky.com>
3217
3218         * card-util.c (fetch_url, card_edit): Use the pubkey URL stored on
3219         the card to fetch an updated copy.  Works with either straight
3220         URLs or HKP or LDAP keyservers.
3221
3222         * keyserver-internal.h, keyserver.c (keyserver_import_fprint),
3223         import.c (revocation_present): Use a keyserver_spec so the caller
3224         can pass in whatever keyserver they like.
3225
3226 2004-09-10  David Shaw  <dshaw@jabberwocky.com>
3227
3228         * app-openpgp.c (get_cached_data): Avoid mallocing zero since it
3229         breaks us when using --enable-m-guard.
3230
3231         * ccid-driver.c (read_device_info): Fix segfault when usb device
3232         is not accessible.
3233         (ccid_open_reader): Allow working with an even older version of
3234         libusb (usb_busses global instead of usb_get_busses()).
3235
3236 2004-09-09  Werner Koch  <wk@g10code.com>
3237
3238         * cardglue.h: Add members for CA fingerprints.
3239         * cardglue.c (agent_release_card_info): Invalid them.
3240         (learn_status_cb): Store them.
3241
3242         * app-common.h, app-openpgp.c, iso7816.c, iso7816.h
3243         * apdu.c, apdu.h, ccid-driver.c, ccid-driver.h
3244         * card-util.c: Updated from current gnupg-1.9.
3245
3246         Changes are:
3247
3248         * ccid-driver.h (CCID_DRIVER_ERR_ABORTED): New.
3249         * ccid-driver.c (ccid_open_reader): Support the stable 0.1 version
3250         of libusb.
3251         (ccid_get_atr): Handle short messages.
3252         * apdu.c (my_rapdu_get_status): Implemented.
3253         * apdu.c: Include <signal.h>.
3254         * apdu.c (reader_table_s):  Add function pointers for the backends.
3255         (apdu_close_reader, apdu_get_status, apdu_activate) 
3256         (send_apdu): Make use of them.
3257         (new_reader_slot): Intialize them to NULL.
3258         (dump_ccid_reader_status, ct_dump_reader_status): New.
3259         (dump_pcsc_reader_status): New.
3260         (open_ct_reader, open_pcsc_reader, open_ccid_reader) 
3261         (open_osc_reader, open_rapdu_reader): Intialize function pointers.
3262         (ct_activate_card, ct_send_apdu, pcsc_send_apdu, osc_send_apdu) 
3263         (error_string): Removed.  Replaced by apdu_strerror.
3264         (get_ccid_error_string): Removed.
3265         (ct_activate_card): Remove the unused loop.
3266         (reset_ct_reader): Implemented.
3267         (ct_send_apdu): Activate the card if not yet done.
3268         (pcsc_send_apdu): Ditto.
3269         * ccid-driver.h: Add error codes.
3270         * ccid-driver.c: Implement more or less proper error codes all
3271         over the place.
3272         * apdu.c (apdu_send_direct): New.
3273         (get_ccid_error_string): Add some error code mappings.
3274         (send_apdu): Pass error codes along for drivers already supporting
3275         them.
3276         (host_sw_string): New.
3277         (get_ccid_error_string): Use above.
3278         (send_apdu_ccid): Reset the reader if it has not yet been done.
3279         (open_ccid_reader): Don't care if the ATR can't be read.
3280         (apdu_activate_card): New.
3281         (apdu_strerror): New.
3282         (dump_reader_status): Only enable it with opt.VERBOSE.
3283         * iso7816.c (map_sw): Add mappings for the new error codes.
3284         * apdu.c (open_ct_reader, open_pcsc_reader, open_ccid_reader)
3285         (reset_ccid_reader, open_osc_reader): Call dump_reader_status only
3286         in verbose mode.
3287         * app-openpgp.c (do_getattr): Fix for sending CA-FPR.
3288         * app-openpgp.c (app_openpgp_readkey): Fixed check for valid
3289         exponent.
3290         * app-openpgp.c (do_setattr): Sync FORCE_CHV1.
3291         * card-util.c (change_login): Kludge to allow reading data from a
3292         file.
3293         (card_edit): Pass ARG_STRING to change_login.
3294         (card_status): Print CA fingerprints.
3295         (change_cafpr): New.
3296         (card_edit): New command CAFPR.
3297
3298 2004-04-30  Werner Koch  <wk@gnupg.org>
3299
3300         * g10.c (main) <gpgconf>: Use gpg.conf and not /dev/null as
3301         default filename.
3302
3303 2004-04-28  Werner Koch  <wk@gnupg.org>
3304
3305         * card-util.c (card_edit): Remove PIN verification.
3306         (generate_card_keys): New arg SERIALNO.  Do PIN verification here
3307         after resetting forced_chv1.
3308
3309         
3310 2004-09-09  Werner Koch  <wk@g10code.com>
3311
3312         * signal.c (got_fatal_signal): Do readline cleanup.  Print signal
3313         number if we can't print the name. Use new autoconf macro
3314         HAVE_DECL_SYS_SIGLIST.
3315         (get_signal_name): Removed.
3316
3317         * photoid.c: Include ttyio.h.
3318
3319         * parse-packet.c (skip_rest): Removed.  Changed all callers to use
3320         the new iobuf_skip_reset.  Orginal patch by Florian Weimer.
3321
3322 2004-09-07  Werner Koch  <wk@g10code.de>
3323
3324         * photoid.c (generate_photo_id): Use tty_printf and not just
3325         printf.  Put _() around one string.
3326
3327 2004-09-03  David Shaw  <dshaw@jabberwocky.com>
3328
3329         * keyserver.c (parse_keyrec): Force the 'e'xpired flag on as soon
3330         as we know the key is definitely expired.  Some translatable
3331         string cleanup.
3332
3333 2004-08-27  David Shaw  <dshaw@jabberwocky.com>
3334
3335         * encode.c, exec.c, g10.c, sign.c: Some translatable string
3336         cleanup.  Change some "this" to `this'.
3337
3338 2004-08-23  David Shaw  <dshaw@jabberwocky.com>
3339
3340         * keyserver.c (keyserver_spawn): Show log line for what keyserver
3341         action we are taking.
3342
3343         * keyid.c (keystr): If printing a keyid that lacks the high 4
3344         bytes, print the low 4 alone.
3345         (keystr_from_desc): Handle short keyids and warn on v3
3346         fingerprints.
3347
3348         * keydb.h, getkey.c (get_user_id_printable,
3349         get_user_id_string_printable): Rename to get_user_id_native and
3350         get_user_id_string_native and remove the printable stuff since
3351         we're print-ifying valid utf8 characters.  Change all callers in
3352         import.c, sign.c, keylist.c, and encode.c.
3353
3354         * keyserver.c (keyserver_search_prompt): Make sure the search
3355         string is converted from UTF-8 before display.
3356
3357 2004-08-19  Werner Koch  <wk@g10code.de>
3358
3359         * seskey.c (encode_session_key): Changed the zero random byte
3360         substituting code to actually do clever things.  Thanks to
3361         Matthias Urlichs for noting the implementation problem.
3362
3363 2004-08-18  Marcus Brinkmann  <marcus@g10code.de>
3364
3365         * passphrase.c (agent_get_passphrase): Fix detection of gpg-agent
3366         cancellation.
3367
3368 2004-08-08  David Shaw  <dshaw@jabberwocky.com>
3369
3370         * plaintext.c (handle_plaintext): Bigger buffer for extra safety.
3371
3372         * g10.c (main): New alias --throw-keyid for --throw-keyids, so
3373         that it continues to work in old configuration files.  Noted by
3374         Jens Adam.
3375
3376         * pkclist.c (algo_available): --pgp8 now allows blowfish, zlib,
3377         and bzip2.
3378
3379         * status.c (do_get_from_fd): Flush stdout if status isn't flushing
3380         it for us.  This guarantees that any menus that were displayed
3381         before the prompt don't get stuck in a buffer.  Noted by Peter
3382         Palfrader.  This is Debian bug #254072.
3383
3384         * sign.c (update_keysig_packet): Revert change of 2004-05-18.  It
3385         is not appropriate to strip policy and notations when remaking a
3386         sig.  That should only happen when specifically requested by the
3387         user.
3388
3389 2004-08-05  David Shaw  <dshaw@jabberwocky.com>
3390
3391         * armor.c (radix64_read): No armor CRC is legal according to the
3392         spec (the CRC is a MAY).
3393
3394 2004-07-28  David Shaw  <dshaw@jabberwocky.com>
3395
3396         * misc.c (argsplit): Properly split quoted args from the keyword
3397         and trim whitespace afterwards.
3398
3399 2004-07-27  David Shaw  <dshaw@jabberwocky.com>
3400
3401         * misc.c (optsep): Add the ability to understand keyword="quoted
3402         arg with spaces" type options.
3403
3404 2004-07-16  David Shaw  <dshaw@jabberwocky.com>
3405
3406         * keylist.c (list_keyblock_print): Always use the new listing
3407         format where uids are always on a line for themselves.  Mark
3408         expired secret keys as expired.
3409
3410         * options.h, g10.c (main): Rename list show-validity to
3411         show-uid-validity as it only shows for uids.
3412
3413         * armor.c (armor_filter): Do not use padding to get us to 8 bytes
3414         of header.  Rather, use 2+4 as two different chunks.  This avoids
3415         a fake filename of "is".
3416
3417 2004-07-15  David Shaw  <dshaw@jabberwocky.com>
3418
3419         * keyedit.c (sign_uids): Properly handle remaking a self-sig on
3420         revoked or expired user IDs.  Also, once we've established that a
3421         given uid cannot or will not be signed, don't continue to ask
3422         about each sig.
3423
3424         * mainproc.c (proc_symkey_enc), seckey-cert.c (do_check): Check
3425         the S2K hash algorithm before we try to generate a passphrase
3426         using it.  This prevents hitting BUG() when generating a
3427         passphrase using a hash that we don't have.
3428
3429         * sign.c (sign_symencrypt_file): Allow using --force-mdc in --sign
3430         --symmetric messages.
3431
3432         * g10.c (main): Alias --charset as --display-charset to help avoid
3433         the continuing confusion and make room for possible changes in
3434         devel.
3435
3436         * parse-packet.c (parse_plaintext): Show the hex value for the
3437         literal packet mode since it may not be printable.
3438
3439         * keygen.c (make_backsig): Make sure that the backsig was built
3440         successfully before we try and use it.
3441
3442         * status.h, status.c (get_status_string), plaintext.c
3443         (handle_plaintext): New status tags PLAINTEXT and
3444         PLAINTEXT_LENGTH.
3445
3446 2004-06-16  Werner Koch  <wk@gnupg.org>
3447
3448         * free-packet.c (copy_secret_key): Get last fix right.
3449
3450 2004-06-16  Werner Koch  <wk@gnupg.org>
3451
3452         * free-packet.c (copy_secret_key): Fixed memory leak when D is not
3453         NULL.
3454
3455         * passphrase.c (passphrase_to_dek): Added a few comments to the
3456         code.
3457
3458 2004-05-26  David Shaw  <dshaw@jabberwocky.com>
3459
3460         * keyserver.c (keyserver_refresh): Keep track of keys already
3461         fetched so we don't do a regular keyserver fetch if the preferred
3462         keyserver fetch has exhausted the list.
3463
3464 2004-05-23  David Shaw  <dshaw@jabberwocky.com>
3465
3466         * verify.c (verify_signatures): Verify multiple files in the same
3467         order in which we hashed them when issuing the signature.  Noted
3468         by Nicholas Cole.
3469
3470         * pkclist.c (do_edit_ownertrust): Fix a kbnode leak and do another
3471         keyid-format conversion.
3472
3473 2004-05-22  Werner Koch  <wk@gnupg.org>
3474
3475         * trustdb.c (check_regexp): s/EXP/EXPR/.
3476
3477         * keyedit.c (trustsig_prompt): Remoev useless range check.
3478
3479         * options.h: Renamed ctrl to glo_ctrl.  Changed all users.
3480
3481         * ccid-driver.c (ccid_open_reader): Print a warning when CCID
3482         can't be used.
3483
3484 2004-05-21  David Shaw  <dshaw@jabberwocky.com>
3485
3486         * mainproc.c (check_sig_and_print): If we're honoring preferred
3487         keyservers, and auto-key-retrieve is set, try and get a missing
3488         key from the preferred keyserver subpacket when we verify the sig.
3489
3490         * gpgv.c (parse_preferred_keyserver, free_keyserver_spec): Stubs.
3491
3492         * keyserver.c (keyidlist): Use new parse_preferred_keyserver
3493         function.
3494         (keyserver_work): Use the passed-in keyserver spec rather than the
3495         options global one.
3496
3497         * keyserver-internal.h, keyserver.c (parse_preferred_keyserver):
3498         New function to take a sig and return a split out keyserver_spec.
3499         (keyserver_import_keyid): Now takes a keyserver_spec.
3500
3501         * keyserver.c (keyidlist): Go back to the old fast keyid lister.
3502         Only merge selfsigs if we have to for honor-keyserver-url.
3503         (keyserver_refresh): Keyserver URL handler moved here.
3504         (calculate_keyid_fpr): Removed.
3505
3506         * keydb.h, keyid.c (keystr_from_desc): Calculate a key string from
3507         a KEYDB_SEARCH_DESC.
3508
3509         * keyserver.c (keyserver_spawn): Fix keyserver options on tempfile
3510         only platforms.  Noted by Roger Sondermann.
3511
3512 2004-05-20  David Shaw  <dshaw@jabberwocky.com>
3513
3514         * keyserver.c (keyserver_work): Allow --refresh-keys with a
3515         preferred keyserver to happen even if there is no global keyserver
3516         set.
3517
3518         * sig-check.c (do_check_messages): No need to check for Elgamal
3519         signatures any longer.
3520         (do_check_messages, do_check, check_key_signature2):
3521         --keyid-format conversion.
3522
3523         * pkclist.c (show_paths, edit_ownertrust): Remove some unused
3524         code.
3525
3526         * options.h (ctrl): New for member IN_AUTO_KEY_RETRIEVE.
3527
3528         * mainproc.c (check_sig_and_print): track whether we are
3529         retrieving a key.
3530
3531         * status.c (status_currently_allowed): New.
3532         (write_status_text, write_status_text_and_buffer): Use it here.
3533
3534         * g10.c: New command --gpgconf-list.
3535         (gpgconf_list): New.  From Werner on stable branch.
3536
3537 2004-05-19  David Shaw  <dshaw@jabberwocky.com>
3538
3539         * pubkey-enc.c (get_session_key, get_it), keyedit.c
3540         (show_key_with_all_names, show_basic_key_info): --keyid-format
3541         conversion.
3542
3543 2004-05-18  David Shaw  <dshaw@jabberwocky.com>
3544
3545         * sign.c (update_keysig_packet): Policies and notations should be
3546         stripped out when remaking a self-signature.  Noted by Atom
3547         Smasher.
3548
3549         * keyserver.c (parse_keyserver_uri): Fix compiler warnings.
3550
3551 2004-05-11  David Shaw  <dshaw@jabberwocky.com>
3552
3553         * options.h, keyserver-internal.h, keyserver.c
3554         (parse_keyserver_uri): Improved URI parser that keeps track of the
3555         path information and doesn't modify the input string.
3556         (keyserver_spawn): Tell keyserver plugins about the path.
3557
3558 2004-05-11  Werner Koch  <wk@gnupg.org>
3559
3560         * keylist.c (show_policy_url, show_keyserver_url, show_notation) 
3561         (list_one): Use const char* for i18n string helpers.
3562
3563         * keygen.c (do_generate_keypair, read_parameter_file): Really
3564         close the files.
3565         (do_generate_keypair): Create the secret key file using safe
3566         permissions.  Noted by Atom Smasher.
3567
3568 2004-05-10  David Shaw  <dshaw@jabberwocky.com>
3569
3570         * options.h, mainproc.c (symkey_decrypt_seskey), keyserver.c
3571         (struct keyrec, parse_keyrec, keyserver_search_prompt), keyedit.c
3572         (keyedit_menu), g10.c (add_keyserver_url, add_policy_url): Fix
3573         some compiler warnings.
3574
3575 2004-05-08  David Shaw  <dshaw@jabberwocky.com>
3576
3577         * keyedit.c (keyedit_menu, menu_set_keyserver_url): Allow passing
3578         preferred keyserver on "keyserver" command line.  Sanity check
3579         keyserver URL before accepting it.
3580
3581         * keyserver-internal.h, g10.c (main), keyserver.c
3582         (parse_keyserver_uri): Add an option to require the scheme:// and
3583         change all callers.
3584         (free_keyserver_spec): Make public.
3585
3586 2004-05-07  Werner Koch  <wk@gnupg.org>
3587
3588         * sign.c (write_plaintext_packet): Fixed the detection of too
3589         large files in the same way as in encode.c.
3590
3591 2004-05-04  David Shaw  <dshaw@jabberwocky.com>
3592
3593         * keylist.c (show_notation): Use bits to select which sort of
3594         notation to show.  Don't allow a not-shown notation to prevent us
3595         from issuing the proper --status-fd message.
3596
3597         * options.h, g10.c (main): Add show-std/standard-notations and
3598         show-user-notations.  show-notations is both.  Default is to show
3599         standard notations only during verify.  Change all callers.
3600
3601 2004-04-28  David Shaw  <dshaw@jabberwocky.com>
3602
3603         * main.h, keylist.c (show_notation): Add argument to show only
3604         user notations, only standard notations, or both.  Change all
3605         callers.
3606
3607         * keyserver.c (keyserver_spawn): We still need EXEC_TEMPFILE_ONLY.
3608
3609 2004-04-28  Werner Koch  <wk@gnupg.org>
3610
3611         * card-util.c (card_edit): Require PIN only for generate. 
3612
3613         * app-openpgp.c (do_setattr): Sync FORCE_CHV1.
3614
3615 2004-04-27  Werner Koch  <wk@gnupg.org>
3616
3617         * keyserver.c (keyserver_spawn) [EXEC_TEMPFILE_ONLY]: Removed
3618         setting use_temp_file because this option has been removed.
3619
3620         * g10.c: New commands --allow-admin and --deny-admin.
3621         * options.h (opt): Add member ALLOW_ADMIN.
3622
3623         * tlv.h, tlv.c: New.  Copied from gnupg-1.9. 
3624         * cardglue.c (open_card): The serialno is now set internally by
3625         app_select_openpgp; changed invocation.
3626         * cardglue.h (app_t, ctrl_t): New.
3627         (GPG_ERR_EBUSY, GPG_ERR_ENOENT, GPG_ERR_NOT_FOUND, GPG_ERR_BUG) 
3628         (GPG_ERR_NOT_IMPLEMENTED, GPG_ERR_EACCESS): New.
3629         (gpg_err_code_from_errno): New.
3630
3631         * app-common.h, app-openpgp.c, iso7816.c, iso7816.h
3632         * apdu.c, apdu.h, ccid-driver.c, ccid-driver.h
3633         * card-util.c: Updated from current gnupg-1.9.
3634
3635         Changes are:
3636
3637         * app-common.h: New members FNC.DEINIT and APP_LOCAL.
3638         * app-openpgp.c (do_deinit): New.
3639         (get_cached_data, flush_cache_item, flush_cache_after_error)
3640         (flush_cache): New.
3641         (get_one_do): Replaced arg SLOT by APP.  Make used of cached data.
3642         (verify_chv2, verify_chv3): Flush some cache item after error.
3643         (do_change_pin): Ditto.
3644         (do_sign): Ditto.
3645         (do_setattr): Flush cache item.
3646         (do_genkey): Flush the entire cache.
3647         (compare_fingerprint): Use cached data.
3648
3649         * apdu.c (apdu_send_le): Reinitialize RESULTLEN.  Handle
3650         SW_EOF_REACHED like SW_SUCCESS.
3651
3652         * ccid-driver.c (parse_ccid_descriptor): Store some of the reader
3653         features away.  New arg HANDLE
3654         (read_device_info): New arg HANDLE. Changed caller.
3655         (bulk_in): Handle time extension requests.
3656         (ccid_get_atr): Setup parameters and the IFSD.
3657         (compute_edc): New. Factored out code.
3658         (ccid_transceive): Use default NADs when required.
3659
3660         * apdu.h: New pseudo stati SW_HOST_NOT_SUPPORTED,
3661         SW_HOST_LOCKING_FAILED and SW_HOST_BUSY.
3662         * iso7816.c (map_sw): Map it.
3663         
3664         * ccid-driver.c (ccid_slot_status): Add arg STATUSBITS.
3665         * apdu.c (apdu_get_status): New.
3666         (ct_get_status, pcsc_get_status, ocsc_get_status): New stubs.
3667         (get_status_ccid): New.
3668         (apdu_reset): New.
3669         (reset_ct_reader, reset_pcsc_reader, reset_osc_reader): New stubs.
3670         (reset_ccid_reader): New.
3671         (apdu_enum_reader): New.
3672         
3673         * apdu.c (lock_slot, trylock_slot, unlock_slot): New helpers.
3674         (new_reader_slot) [USE_GNU_PTH]: Init mutex.
3675         (apdu_reset, apdu_get_status, apdu_send_le): Run functions
3676         in locked mode.
3677         
3678 2004-04-25  David Shaw  <dshaw@jabberwocky.com>
3679
3680         * getkey.c (get_seckey_byname2): Significantly simplify this
3681         function by using key_byname to do the heavy lifting.  Note that
3682         this also fixes an old problem when the first key on the secret
3683         keyring has an unusable stub primary, but is still chosen.
3684
3685         * getkey.c (key_byname): If namelist is NULL, return the first key
3686         in the keyring.
3687
3688 2004-04-22  David Shaw  <dshaw@jabberwocky.com>
3689
3690         * keygen.c (make_backsig): If DO_BACKSIGS is not defined, do not
3691         create backsigs.
3692
3693         * getkey.c (merge_selfsigs_subkey): Find 0x19 backsigs on subkey
3694         selfsigs and verify they are valid.  If DO_BACKSIGS is not
3695         defined, fake this as always valid.
3696
3697         * packet.h, parse-packet.c (parse_signature): Make parse_signature
3698         non-static so we can parse 0x19s in self-sigs.
3699
3700         * main.h, sig-check.c (check_backsig): Check a 0x19 signature.
3701         (signature_check2): Give a backsig warning if there is no or a bad
3702         0x19 with signatures from a subkey.
3703
3704 2004-04-21  David Shaw  <dshaw@jabberwocky.com>
3705
3706         * parse-packet.c (dump_sig_subpkt, parse_one_sig_subpkt,
3707         can_handle_critical): Parse and display 0x19 signatures.
3708
3709 2004-04-20  David Shaw  <dshaw@jabberwocky.com>
3710
3711         * keyserver.c (parse_keyserver_uri): Do not accept "http" as an
3712         alias for "hkp".  They are not the same thing.
3713
3714 2004-04-19  David Shaw  <dshaw@jabberwocky.com>
3715
3716         * options.h, g10.c (main): Add keyserver-option
3717         honor-keyserver-url.  parse_keyserver_options now returns a
3718         success code.
3719
3720         * keyserver.c (parse_keyserver_options): Return error on failure
3721         to parse.  Currently there is no way to fail as any unrecognized
3722         options get saved to be sent to the keyserver plugins later.
3723         Check length of keyserver option tokens since with =arguments we
3724         must only match the prefix.
3725         (free_keyserver_spec): Moved code from parse_keyserver_url.
3726         (keyserver_work, keyserver_spawn): Pass in a struct keyserver_spec
3727         rather than using the global keyserver option.
3728         (calculate_keyid_fpr): New.  Fills in a KEYDB_SEARCH_DESC for a
3729         key.
3730         (keyidlist): New implementation using get_pubkey_bynames rather
3731         than searching the keydb directly.  If honor-keyserver-url is set,
3732         make up a keyserver_spec and try and fetch that key directly.  Do
3733         not include it in the returned keyidlist in that case.
3734
3735 2004-04-16  David Shaw  <dshaw@jabberwocky.com>
3736
3737         * plaintext.c (handle_plaintext): Accept 'u' as a plaintext mode
3738         that requires end of line conversion.  This is being considered
3739         for a UTF8 text packet.  If this doesn't take place, no major harm
3740         done.  If it does take place, we'll get a jump on starting the
3741         changeover.
3742
3743         * g10.c (main): --no-use-embedded-filename.
3744
3745         * build-packet.c (calc_plaintext, do_plaintext): Do not create
3746         illegal (packet header indicates a size larger than the actual
3747         packet) encrypted data packets when not compressing and using a
3748         filename longer than 255 characters.
3749
3750         * keyedit.c (no_primary_warning): Cleanup. (menu_expire): Don't
3751         give primary warning for subkey expiration changes.  These cannot
3752         reorder primaries.
3753
3754         * keygen.c (gen_elg, gen_dsa, gen_rsa, do_create,
3755         do_generate_keypair, generate_subkeypair): New is_subkey argument
3756         to set whether a generated key is a subkey.  Do not overload the
3757         ret_sk.  This is some early cleanup to do backsigs for signing
3758         subkeys.
3759
3760         * keygen.c (write_keybinding, do_generate_keypair,
3761         generate_subkeypair): Keep track of the unprotected subkey secret
3762         key so we can make a backsig with it.
3763
3764         * keygen.c (make_backsig): New function to add a backsig to a
3765         binding sig of signing subkeys.  Currently disabled.
3766         (write_keybinding): Call it here, for signing subkeys only.
3767
3768         * sign.c (make_keysig_packet): Allow generating 0x19 signatures
3769         (same as 0x18 or 0x28, but used for backsigs).
3770
3771         * packet.h, build-packet.c (build_sig_subpkt): Add new
3772         SIGSUBPKT_SIGNATURE type for embedded signatures.
3773
3774         * main.h, misc.c (optsep, argsplit, optlen, parse_options):
3775         Simplify code and properly handle a partial match against an
3776         option with an argument.
3777
3778         * keyserver-internal.h, keyserver.c (parse_keyserver_options): Use
3779         new optsep and argsplit functions.
3780
3781 2004-04-15  David Shaw  <dshaw@jabberwocky.com>
3782
3783         * main.h, misc.c (argsplit): Refactor argsep into argsplit and
3784         argsep so they can be called separately.
3785
3786         * options.h, keyserver.c (parse_keyserver_options): Remove
3787         duplicate code from parse_keyserver_options by calling the generic
3788         parse_options.
3789
3790         * keyserver.c (keyserver_spawn, keyserver_refresh), g10.c (main),
3791         gpgv.c (main), mainproc.c (check_sig_and_print), import.c
3792         (revocation_present): Change all callers.
3793
3794 2004-04-14  David Shaw  <dshaw@jabberwocky.com>
3795
3796         * packet.h, getkey.c (fixup_uidnode, merge_selfsigs_subkey): Keep
3797         track of which self-sig we actually chose.
3798
3799         * keyedit.c (menu_expire, menu_set_primary_uid,
3800         menu_set_preferences): Use it here to avoid updating non-used
3801         self-sigs and possibly promoting an old self-sig into
3802         consideration again.
3803
3804         * options.h, import.c, keyserver-internal.h, g10.c, mainproc.c,
3805         keyserver.c (parse_keyserver_uri): Parse keyserver URI into a
3806         structure.  Cleanup for new "guess my keyserver" functionality, as
3807         well as refreshing via a preferred keyserver subpacket.
3808
3809         * options.h: Encapsulate keyserver details.  Change all callers.
3810
3811 2004-04-05  Werner Koch  <wk@gnupg.org>
3812
3813         * status.h (STATUS_NEWSIG): New.
3814         * status.c (get_status_string): Add it. 
3815
3816 2004-03-27  David Shaw  <dshaw@jabberwocky.com>
3817
3818         * keyedit.c (keyedit_menu): Request a trustdb update when adding a
3819         new user ID so the new ID gets validity set.  Reported by Owen
3820         Taylor.
3821
3822 2004-03-25  David Shaw  <dshaw@jabberwocky.com>
3823
3824         * options.h, g10.c (main), compress-bz2.c (init_uncompress):
3825         Rename --bzip2-compress-lowmem to --bzip2-decompress-lowmem since
3826         it applies to decompression, not compression.
3827
3828 2004-03-24  David Shaw  <dshaw@jabberwocky.com>
3829
3830         * keyedit.c (sign_uids, show_key_and_fingerprint, ask_revoke_sig,
3831         menu_revsig, menu_showphoto): --keyid-format conversion.
3832         (menu_addrevoker): Use print_pubkey_info() rather than duplicating
3833         code.
3834
3835 2004-03-19  David Shaw  <dshaw@jabberwocky.com>
3836
3837         * trustdb.c (update_min_ownertrust, validate_keys): Do not use
3838         keystr functions in log_debug.
3839
3840         * import.c (import_one): Try and collapse user IDs when importing
3841         a key for the first time.
3842
3843         * keyedit.c (menu_addrevoker): Allow appointing a subkey as a
3844         designated revoker if the user forces it via keyid!, so long as
3845         the subkey can certify.  Also use the proper date string when
3846         prompting for confirmation.
3847
3848         * g10.c (main): Maintain ordering of multiple Comment lines.
3849         Requested by Peter Hyman.
3850
3851 2004-03-17  David Shaw  <dshaw@jabberwocky.com>
3852
3853         * mainproc.c (proc_pubkey_enc, print_pkenc_list, list_node):
3854         --keyid-format conversion.
3855
3856 2004-03-16  David Shaw  <dshaw@jabberwocky.com>
3857
3858         * getkey.c (skip_unusable, merge_selfsigs_main,
3859         premerge_public_with_secret, lookup, get_user_id_string):
3860         --keyid-format conversion.
3861
3862 2004-03-15  David Shaw  <dshaw@jabberwocky.com>
3863
3864         * trustdb.c (add_utk, verify_own_keys, update_min_ownertrust,
3865         get_validity, ask_ownertrust, validate_keys): --keyid-format
3866         conversion.
3867
3868         * import.c (check_prefs_warning, check_prefs): --keyid-format
3869         conversion and a little better text.
3870         (import_one, import_secret_one, import_revoke_cert, chk_self_sigs,
3871         delete_inv_parts, merge_blocks): Still more --keyid-format
3872         conversions.
3873
3874 2004-03-06  David Shaw  <dshaw@jabberwocky.com>
3875
3876         * keylist.c (print_seckey_info, print_pubkey_info): --keyid-format
3877         conversion.
3878         (list_keyblock_print): 0xshort should not push us into the new
3879         list format since it is not much longer than regular 8-character
3880         short keyids.
3881
3882         * keydb.h, keyid.c (keystr_from_pk, keystr_from_sk): New functions
3883         to pull a key string from a key in one step.  This isn't faster
3884         than before, but makes for neater code.
3885
3886         * keylist.c (list_keyblock_print): Use keystr_from_xx here.
3887         (print_key_data): No need to pass a keyid in.
3888
3889 2004-03-05  David Shaw  <dshaw@jabberwocky.com>
3890
3891         * keyid.c (keyid_from_sk): Minor performance boost by caching
3892         secret key keyids so we don't have to calculate them each time.
3893
3894         * getkey.c (merge_selfsigs_subkey): Do not mark subkeys valid if
3895         we do not support their pk algorithm.  This allows for early
3896         (during get_*) rejection of a subkey, and selection of another.
3897
3898         * passphrase.c (passphrase_to_dek): Give a little more information
3899         when we have room to do so.
3900
3901 2004-03-04  David Shaw  <dshaw@jabberwocky.com>
3902
3903         * revoke.c (export_minimal_pk), export.c (do_export_stream),
3904         passphrase.c (passphrase_to_dek), keyserver.c (print_keyrec): A
3905         few more places to use --keyid-format.
3906
3907         * options.h, g10.c (main), export.c (parse_export_options,
3908         do_export_stream): Remove --export-all and the "include-non-rfc"
3909         export-option as they are no longer meaningful with the removal of
3910         v3 Elgamal keys.
3911
3912         * armor.c (fake_packet, armor_filter): Use the 2440 partial length
3913         encoding for the faked plaintext packet.
3914
3915 2004-03-03  David Shaw  <dshaw@jabberwocky.com>
3916
3917         * options.h, g10.c (main), mainproc.c (check_sig_and_print):
3918         Remove verify-option show-long-keyids and replace with
3919         the more general keyid-format.
3920
3921         * build-packet.c (write_header2): Remove call to start old gpg
3922         partial length mode and change all callers.
3923         (do_plaintext): Turn off partial length encoding now that we're
3924         done writing the packet.
3925         (do_comment, do_user_id): Try for a headerlen of 2 since that's
3926         the smallest and most likely encoding for these packets.
3927
3928         * parse-packet.c (parse): Remove call to start old gpg partial
3929         length mode.
3930
3931 2004-03-02  David Shaw  <dshaw@jabberwocky.com>
3932
3933         * options.h, g10.c (main): Add a more flexible --keyid-format
3934         option to replace the list-option (and eventually verify-option)
3935         show-long-keyids.  The format can be short, long, 0xshort, and
3936         0xlong.
3937
3938         * keydb.h, keyid.c (keystr, keystrlen): New functions to generate
3939         a printable keyid.
3940
3941         * keyedit.c (print_and_check_one_sig, show_key_with_all_names),
3942         keylist.c (list_keyblock_print): Use new keystr() function here to
3943         print keyids.
3944
3945         * packet.h, free-packet.c (free_encrypted, free_plaintext),
3946         parse-packet.c (copy_packet, skip_packet, skip_rest, read_rest,
3947         parse_plaintext, parse_encrypted, parse_gpg_control): Use a flag
3948         to indicate partial or indeterminate encoding.  This is the first
3949         step in some minor surgery to remove the old gpg partial length
3950         encoding.
3951
3952 2004-03-01  David Shaw  <dshaw@jabberwocky.com>
3953
3954         * parse-packet.c (parse): Only data-type packets are allowed to
3955         use OpenPGP partial length encoding.
3956
3957 2004-02-25  David Shaw  <dshaw@jabberwocky.com>
3958
3959         * delkey.c (do_delete_key): Allow deleting a public key with a
3960         secret present if --expert is set.
3961
3962         * plaintext.c (handle_plaintext): Make bytecount static so it
3963         works with multiple literal packets inside a message.
3964
3965         * encode.c, helptext.c (keygen.algo, keygen.algo.elg_se), keygen.c
3966         (ask_algo), sig-check.c (do_check_messages), skclist.c
3967         (build_sk_list): Rename "ElGamal" to "Elgamal" as that is the
3968         proper spelling nowadays.  Suggested by Jon Callas.
3969
3970 2004-02-24  David Shaw  <dshaw@jabberwocky.com>
3971
3972         * plaintext.c: Copyright.
3973
3974         * encode.c (encode_simple): Show cipher with --verbose.
3975
3976         * options.h, g10.c (main), keyedit.c (sign_keys): Add
3977         --ask-cert-level option to enable cert level prompts during
3978         sigs. Defaults to on.  Simplify --default-cert-check-level to
3979         --default-cert-level.  If ask-cert-level is off, or batch is on,
3980         use the default-cert-level as the cert level.
3981
3982         * options.h, g10.c (main), trustdb.c (mark_usable_uid_certs):
3983         Simplify --min-cert-check-level to --min-cert-level.
3984
3985 2004-02-22  David Shaw  <dshaw@jabberwocky.com>
3986
3987         * options.h, g10.c (main), trustdb.c (mark_usable_uid_certs): Add
3988         --min-cert-check-level option to specify minimum cert check level.
3989         Defaults to 2 (so 0x11 sigs are ignored).  0x10 sigs cannot be
3990         ignored.
3991
3992 2004-02-21  David Shaw  <dshaw@jabberwocky.com>
3993
3994         * plaintext.c (handle_plaintext): Properly handle a --max-output
3995         of zero (do not limit output at all).
3996
3997         * keyserver.c (keyserver_spawn): Use the full 64-bit keyid in the
3998         INFO header lines, and include "sig:" records for the benefit of
3999         people who store their keys in LDAP servers.  It makes it easy to
4000         do queries for things like "all keys signed by Isabella".
4001
4002         * main.h, misc.c (hextobyte): Removed.  It's in libutil.a now.
4003
4004 2004-02-20  David Shaw  <dshaw@jabberwocky.com>
4005
4006         * keyserver.c (keyserver_export): Disallow user strings that
4007         aren't key IDs.
4008         (keyserver_import): Clarify error message.
4009         (keyserver_spawn): Properly handle 8 bit characters in user IDs in
4010         the info lines during SEND.
4011
4012         * mkdtemp.c: Removed.
4013
4014         * Makefile.am: We get mkdtemp.c from libutil.a now, so don't link
4015         with @LIBOBJS@.
4016
4017         * keyserver.c (keyserver_spawn): Pass the scheme to the keyserver
4018         helper.
4019
4020 2004-02-18  David Shaw  <dshaw@jabberwocky.com>
4021
4022         * options.h, g10.c (main), plaintext.c (handle_plaintext): Add
4023         --max-output option to help people deal with decompression bombs.
4024
4025 2004-02-15  David Shaw  <dshaw@jabberwocky.com>
4026
4027         * build-packet.c (do_user_id): Do not force a header for attribute
4028         packets as they require a new CTB, and we don't support forced
4029         headers for new CTBs yet.
4030
4031 2004-02-14  David Shaw  <dshaw@jabberwocky.com>
4032
4033         * build-packet.c (write_header2): If a suggested header length is
4034         provided along with a zero length, interpret this as an actual
4035         zero length packet and not as an indeterminate length packet.
4036         (do_comment, do_user_id): Use it here as these packets might be
4037         naturally zero length.
4038
4039         * parse-packet.c (parse): Show packet type when failing due to an
4040         indeterminate length packet.
4041
4042         * misc.c (parse_options): Only provide args for the true (i.e. not
4043         "no-xxx") form of options.
4044
4045 2004-02-13  David Shaw  <dshaw@jabberwocky.com>
4046
4047         * keyserver.c (argsep): Move to misc.c.
4048
4049         * main.h, misc.c (parse_options), export.c (parse_export_options),
4050         import.c (parse_import_options), g10.c (main): Use it here to
4051         allow for options with optional arguments.  Change all callers.
4052
4053         * import.c (check_prefs): Some language fixes.
4054         (sec_to_pub_keyblock, import_secret_one): Without knowing the
4055         number of MPIs there are, we cannot try and sk-to-pk-ize a key.
4056
4057 2004-02-12  David Shaw  <dshaw@jabberwocky.com>
4058
4059         * import.c (check_prefs): New function to check preferences on a
4060         public key to ensure that it does not advertise any that we cannot
4061         fulfill.  Use the keyedit command list function to optionally
4062         rewrite the prefs.
4063         (import_one, import_secret_one): Use it here when importing a
4064         public key that we have the secret half of, or when importing a
4065         secret key that we have the public half of.
4066
4067         * main.h, keyedit.c (keyedit_menu): Remove sign_mode and enhance
4068         the more general command list functionality to replace it.
4069
4070         * g10.c (main): Use the general command functionality to implement
4071         --sign-key, --lsign-key, --nrsign-key, and --nrlsign-key.
4072
4073         * import.c (import_one): Do the revocation check even in the case
4074         when a key, a revocation key set in a direct key signature, and a
4075         revocation from that revocation key, all arrive piecemeal.
4076         Needless to say, this is pretty obscure.
4077
4078 2004-02-11  David Shaw  <dshaw@jabberwocky.com>
4079
4080         * options.h, g10.c (main), keylist.c (list_keyblock_print): Add
4081         "show-unusable-subkeys" list-option to show revoked and/or expired
4082         subkeys.
4083
4084 2004-02-10  David Shaw  <dshaw@jabberwocky.com>
4085
4086         * keyedit.c (keyedit_menu): Prompt for subkey removal for both
4087         secret and public subkeys.
4088
4089         * keylist.c (list_keyblock_print), keyedit.c