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