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