Note: I have not fully tested the new key creation due to a pc/sc
[gnupg.git] / g10 / ChangeLog
1 2004-09-23  Werner Koch  <wk@g10code.com>
2
3         * card_util.c (generate_card_keys): ask whether backup should be
4         created.
5         (card_store_subkey): Factored some code out to ..
6         * keygen.c (save_unprotected_key_to_card): .. new function.
7         (gen_card_key_with_backup): New.
8         (generate_raw_key): New.
9         (generate_keypair): New arg BACKUP_ENCRYPTION_DIR.  Changed all
10         callers.
11         (do_generate_keypair): Divert to gen_card_key_with_backup when
12         desired.
13
14         * apdu.c (open_pcsc_reader): Do not print empty reader string.
15
16         * keygen.c (ask_algo): Allow creation of AUTH keys.
17
18         * keyid.c (usagestr_from_pk): New.
19
20         * app-openpgp.c (app_openpgp_storekey): Call flush_cache.
21         (get_cached_data): Move local data initialization to ..
22         (app_select_openpgp): .. here. Read some flags for later use.
23         (do_getattr): New read-only attribute EXTCAP.
24
25         * keyedit.c (keyedit_menu): New command "keytocard"
26         (keyedit_menu): Bad hack for the not_with_sk element.
27         (show_key_with_all_names): Print the usage.
28         (find_pk_from_sknode): New.
29
30         * card-util.c (card_store_subkey): New.
31         (copy_mpi): New.
32
33         * cardglue.c (agent_openpgp_storekey): New.
34
35 2004-09-22  Werner Koch  <wk@g10code.com>
36
37         * card-util.c (card_generate_subkey, generate_card_keys): Factored
38         common code out to ...
39         (get_info_for_key_operation, check_pin_for_key_operation)
40         (restore_forced_chv1, replace_existing_key_p)
41         (show_card_key_info): ... new functions.
42
43 2004-09-21  David Shaw  <dshaw@jabberwocky.com>
44
45         * mainproc.c (check_sig_and_print), keyedit.c (show_prefs,
46         menu_set_keyserver_url): Make sure that keyserver URLs with
47         control characters inside are printed properly.  In fact, handle
48         them as UTF8.
49
50         * keyedit.c (keyedit_menu): Don't show "addcardkey" in the menu if
51         we do not have card support.
52
53         * keydb.h, keyserver.c (print_keyrec, keyserver_spawn): fpr is an
54         array of unsigned bytes.
55
56 2004-09-20  Werner Koch  <wk@g10code.com>
57
58         * g10.c: Make -K an alias for --list-secret-keys.
59
60         * keylist.c (print_card_serialno): New. Taken from gnupg 1.9.11.
61         (list_keyblock_print): Make use of it.
62         * keyedit.c (show_key_with_all_names): Print the card S/N.
63
64         * keyedit.c (keyedit_menu): New command ADDCARDKEY.
65         * card-util.c (card_generate_subkey): New.
66         * keygen.c (generate_card_subkeypair): New.
67         (gen_card_key): New arg IS_PRIMARY; changed all callers.
68
69         * cardglue.c (open_card): Use shutdown code if possible.
70         (check_card_serialno): Ditto.
71
72         * ccid-driver.c (do_close_reader): Factored some code out from ...
73         (ccid_close_reader): ..here.
74         (ccid_shutdown_reader): New.
75
76         * apdu.c (apdu_shutdown_reader): New.
77         (shutdown_ccid_reader): New.
78
79 2004-09-17  Werner Koch  <wk@g10code.com>
80
81         * g10.c (list_config): New config option ccid-reader-id.
82         (gpgconf_list): Add "reader-port".
83
84         * apdu.c (open_ccid_reader): New arg PORTSTR.  Pass it to
85         ccid_open_reader.
86         (apdu_open_reader): Pass portstr to open_ccid_reader.
87         (apdu_open_reader): No fallback if a full CCID reader id has been
88         given.
89
90         * ccid-driver.c (ccid_get_reader_list): New.
91         (ccid_open_reader): Changed API to take a string for the reader.
92         Removed al the cruft for the libusb development vesion which seems
93         not to be maintained anymore and there are no packages anyway.
94         The stable library works just fine.
95         (struct ccid_reader_id_s): Deleted and replaced everywhere by a
96         simple string.
97         (usb_get_string_simple): Removed.
98         (bulk_in): Do valgrind hack here and not just everywhere.
99
100 2004-09-16  David Shaw  <dshaw@jabberwocky.com>
101
102         * keyedit.c (show_key_with_all_names, show_prefs): Show preferred
103         keyserver(s) in "showpref" output.
104
105         * keygen.c (keygen_add_keyserver_url), keyedit.c
106         (menu_set_keyserver_url): Allow setting a keyserver URL of "none"
107         to remove an existing keyserver URL.
108
109         * keyedit.c (menu_set_keyserver_url): Confirm replacement of a
110         keyserver URL before overwriting the old one.
111
112 2004-09-15  David Shaw  <dshaw@jabberwocky.com>
113
114         * gpgv.c (agent_scd_getattr): Stub.
115
116         * misc.c (get_signature_count): New.  Get the signature count from
117         a smartcard.
118         (pct_expando): Call it here so the %c expando becomes the number
119         of signatures issued.  This allows for notations or the like with
120         an automatic signature count.
121
122         * ccid-driver.c (usb_get_string_simple): Replacement function to
123         work with older libusb.
124
125 2004-09-15  Werner Koch  <wk@g10code.com>
126
127         * g10.c [HAVE_LIBUSB]: New option --debug-ccid-driver.
128
129         * ccid-driver.c (read_device_info): Removed.
130         (make_reader_id, scan_or_find_devices): New.
131         (ccid_open_reader): Simplified by make use of the new functions.
132         (ccid_set_debug_level): New.  Changed the macros to make use of
133         it.  It has turned out that it is often useful to enable debugging
134         at runtime so I added this option.
135
136 2004-09-13  David Shaw  <dshaw@jabberwocky.com>
137
138         * getkey.c (premerge_public_with_secret): Fix subkey<->binding sig
139         mismatch when some secret subkeys are missing.  Discovered by
140         Michael Roth.
141
142         * main.h, keylist.c (print_subpackets_colon): Make a public
143         function.
144
145         * keyedit.c (print_and_check_one_sig_colon): New.  Print a
146         with-colons version of the sig record.
147         (menu_delsig): Call it here for a with-colons delsig.
148
149 2004-09-12  David Shaw  <dshaw@jabberwocky.com>
150
151         * options.h, keylist.c (print_one_subpacket,
152         print_subpackets_colon): Print a spk record for each request
153         subpacket.
154         (list_keyblock_colon): Call them here.
155
156         * g10.c (parse_subpacket_list, parse_list_options): New.  Make the
157         list of subpackets we are going to print.
158         (main): Call them here.
159
160 2004-09-11  David Shaw  <dshaw@jabberwocky.com>
161
162         * card-util.c (fetch_url, card_edit): Use the pubkey URL stored on
163         the card to fetch an updated copy.  Works with either straight
164         URLs or HKP or LDAP keyservers.
165
166         * keyserver-internal.h, keyserver.c (keyserver_import_fprint),
167         import.c (revocation_present): Use a keyserver_spec so the caller
168         can pass in whatever keyserver they like.
169
170 2004-09-10  David Shaw  <dshaw@jabberwocky.com>
171
172         * app-openpgp.c (get_cached_data): Avoid mallocing zero since it
173         breaks us when using --enable-m-guard.
174
175         * ccid-driver.c (read_device_info): Fix segfault when usb device
176         is not accessible.
177         (ccid_open_reader): Allow working with an even older version of
178         libusb (usb_busses global instead of usb_get_busses()).
179
180 2004-09-09  Werner Koch  <wk@g10code.com>
181
182         * cardglue.h: Add members for CA fingerprints.
183         * cardglue.c (agent_release_card_info): Invalid them.
184         (learn_status_cb): Store them.
185
186         * app-common.h, app-openpgp.c, iso7816.c, iso7816.h
187         * apdu.c, apdu.h, ccid-driver.c, ccid-driver.h
188         * card-util.c: Updated from current gnupg-1.9.
189
190         Changes are:
191
192         * ccid-driver.h (CCID_DRIVER_ERR_ABORTED): New.
193         * ccid-driver.c (ccid_open_reader): Support the stable 0.1 version
194         of libusb.
195         (ccid_get_atr): Handle short messages.
196         * apdu.c (my_rapdu_get_status): Implemented.
197         * apdu.c: Include <signal.h>.
198         * apdu.c (reader_table_s):  Add function pointers for the backends.
199         (apdu_close_reader, apdu_get_status, apdu_activate) 
200         (send_apdu): Make use of them.
201         (new_reader_slot): Intialize them to NULL.
202         (dump_ccid_reader_status, ct_dump_reader_status): New.
203         (dump_pcsc_reader_status): New.
204         (open_ct_reader, open_pcsc_reader, open_ccid_reader) 
205         (open_osc_reader, open_rapdu_reader): Intialize function pointers.
206         (ct_activate_card, ct_send_apdu, pcsc_send_apdu, osc_send_apdu) 
207         (error_string): Removed.  Replaced by apdu_strerror.
208         (get_ccid_error_string): Removed.
209         (ct_activate_card): Remove the unused loop.
210         (reset_ct_reader): Implemented.
211         (ct_send_apdu): Activate the card if not yet done.
212         (pcsc_send_apdu): Ditto.
213         * ccid-driver.h: Add error codes.
214         * ccid-driver.c: Implement more or less proper error codes all
215         over the place.
216         * apdu.c (apdu_send_direct): New.
217         (get_ccid_error_string): Add some error code mappings.
218         (send_apdu): Pass error codes along for drivers already supporting
219         them.
220         (host_sw_string): New.
221         (get_ccid_error_string): Use above.
222         (send_apdu_ccid): Reset the reader if it has not yet been done.
223         (open_ccid_reader): Don't care if the ATR can't be read.
224         (apdu_activate_card): New.
225         (apdu_strerror): New.
226         (dump_reader_status): Only enable it with opt.VERBOSE.
227         * iso7816.c (map_sw): Add mappings for the new error codes.
228         * apdu.c (open_ct_reader, open_pcsc_reader, open_ccid_reader)
229         (reset_ccid_reader, open_osc_reader): Call dump_reader_status only
230         in verbose mode.
231         * app-openpgp.c (do_getattr): Fix for sending CA-FPR.
232         * app-openpgp.c (app_openpgp_readkey): Fixed check for valid
233         exponent.
234         * app-openpgp.c (do_setattr): Sync FORCE_CHV1.
235         * card-util.c (change_login): Kludge to allow reading data from a
236         file.
237         (card_edit): Pass ARG_STRING to change_login.
238         (card_status): Print CA fingerprints.
239         (change_cafpr): New.
240         (card_edit): New command CAFPR.
241
242 2004-04-30  Werner Koch  <wk@gnupg.org>
243
244         * g10.c (main) <gpgconf>: Use gpg.conf and not /dev/null as
245         default filename.
246
247 2004-04-28  Werner Koch  <wk@gnupg.org>
248
249         * card-util.c (card_edit): Remove PIN verification.
250         (generate_card_keys): New arg SERIALNO.  Do PIN verification here
251         after resetting forced_chv1.
252
253         
254 2004-09-09  Werner Koch  <wk@g10code.com>
255
256         * signal.c (got_fatal_signal): Do readline cleanup.  Print signal
257         number if we can't print the name. Use new autoconf macro
258         HAVE_DECL_SYS_SIGLIST.
259         (get_signal_name): Removed.
260
261         * photoid.c: Include ttyio.h.
262
263         * parse-packet.c (skip_rest): Removed.  Changed all callers to use
264         the new iobuf_skip_reset.  Orginal patch by Florian Weimer.
265
266 2004-09-07  Werner Koch  <wk@g10code.de>
267
268         * photoid.c (generate_photo_id): Use tty_printf and not just
269         printf.  Put _() around one string.
270
271 2004-09-03  David Shaw  <dshaw@jabberwocky.com>
272
273         * keyserver.c (parse_keyrec): Force the 'e'xpired flag on as soon
274         as we know the key is definitely expired.  Some translatable
275         string cleanup.
276
277 2004-08-27  David Shaw  <dshaw@jabberwocky.com>
278
279         * encode.c, exec.c, g10.c, sign.c: Some translatable string
280         cleanup.  Change some "this" to `this'.
281
282 2004-08-23  David Shaw  <dshaw@jabberwocky.com>
283
284         * keyserver.c (keyserver_spawn): Show log line for what keyserver
285         action we are taking.
286
287         * keyid.c (keystr): If printing a keyid that lacks the high 4
288         bytes, print the low 4 alone.
289         (keystr_from_desc): Handle short keyids and warn on v3
290         fingerprints.
291
292         * keydb.h, getkey.c (get_user_id_printable): Rename to
293         get_user_id_native and remove the printable stuff since we're
294         print-ifying valid utf8 characters.  Change all callers in
295         import.c, sign.c, keylist.c, and encode.c.
296
297         * keyserver.c (keyserver_search_prompt): Make sure the search
298         string is converted from UTF-8 before display.
299
300 2004-08-19  Werner Koch  <wk@g10code.de>
301
302         * seskey.c (encode_session_key): Changed the zero random byte
303         substituting code to actually do clever things.  Thanks to
304         Matthias Urlichs for noting the implementation problem.
305
306 2004-08-18  Marcus Brinkmann  <marcus@g10code.de>
307
308         * passphrase.c (agent_get_passphrase): Fix detection of gpg-agent
309         cancellation.
310
311 2004-08-08  David Shaw  <dshaw@jabberwocky.com>
312
313         * plaintext.c (handle_plaintext): Bigger buffer for extra safety.
314
315         * g10.c (main): New alias --throw-keyid for --throw-keyids, so
316         that it continues to work in old configuration files.  Noted by
317         Jens Adam.
318
319         * pkclist.c (algo_available): --pgp8 now allows blowfish, zlib,
320         and bzip2.
321
322         * status.c (do_get_from_fd): Flush stdout if status isn't flushing
323         it for us.  This guarantees that any menus that were displayed
324         before the prompt don't get stuck in a buffer.  Noted by Peter
325         Palfrader.  This is Debian bug #254072.
326
327         * sign.c (update_keysig_packet): Revert change of 2004-05-18.  It
328         is not appropriate to strip policy and notations when remaking a
329         sig.  That should only happen when specifically requested by the
330         user.
331
332 2004-08-05  David Shaw  <dshaw@jabberwocky.com>
333
334         * armor.c (radix64_read): No armor CRC is legal according to the
335         spec (the CRC is a MAY).
336
337 2004-07-28  David Shaw  <dshaw@jabberwocky.com>
338
339         * misc.c (argsplit): Properly split quoted args from the keyword
340         and trim whitespace afterwards.
341
342 2004-07-27  David Shaw  <dshaw@jabberwocky.com>
343
344         * misc.c (optsep): Add the ability to understand keyword="quoted
345         arg with spaces" type options.
346
347 2004-07-16  David Shaw  <dshaw@jabberwocky.com>
348
349         * keylist.c (list_keyblock_print): Always use the new listing
350         format where uids are always on a line for themselves.  Mark
351         expired secret keys as expired.
352
353         * options.h, g10.c (main): Rename list show-validity to
354         show-uid-validity as it only shows for uids.
355
356         * armor.c (armor_filter): Do not use padding to get us to 8 bytes
357         of header.  Rather, use 2+4 as two different chunks.  This avoids
358         a fake filename of "is".
359
360 2004-07-15  David Shaw  <dshaw@jabberwocky.com>
361
362         * keyedit.c (sign_uids): Properly handle remaking a self-sig on
363         revoked or expired user IDs.  Also, once we've established that a
364         given uid cannot or will not be signed, don't continue to ask
365         about each sig.
366
367         * mainproc.c (proc_symkey_enc), seckey-cert.c (do_check): Check
368         the S2K hash algorithm before we try to generate a passphrase
369         using it.  This prevents hitting BUG() when generating a
370         passphrase using a hash that we don't have.
371
372         * sign.c (sign_symencrypt_file): Allow using --force-mdc in --sign
373         --symmetric messages.
374
375         * g10.c (main): Alias --charset as --display-charset to help avoid
376         the continuing confusion and make room for possible changes in
377         devel.
378
379         * parse-packet.c (parse_plaintext): Show the hex value for the
380         literal packet mode since it may not be printable.
381
382         * keygen.c (make_backsig): Make sure that the backsig was built
383         successfully before we try and use it.
384
385         * status.h, status.c (get_status_string), plaintext.c
386         (handle_plaintext): New status tags PLAINTEXT and
387         PLAINTEXT_LENGTH.
388
389 2004-06-16  Werner Koch  <wk@gnupg.org>
390
391         * free-packet.c (copy_secret_key): Get last fix right.
392
393 2004-06-16  Werner Koch  <wk@gnupg.org>
394
395         * free-packet.c (copy_secret_key): Fixed memory leak when D is not
396         NULL.
397
398         * passphrase.c (passphrase_to_dek): Added a few comments to the
399         code.
400
401 2004-05-26  David Shaw  <dshaw@jabberwocky.com>
402
403         * keyserver.c (keyserver_refresh): Keep track of keys already
404         fetched so we don't do a regular keyserver fetch if the preferred
405         keyserver fetch has exhausted the list.
406
407 2004-05-23  David Shaw  <dshaw@jabberwocky.com>
408
409         * verify.c (verify_signatures): Verify multiple files in the same
410         order in which we hashed them when issuing the signature.  Noted
411         by Nicholas Cole.
412
413         * pkclist.c (do_edit_ownertrust): Fix a kbnode leak and do another
414         keyid-format conversion.
415
416 2004-05-22  Werner Koch  <wk@gnupg.org>
417
418         * trustdb.c (check_regexp): s/EXP/EXPR/.
419
420         * keyedit.c (trustsig_prompt): Remoev useless range check.
421
422         * options.h: Renamed ctrl to glo_ctrl.  Changed all users.
423
424         * ccid-driver.c (ccid_open_reader): Print a warning when CCID
425         can't be used.
426
427 2004-05-21  David Shaw  <dshaw@jabberwocky.com>
428
429         * mainproc.c (check_sig_and_print): If we're honoring preferred
430         keyservers, and auto-key-retrieve is set, try and get a missing
431         key from the preferred keyserver subpacket when we verify the sig.
432
433         * gpgv.c (parse_preferred_keyserver, free_keyserver_spec): Stubs.
434
435         * keyserver.c (keyidlist): Use new parse_preferred_keyserver
436         function.
437         (keyserver_work): Use the passed-in keyserver spec rather than the
438         options global one.
439
440         * keyserver-internal.h, keyserver.c (parse_preferred_keyserver):
441         New function to take a sig and return a split out keyserver_spec.
442         (keyserver_import_keyid): Now takes a keyserver_spec.
443
444         * keyserver.c (keyidlist): Go back to the old fast keyid lister.
445         Only merge selfsigs if we have to for honor-keyserver-url.
446         (keyserver_refresh): Keyserver URL handler moved here.
447         (calculate_keyid_fpr): Removed.
448
449         * keydb.h, keyid.c (keystr_from_desc): Calculate a key string from
450         a KEYDB_SEARCH_DESC.
451
452         * keyserver.c (keyserver_spawn): Fix keyserver options on tempfile
453         only platforms.  Noted by Roger Sondermann.
454
455 2004-05-20  David Shaw  <dshaw@jabberwocky.com>
456
457         * keyserver.c (keyserver_work): Allow --refresh-keys with a
458         preferred keyserver to happen even if there is no global keyserver
459         set.
460
461         * sig-check.c (do_check_messages): No need to check for Elgamal
462         signatures any longer.
463         (do_check_messages, do_check, check_key_signature2):
464         --keyid-format conversion.
465
466         * pkclist.c (show_paths, edit_ownertrust): Remove some unused
467         code.
468
469         * options.h (ctrl): New for member IN_AUTO_KEY_RETRIEVE.
470
471         * mainproc.c (check_sig_and_print): track whether we are
472         retrieving a key.
473
474         * status.c (status_currently_allowed): New.
475         (write_status_text, write_status_text_and_buffer): Use it here.
476
477         * g10.c: New command --gpgconf-list.
478         (gpgconf_list): New.  From Werner on stable branch.
479
480 2004-05-19  David Shaw  <dshaw@jabberwocky.com>
481
482         * pubkey-enc.c (get_session_key, get_it), keyedit.c
483         (show_key_with_all_names, show_basic_key_info): --keyid-format
484         conversion.
485
486 2004-05-18  David Shaw  <dshaw@jabberwocky.com>
487
488         * sign.c (update_keysig_packet): Policies and notations should be
489         stripped out when remaking a self-signature.  Noted by Atom
490         Smasher.
491
492         * keyserver.c (parse_keyserver_uri): Fix compiler warnings.
493
494 2004-05-11  David Shaw  <dshaw@jabberwocky.com>
495
496         * options.h, keyserver-internal.h, keyserver.c
497         (parse_keyserver_uri): Improved URI parser that keeps track of the
498         path information and doesn't modify the input string.
499         (keyserver_spawn): Tell keyserver plugins about the path.
500
501 2004-05-11  Werner Koch  <wk@gnupg.org>
502
503         * keylist.c (show_policy_url, show_keyserver_url, show_notation) 
504         (list_one): Use const char* for i18n string helpers.
505
506         * keygen.c (do_generate_keypair, read_parameter_file): Really
507         close the files.
508         (do_generate_keypair): Create the secret key file using safe
509         permissions.  Noted by Atom Smasher.
510
511 2004-05-10  David Shaw  <dshaw@jabberwocky.com>
512
513         * options.h, mainproc.c (symkey_decrypt_seskey), keyserver.c
514         (struct keyrec, parse_keyrec, keyserver_search_prompt), keyedit.c
515         (keyedit_menu), g10.c (add_keyserver_url, add_policy_url): Fix
516         some compiler warnings.
517
518 2004-05-08  David Shaw  <dshaw@jabberwocky.com>
519
520         * keyedit.c (keyedit_menu, menu_set_keyserver_url): Allow passing
521         preferred keyserver on "keyserver" command line.  Sanity check
522         keyserver URL before accepting it.
523
524         * keyserver-internal.h, g10.c (main), keyserver.c
525         (parse_keyserver_uri): Add an option to require the scheme:// and
526         change all callers.
527         (free_keyserver_spec): Make public.
528
529 2004-05-07  Werner Koch  <wk@gnupg.org>
530
531         * sign.c (write_plaintext_packet): Fixed the detection of too
532         large files in the same way as in encode.c.
533
534 2004-05-04  David Shaw  <dshaw@jabberwocky.com>
535
536         * keylist.c (show_notation): Use bits to select which sort of
537         notation to show.  Don't allow a not-shown notation to prevent us
538         from issuing the proper --status-fd message.
539
540         * options.h, g10.c (main): Add show-std/standard-notations and
541         show-user-notations.  show-notations is both.  Default is to show
542         standard notations only during verify.  Change all callers.
543
544 2004-04-28  David Shaw  <dshaw@jabberwocky.com>
545
546         * main.h, keylist.c (show_notation): Add argument to show only
547         user notations, only standard notations, or both.  Change all
548         callers.
549
550         * keyserver.c (keyserver_spawn): We still need EXEC_TEMPFILE_ONLY.
551
552 2004-04-28  Werner Koch  <wk@gnupg.org>
553
554         * card-util.c (card_edit): Require PIN only for generate. 
555
556         * app-openpgp.c (do_setattr): Sync FORCE_CHV1.
557
558 2004-04-27  Werner Koch  <wk@gnupg.org>
559
560         * keyserver.c (keyserver_spawn) [EXEC_TEMPFILE_ONLY]: Removed
561         setting use_temp_file because this option has been removed.
562
563         * g10.c: New commands --allow-admin and --deny-admin.
564         * options.h (opt): Add member ALLOW_ADMIN.
565
566         * tlv.h, tlv.c: New.  Copied from gnupg-1.9. 
567         * cardglue.c (open_card): The serialno is now set internally by
568         app_select_openpgp; changed invocation.
569         * cardglue.h (app_t, ctrl_t): New.
570         (GPG_ERR_EBUSY, GPG_ERR_ENOENT, GPG_ERR_NOT_FOUND, GPG_ERR_BUG) 
571         (GPG_ERR_NOT_IMPLEMENTED, GPG_ERR_EACCESS): New.
572         (gpg_err_code_from_errno): New.
573
574         * app-common.h, app-openpgp.c, iso7816.c, iso7816.h
575         * apdu.c, apdu.h, ccid-driver.c, ccid-driver.h
576         * card-util.c: Updated from current gnupg-1.9.
577
578         Changes are:
579
580         * app-common.h: New members FNC.DEINIT and APP_LOCAL.
581         * app-openpgp.c (do_deinit): New.
582         (get_cached_data, flush_cache_item, flush_cache_after_error)
583         (flush_cache): New.
584         (get_one_do): Replaced arg SLOT by APP.  Make used of cached data.
585         (verify_chv2, verify_chv3): Flush some cache item after error.
586         (do_change_pin): Ditto.
587         (do_sign): Ditto.
588         (do_setattr): Flush cache item.
589         (do_genkey): Flush the entire cache.
590         (compare_fingerprint): Use cached data.
591
592         * apdu.c (apdu_send_le): Reinitialize RESULTLEN.  Handle
593         SW_EOF_REACHED like SW_SUCCESS.
594
595         * ccid-driver.c (parse_ccid_descriptor): Store some of the reader
596         features away.  New arg HANDLE
597         (read_device_info): New arg HANDLE. Changed caller.
598         (bulk_in): Handle time extension requests.
599         (ccid_get_atr): Setup parameters and the IFSD.
600         (compute_edc): New. Factored out code.
601         (ccid_transceive): Use default NADs when required.
602
603         * apdu.h: New pseudo stati SW_HOST_NOT_SUPPORTED,
604         SW_HOST_LOCKING_FAILED and SW_HOST_BUSY.
605         * iso7816.c (map_sw): Map it.
606         
607         * ccid-driver.c (ccid_slot_status): Add arg STATUSBITS.
608         * apdu.c (apdu_get_status): New.
609         (ct_get_status, pcsc_get_status, ocsc_get_status): New stubs.
610         (get_status_ccid): New.
611         (apdu_reset): New.
612         (reset_ct_reader, reset_pcsc_reader, reset_osc_reader): New stubs.
613         (reset_ccid_reader): New.
614         (apdu_enum_reader): New.
615         
616         * apdu.c (lock_slot, trylock_slot, unlock_slot): New helpers.
617         (new_reader_slot) [USE_GNU_PTH]: Init mutex.
618         (apdu_reset, apdu_get_status, apdu_send_le): Run functions
619         in locked mode.
620         
621 2004-04-25  David Shaw  <dshaw@jabberwocky.com>
622
623         * getkey.c (get_seckey_byname2): Significantly simplify this
624         function by using key_byname to do the heavy lifting.  Note that
625         this also fixes an old problem when the first key on the secret
626         keyring has an unusable stub primary, but is still chosen.
627
628         * getkey.c (key_byname): If namelist is NULL, return the first key
629         in the keyring.
630
631 2004-04-22  David Shaw  <dshaw@jabberwocky.com>
632
633         * keygen.c (make_backsig): If DO_BACKSIGS is not defined, do not
634         create backsigs.
635
636         * getkey.c (merge_selfsigs_subkey): Find 0x19 backsigs on subkey
637         selfsigs and verify they are valid.  If DO_BACKSIGS is not
638         defined, fake this as always valid.
639
640         * packet.h, parse-packet.c (parse_signature): Make parse_signature
641         non-static so we can parse 0x19s in self-sigs.
642
643         * main.h, sig-check.c (check_backsig): Check a 0x19 signature.
644         (signature_check2): Give a backsig warning if there is no or a bad
645         0x19 with signatures from a subkey.
646
647 2004-04-21  David Shaw  <dshaw@jabberwocky.com>
648
649         * parse-packet.c (dump_sig_subpkt, parse_one_sig_subpkt,
650         can_handle_critical): Parse and display 0x19 signatures.
651
652 2004-04-20  David Shaw  <dshaw@jabberwocky.com>
653
654         * keyserver.c (parse_keyserver_uri): Do not accept "http" as an
655         alias for "hkp".  They are not the same thing.
656
657 2004-04-19  David Shaw  <dshaw@jabberwocky.com>
658
659         * options.h, g10.c (main): Add keyserver-option
660         honor-keyserver-url.  parse_keyserver_options now returns a
661         success code.
662
663         * keyserver.c (parse_keyserver_options): Return error on failure
664         to parse.  Currently there is no way to fail as any unrecognized
665         options get saved to be sent to the keyserver plugins later.
666         Check length of keyserver option tokens since with =arguments we
667         must only match the prefix.
668         (free_keyserver_spec): Moved code from parse_keyserver_url.
669         (keyserver_work, keyserver_spawn): Pass in a struct keyserver_spec
670         rather than using the global keyserver option.
671         (calculate_keyid_fpr): New.  Fills in a KEYDB_SEARCH_DESC for a
672         key.
673         (keyidlist): New implementation using get_pubkey_bynames rather
674         than searching the keydb directly.  If honor-keyserver-url is set,
675         make up a keyserver_spec and try and fetch that key directly.  Do
676         not include it in the returned keyidlist in that case.
677
678 2004-04-16  David Shaw  <dshaw@jabberwocky.com>
679
680         * plaintext.c (handle_plaintext): Accept 'u' as a plaintext mode
681         that requires end of line conversion.  This is being considered
682         for a UTF8 text packet.  If this doesn't take place, no major harm
683         done.  If it does take place, we'll get a jump on starting the
684         changeover.
685
686         * g10.c (main): --no-use-embedded-filename.
687
688         * build-packet.c (calc_plaintext, do_plaintext): Do not create
689         illegal (packet header indicates a size larger than the actual
690         packet) encrypted data packets when not compressing and using a
691         filename longer than 255 characters.
692
693         * keyedit.c (no_primary_warning): Cleanup. (menu_expire): Don't
694         give primary warning for subkey expiration changes.  These cannot
695         reorder primaries.
696
697         * keygen.c (gen_elg, gen_dsa, gen_rsa, do_create,
698         do_generate_keypair, generate_subkeypair): New is_subkey argument
699         to set whether a generated key is a subkey.  Do not overload the
700         ret_sk.  This is some early cleanup to do backsigs for signing
701         subkeys.
702
703         * keygen.c (write_keybinding, do_generate_keypair,
704         generate_subkeypair): Keep track of the unprotected subkey secret
705         key so we can make a backsig with it.
706
707         * keygen.c (make_backsig): New function to add a backsig to a
708         binding sig of signing subkeys.  Currently disabled.
709         (write_keybinding): Call it here, for signing subkeys only.
710
711         * sign.c (make_keysig_packet): Allow generating 0x19 signatures
712         (same as 0x18 or 0x28, but used for backsigs).
713
714         * packet.h, build-packet.c (build_sig_subpkt): Add new
715         SIGSUBPKT_SIGNATURE type for embedded signatures.
716
717         * main.h, misc.c (optsep, argsplit, optlen, parse_options):
718         Simplify code and properly handle a partial match against an
719         option with an argument.
720
721         * keyserver-internal.h, keyserver.c (parse_keyserver_options): Use
722         new optsep and argsplit functions.
723
724 2004-04-15  David Shaw  <dshaw@jabberwocky.com>
725
726         * main.h, misc.c (argsplit): Refactor argsep into argsplit and
727         argsep so they can be called separately.
728
729         * options.h, keyserver.c (parse_keyserver_options): Remove
730         duplicate code from parse_keyserver_options by calling the generic
731         parse_options.
732
733         * keyserver.c (keyserver_spawn, keyserver_refresh), g10.c (main),
734         gpgv.c (main), mainproc.c (check_sig_and_print), import.c
735         (revocation_present): Change all callers.
736
737 2004-04-14  David Shaw  <dshaw@jabberwocky.com>
738
739         * packet.h, getkey.c (fixup_uidnode, merge_selfsigs_subkey): Keep
740         track of which self-sig we actually chose.
741
742         * keyedit.c (menu_expire, menu_set_primary_uid,
743         menu_set_preferences): Use it here to avoid updating non-used
744         self-sigs and possibly promoting an old self-sig into
745         consideration again.
746
747         * options.h, import.c, keyserver-internal.h, g10.c, mainproc.c,
748         keyserver.c (parse_keyserver_uri): Parse keyserver URI into a
749         structure.  Cleanup for new "guess my keyserver" functionality, as
750         well as refreshing via a preferred keyserver subpacket.
751
752         * options.h: Encapsulate keyserver details.  Change all callers.
753
754 2004-04-05  Werner Koch  <wk@gnupg.org>
755
756         * status.h (STATUS_NEWSIG): New.
757         * status.c (get_status_string): Add it. 
758
759 2004-03-27  David Shaw  <dshaw@jabberwocky.com>
760
761         * keyedit.c (keyedit_menu): Request a trustdb update when adding a
762         new user ID so the new ID gets validity set.  Reported by Owen
763         Taylor.
764
765 2004-03-25  David Shaw  <dshaw@jabberwocky.com>
766
767         * options.h, g10.c (main), compress-bz2.c (init_uncompress):
768         Rename --bzip2-compress-lowmem to --bzip2-decompress-lowmem since
769         it applies to decompression, not compression.
770
771 2004-03-24  David Shaw  <dshaw@jabberwocky.com>
772
773         * keyedit.c (sign_uids, show_key_and_fingerprint, ask_revoke_sig,
774         menu_revsig, menu_showphoto): --keyid-format conversion.
775         (menu_addrevoker): Use print_pubkey_info() rather than duplicating
776         code.
777
778 2004-03-19  David Shaw  <dshaw@jabberwocky.com>
779
780         * trustdb.c (update_min_ownertrust, validate_keys): Do not use
781         keystr functions in log_debug.
782
783         * import.c (import_one): Try and collapse user IDs when importing
784         a key for the first time.
785
786         * keyedit.c (menu_addrevoker): Allow appointing a subkey as a
787         designated revoker if the user forces it via keyid!, so long as
788         the subkey can certify.  Also use the proper date string when
789         prompting for confirmation.
790
791         * g10.c (main): Maintain ordering of multiple Comment lines.
792         Requested by Peter Hyman.
793
794 2004-03-17  David Shaw  <dshaw@jabberwocky.com>
795
796         * mainproc.c (proc_pubkey_enc, print_pkenc_list, list_node):
797         --keyid-format conversion.
798
799 2004-03-16  David Shaw  <dshaw@jabberwocky.com>
800
801         * getkey.c (skip_unusable, merge_selfsigs_main,
802         premerge_public_with_secret, lookup, get_user_id_string):
803         --keyid-format conversion.
804
805 2004-03-15  David Shaw  <dshaw@jabberwocky.com>
806
807         * trustdb.c (add_utk, verify_own_keys, update_min_ownertrust,
808         get_validity, ask_ownertrust, validate_keys): --keyid-format
809         conversion.
810
811         * import.c (check_prefs_warning, check_prefs): --keyid-format
812         conversion and a little better text.
813         (import_one, import_secret_one, import_revoke_cert, chk_self_sigs,
814         delete_inv_parts, merge_blocks): Still more --keyid-format
815         conversions.
816
817 2004-03-06  David Shaw  <dshaw@jabberwocky.com>
818
819         * keylist.c (print_seckey_info, print_pubkey_info): --keyid-format
820         conversion.
821         (list_keyblock_print): 0xshort should not push us into the new
822         list format since it is not much longer than regular 8-character
823         short keyids.
824
825         * keydb.h, keyid.c (keystr_from_pk, keystr_from_sk): New functions
826         to pull a key string from a key in one step.  This isn't faster
827         than before, but makes for neater code.
828
829         * keylist.c (list_keyblock_print): Use keystr_from_xx here.
830         (print_key_data): No need to pass a keyid in.
831
832 2004-03-05  David Shaw  <dshaw@jabberwocky.com>
833
834         * keyid.c (keyid_from_sk): Minor performance boost by caching
835         secret key keyids so we don't have to calculate them each time.
836
837         * getkey.c (merge_selfsigs_subkey): Do not mark subkeys valid if
838         we do not support their pk algorithm.  This allows for early
839         (during get_*) rejection of a subkey, and selection of another.
840
841         * passphrase.c (passphrase_to_dek): Give a little more information
842         when we have room to do so.
843
844 2004-03-04  David Shaw  <dshaw@jabberwocky.com>
845
846         * revoke.c (export_minimal_pk), export.c (do_export_stream),
847         passphrase.c (passphrase_to_dek), keyserver.c (print_keyrec): A
848         few more places to use --keyid-format.
849
850         * options.h, g10.c (main), export.c (parse_export_options,
851         do_export_stream): Remove --export-all and the "include-non-rfc"
852         export-option as they are no longer meaningful with the removal of
853         v3 Elgamal keys.
854
855         * armor.c (fake_packet, armor_filter): Use the 2440 partial length
856         encoding for the faked plaintext packet.
857
858 2004-03-03  David Shaw  <dshaw@jabberwocky.com>
859
860         * options.h, g10.c (main), mainproc.c (check_sig_and_print):
861         Remove verify-option show-long-keyids and replace with
862         the more general keyid-format.
863
864         * build-packet.c (write_header2): Remove call to start old gpg
865         partial length mode and change all callers.
866         (do_plaintext): Turn off partial length encoding now that we're
867         done writing the packet.
868         (do_comment, do_user_id): Try for a headerlen of 2 since that's
869         the smallest and most likely encoding for these packets.
870
871         * parse-packet.c (parse): Remove call to start old gpg partial
872         length mode.
873
874 2004-03-02  David Shaw  <dshaw@jabberwocky.com>
875
876         * options.h, g10.c (main): Add a more flexible --keyid-format
877         option to replace the list-option (and eventually verify-option)
878         show-long-keyids.  The format can be short, long, 0xshort, and
879         0xlong.
880
881         * keydb.h, keyid.c (keystr, keystrlen): New functions to generate
882         a printable keyid.
883
884         * keyedit.c (print_and_check_one_sig, show_key_with_all_names),
885         keylist.c (list_keyblock_print): Use new keystr() function here to
886         print keyids.
887
888         * packet.h, free-packet.c (free_encrypted, free_plaintext),
889         parse-packet.c (copy_packet, skip_packet, skip_rest, read_rest,
890         parse_plaintext, parse_encrypted, parse_gpg_control): Use a flag
891         to indicate partial or indeterminate encoding.  This is the first
892         step in some minor surgery to remove the old gpg partial length
893         encoding.
894
895 2004-03-01  David Shaw  <dshaw@jabberwocky.com>
896
897         * parse-packet.c (parse): Only data-type packets are allowed to
898         use OpenPGP partial length encoding.
899
900 2004-02-25  David Shaw  <dshaw@jabberwocky.com>
901
902         * delkey.c (do_delete_key): Allow deleting a public key with a
903         secret present if --expert is set.
904
905         * plaintext.c (handle_plaintext): Make bytecount static so it
906         works with multiple literal packets inside a message.
907
908         * encode.c, helptext.c (keygen.algo, keygen.algo.elg_se), keygen.c
909         (ask_algo), sig-check.c (do_check_messages), skclist.c
910         (build_sk_list): Rename "ElGamal" to "Elgamal" as that is the
911         proper spelling nowadays.  Suggested by Jon Callas.
912
913 2004-02-24  David Shaw  <dshaw@jabberwocky.com>
914
915         * plaintext.c: Copyright.
916
917         * encode.c (encode_simple): Show cipher with --verbose.
918
919         * options.h, g10.c (main), keyedit.c (sign_keys): Add
920         --ask-cert-level option to enable cert level prompts during
921         sigs. Defaults to on.  Simplify --default-cert-check-level to
922         --default-cert-level.  If ask-cert-level is off, or batch is on,
923         use the default-cert-level as the cert level.
924
925         * options.h, g10.c (main), trustdb.c (mark_usable_uid_certs):
926         Simplify --min-cert-check-level to --min-cert-level.
927
928 2004-02-22  David Shaw  <dshaw@jabberwocky.com>
929
930         * options.h, g10.c (main), trustdb.c (mark_usable_uid_certs): Add
931         --min-cert-check-level option to specify minimum cert check level.
932         Defaults to 2 (so 0x11 sigs are ignored).  0x10 sigs cannot be
933         ignored.
934
935 2004-02-21  David Shaw  <dshaw@jabberwocky.com>
936
937         * plaintext.c (handle_plaintext): Properly handle a --max-output
938         of zero (do not limit output at all).
939
940         * keyserver.c (keyserver_spawn): Use the full 64-bit keyid in the
941         INFO header lines, and include "sig:" records for the benefit of
942         people who store their keys in LDAP servers.  It makes it easy to
943         do queries for things like "all keys signed by Isabella".
944
945         * main.h, misc.c (hextobyte): Removed.  It's in libutil.a now.
946
947 2004-02-20  David Shaw  <dshaw@jabberwocky.com>
948
949         * keyserver.c (keyserver_export): Disallow user strings that
950         aren't key IDs.
951         (keyserver_import): Clarify error message.
952         (keyserver_spawn): Properly handle 8 bit characters in user IDs in
953         the info lines during SEND.
954
955         * mkdtemp.c: Removed.
956
957         * Makefile.am: We get mkdtemp.c from libutil.a now, so don't link
958         with @LIBOBJS@.
959
960         * keyserver.c (keyserver_spawn): Pass the scheme to the keyserver
961         helper.
962
963 2004-02-18  David Shaw  <dshaw@jabberwocky.com>
964
965         * options.h, g10.c (main), plaintext.c (handle_plaintext): Add
966         --max-output option to help people deal with decompression bombs.
967
968 2004-02-15  David Shaw  <dshaw@jabberwocky.com>
969
970         * build-packet.c (do_user_id): Do not force a header for attribute
971         packets as they require a new CTB, and we don't support forced
972         headers for new CTBs yet.
973
974 2004-02-14  David Shaw  <dshaw@jabberwocky.com>
975
976         * build-packet.c (write_header2): If a suggested header length is
977         provided along with a zero length, interpret this as an actual
978         zero length packet and not as an indeterminate length packet.
979         (do_comment, do_user_id): Use it here as these packets might be
980         naturally zero length.
981
982         * parse-packet.c (parse): Show packet type when failing due to an
983         indeterminate length packet.
984
985         * misc.c (parse_options): Only provide args for the true (i.e. not
986         "no-xxx") form of options.
987
988 2004-02-13  David Shaw  <dshaw@jabberwocky.com>
989
990         * keyserver.c (argsep): Move to misc.c.
991
992         * main.h, misc.c (parse_options), export.c (parse_export_options),
993         import.c (parse_import_options), g10.c (main): Use it here to
994         allow for options with optional arguments.  Change all callers.
995
996         * import.c (check_prefs): Some language fixes.
997         (sec_to_pub_keyblock, import_secret_one): Without knowing the
998         number of MPIs there are, we cannot try and sk-to-pk-ize a key.
999
1000 2004-02-12  David Shaw  <dshaw@jabberwocky.com>
1001
1002         * import.c (check_prefs): New function to check preferences on a
1003         public key to ensure that it does not advertise any that we cannot
1004         fulfill.  Use the keyedit command list function to optionally
1005         rewrite the prefs.
1006         (import_one, import_secret_one): Use it here when importing a
1007         public key that we have the secret half of, or when importing a
1008         secret key that we have the public half of.
1009
1010         * main.h, keyedit.c (keyedit_menu): Remove sign_mode and enhance
1011         the more general command list functionality to replace it.
1012
1013         * g10.c (main): Use the general command functionality to implement
1014         --sign-key, --lsign-key, --nrsign-key, and --nrlsign-key.
1015
1016         * import.c (import_one): Do the revocation check even in the case
1017         when a key, a revocation key set in a direct key signature, and a
1018         revocation from that revocation key, all arrive piecemeal.
1019         Needless to say, this is pretty obscure.
1020
1021 2004-02-11  David Shaw  <dshaw@jabberwocky.com>
1022
1023         * options.h, g10.c (main), keylist.c (list_keyblock_print): Add
1024         "show-unusable-subkeys" list-option to show revoked and/or expired
1025         subkeys.
1026
1027 2004-02-10  David Shaw  <dshaw@jabberwocky.com>
1028
1029         * keyedit.c (keyedit_menu): Prompt for subkey removal for both
1030         secret and public subkeys.
1031
1032         * keylist.c (list_keyblock_print), keyedit.c
1033         (show_key_with_all_names): Show the revocation date of a
1034         key/subkey, and general formatting work.
1035
1036         * packet.h, getkey.c (merge_selfsigs_main, merge_selfsigs_subkey,
1037         merge_selfsigs): Keep track of the revocation date of a key.
1038
1039         * keydb.h, keyid.c (revokestr_from_pk): New function to print the
1040         revocation date of a key.
1041
1042         * keygen.c (keygen_set_std_prefs): Build the default preferences
1043         list at runtime as it properly handles algorithms disabled at
1044         build or run time.
1045
1046         * getkey.c (merge_selfsigs_main): Properly handle expired user IDs
1047         when the expired self-sig is not the only self-sig.
1048
1049         * misc.c (compress_algo_to_string): Return NULL on failure like
1050         all of the other xxxx_algo_to_string() functions.
1051
1052         * mainproc.c (list_node): Minor spacing tweak to match --list-keys
1053         output.
1054
1055         * keylist.c (list_keyblock_print), mainproc.c (list_node): Mark
1056         revoked subkeys as revoked.  Requested by Matthew Wilcox.  Revoked
1057         overrides expiration when both apply.
1058
1059         * keyedit.c (show_prefs): Use compress algo constants.
1060         (show_basic_key_info): Make revoked and expired tags translatable.
1061
1062         * g10.c (rm_group): Properly ungroup from a list of groups.
1063
1064 2004-01-30  David Shaw  <dshaw@jabberwocky.com>
1065
1066         * g10.c (main, rm_group): Add --ungroup command to remove a
1067         particular group.
1068         (add_group): When adding a group with the same name as an already
1069         existing group, merge the two groups.
1070         (list_config): Show an error message when listing a config item
1071         that doesn't exist.
1072         (main): Replace -z0 trick for no compression.
1073
1074         * packet.h, keyedit.c (show_key_with_all_names_colon), keylist.c
1075         (list_keyblock_colon), mainproc.c (list_node, proc_tree): Minor
1076         cleanup to remove local_id, which is no longer used.
1077
1078 2004-01-27  David Shaw  <dshaw@jabberwocky.com>
1079
1080         * getkey.c: Set MAX_PK_CACHE_ENTRIES and MAX_UID_CACHE_ENTRIES to
1081         PK_UID_CACHE_SIZE (set in ./configure).
1082
1083         * getkey.c (get_pubkey): When reading key data into the cache,
1084         properly handle keys that are partially (pk, no UIDs) cached
1085         already.  This is Debian bug #176425 and #229549.
1086
1087         * compress.c (init_compress, push_compress_filter2): Do the right
1088         thing (i.e. nothing) with compress algo 0.
1089
1090         * main.h, decrypt.c (decrypt_messages): Accept filenames to
1091         decrypt on stdin.  This is bug #253.
1092
1093 2004-01-23  David Shaw  <dshaw@jabberwocky.com>
1094
1095         * mainproc.c (list_node): Show sigs with --verbose.
1096
1097         * options.h, g10.c (set_screen_dimensions): New function to look
1098         at COLUMNS and LINES.
1099
1100         * keyserver.c (parse_keyrec, keyserver_search_prompt), keyedit.c
1101         (print_and_check_one_sig): Use new screen dimension variables.
1102
1103 2004-01-21  David Shaw  <dshaw@jabberwocky.com>
1104
1105         * g10.c (list_config): New function to dump config options to
1106         stdout.  Currently requires --with-colons.
1107         (collapse_args): New function to turn argc/argv into a single
1108         string.
1109         (main): Use it here to pass list_config() more than one argument
1110         as a single string.
1111         (print_algo_numbers): Helper to print algorithm number for
1112         --list-config "pubkey", "cipher", "hash"/"digest", and "compress"
1113         config options.
1114
1115         * packet.h, getkey.c (merge_selfsigs, merge_selfsigs_main),
1116         pkclist.c (check_signatures_trust): Indicate who has revoked a key
1117         (the owner or a designated revoker).  If a key was revoked by
1118         both, prefer the owner.  If a subkey is already revoked by the
1119         owner, don't allow a designated revokation of the whole key to
1120         override this.  We're still revoked either way, of course.
1121         
1122         * keyedit.c (print_and_check_one_sig, keyedit_menu): Use the
1123         COLUMNS environment variable (if any) to hint how wide the
1124         terminal is.  Disabled on _WIN32.  Suggested by Janusz
1125         A. Urbanowicz.
1126
1127 2004-01-20  David Shaw  <dshaw@jabberwocky.com>
1128
1129         * keylist.c (set_attrib_fd): Open attribute fd in binary
1130         mode. This isn't meaningful on POSIX systems, but the Mingw builds
1131         aren't exactly POSIX.
1132
1133         * trustdb.c (reset_trust_records): New, faster, implementation
1134         that doesn't involve a keyring scan.
1135         (clear_validity): Removed.
1136
1137         * g10.c (main), keydb.h, keydb.c (keydb_rebuild_caches),
1138         keyring.h, keyring.c (keyring_rebuild_cache): Add "noisy" flag so
1139         cache rebuilds can remain noisy when called for itself, and quiet
1140         when called as part of the trustdb rebuild.
1141
1142         * trustdb.c (validate_keys): Rebuild the sig caches before
1143         building the trustdb.  Note that this is going to require some
1144         architectual re-thinking, as it is agonizingly slow.
1145
1146 2004-01-19  David Shaw  <dshaw@jabberwocky.com>
1147
1148         * sig-check.c (check_key_signature2): Comments.
1149
1150         * keyring.c (keyring_rebuild_cache): Clear sig cache for any
1151         signatures that we can no longer process (say, if the user removed
1152         support for a necessary pubkey or digest algorithm).
1153
1154 2004-01-16  David Shaw  <dshaw@jabberwocky.com>
1155
1156         * misc.c (print_cipher_algo_note): May as well call Rijndael AES
1157         at this point.
1158
1159         * keygen.c (do_create), misc.c (openpgp_pk_algo_usage): Remove the
1160         last bits of Elgamal type 20 support.
1161
1162 2004-01-03  Stefan Bellon  <sbellon@sbellon.de>
1163
1164         * compress.c [__riscos__]: Only use RISC OS' own ZLib module if
1165         configured to use it.
1166
1167 2003-12-30  David Shaw  <dshaw@jabberwocky.com>
1168
1169         * options.h, g10.c (main), import.c (parse_import_options,
1170         import_one, import_secret_one), keyserver.c (keyserver_refresh):
1171         Change --merge-only to --import-option merge-only.  Deprecate
1172         --merge-only.
1173
1174 2003-12-29  David Shaw  <dshaw@jabberwocky.com>
1175
1176         * misc.c (pull_in_libs): Dead code.  Removed.
1177
1178         * sig-check.c (check_revocation_keys): Comments.
1179
1180         * getkey.c (merge_selfsigs_main): Don't bother to check designated
1181         revoker sigs if the key is already revoked.
1182
1183         * packet.h, getkey.c (merge_selfsigs_main): New "maybe_revoked"
1184         flag on PKs.  It is set when there is a revocation signature from
1185         a valid revocation key, but the revocation key is not present to
1186         verify the signature.
1187
1188         * pkclist.c (check_signatures_trust): Use it here to give a
1189         warning when showing key trust.
1190
1191         * compress-bz2.c: Include stdio.h.  Solaris 9 has a very old bzip2
1192         library and we can at least guarantee that it won't fail because
1193         of the lack of stdio.h.
1194
1195         * tdbio.c: Fixed format string bugs related to the use of DB_NAME.
1196         Reported by Florian Weimer.
1197
1198 2003-12-28  David Shaw  <dshaw@jabberwocky.com>
1199
1200         * options.h, g10.c (main), keyserver.c (keyserver_opts,
1201         parse_keyserver_uri): honor-http-proxy is no longer an option
1202         since we can do the same thing with http-proxy with no arguments.
1203         Also remove broken-http-proxy since it can be better handled in
1204         the HTTP helper.
1205
1206         * keyserver.c (argsep): New variation on strsep that knows about
1207         optional arguments.
1208         (parse_keyserver_options): Use it here for optional arguments.
1209
1210 2003-12-28  Stefan Bellon  <sbellon@sbellon.de>
1211
1212         * plaintext.c (handle_plaintext) [__riscos__]: Don't mangle
1213         filename if the user specified it.
1214
1215         * g10.c, gpgv.c [__riscos__]: Removal of unnecessary #ifdef
1216         __riscos__ sections.
1217
1218 2003-12-27  David Shaw  <dshaw@jabberwocky.com>
1219
1220         * keyserver.c (strip_leading_space, get_arg): New.
1221         (parse_keyserver_options): Use them here to allow arguments to
1222         keyserver-options.  Since none of our options need arguments yet,
1223         just pass them through whole to the keyserver helper.
1224
1225         * main.h, misc.c (parse_options): Add a "noisy" flag to enable and
1226         disable the messages about which option didn't match or matched
1227         ambiguously.  Change all callers (g10.c, keyserver.c).
1228
1229         * main.h, import.c (import_options), export.c (export_options):
1230         Pass the noisy flag through.
1231
1232 2003-12-17  David Shaw  <dshaw@jabberwocky.com>
1233
1234         * build-packet.c (write_fake_data, do_secret_key), seckey-cert.c
1235         (do_check): Use an unsigned length for mpi_get_opaque.
1236
1237         * options.h: It's impolite to assign -1 to an unsigned
1238         opt.force_ownertrust.
1239
1240         * sig-check.c (cmp_help, do_check), sign.c (do_sign): Remove old
1241         unused code.
1242
1243         * keyid.c (keyid_from_sk): Make sure lowbits is initialized.
1244
1245 2003-12-12  David Shaw  <dshaw@jabberwocky.com>
1246
1247         * sig-check.c (do_check): Move the signing algo and hash checks
1248         from here...
1249         (signature_check2): ... to here.
1250         (check_key_signature2): ... and here.  This is a minor
1251         optimization to avoid fetching a key (which can be expensive,
1252         especially if it is not self-signed, and there are many key
1253         signatures on it which need to be checked for ultimate trust) if
1254         the signature would have failed anyway because of algorithm or
1255         hash problems.
1256
1257 2003-12-10  David Shaw  <dshaw@jabberwocky.com>
1258
1259         * packet.h, build-packet.c (hash_public_key): Remove function ...
1260
1261         * keydb.h, keyid.c (hash_public_key, do_fingerprint_md): ... and
1262         make a new one here that shares code with the fingerprint
1263         calculations.  This removes some duplicated functionality, and is
1264         also around 14% faster.  (Every bit helps).
1265
1266         * import.c (import_one): No longer need the Elgamal import
1267         warning.
1268
1269         * getkey.c (get_pubkey_fast): This one is sort of obscure.
1270         get_pubkey_fast returns the primary key when requesting a subkey,
1271         so if a user has a key signed by a subkey (we don't do this, but
1272         used to), AND that key is not self-signed, AND the algorithm of
1273         the subkey in question is not present in GnuPG, AND the algorithm
1274         of the primary key that owns the subkey in question is present in
1275         GnuPG, then we will try and verify the subkey signature using the
1276         primary key algorithm and hit a BUG().  The fix is to not return a
1277         hit if the keyid is not the primary.  All other users of
1278         get_pubkey_fast already expect a primary only.
1279
1280 2003-12-09  David Shaw  <dshaw@jabberwocky.com>
1281
1282         * keyid.c (do_fingerprint_md): Remove the rules to hash the old v3
1283         Elgamal keys.  They are no longer needed.
1284
1285         * keyid.c (keyid_from_sk, keyid_from_pk, fingerprint_from_pk,
1286         fingerprint_from_sk): Enforce the v3-is-only-RSA rule.  Anything
1287         that isn't RSA gets a zero keyid and fingerprint.
1288
1289         * keyid.c (do_fingerprint_md): Properly handle hashing of keys
1290         that we don't know the structure of by using the opaque MPI.
1291         (do_fingerprint_md_sk): We cannot calculate the fingerprint from a
1292         secret key unless we know the structure (since we can't leave off
1293         the secret key parts), so fail early.....
1294         (keyid_from_sk, fingerprint_from_sk): .... and return all zeroes.
1295
1296 2003-12-03  David Shaw  <dshaw@jabberwocky.com>
1297
1298         * g10.c (strusage, main): Show development version warning in
1299         --version output.
1300         (main): Set --bzip2-compress-level to the default value at
1301         startup.  Remove --emulate-checksum-bug noop.
1302
1303         * options.h, g10.c (main), main.h, seskey.c (do_encode_md,
1304         encode_md_value), sig-check.c (do_check), sign.c (do_sign): Remove
1305         --emulate-md-encode-bug as it only applied to Elgamal signatures,
1306         which are going away.
1307
1308 2003-11-30  David Shaw  <dshaw@jabberwocky.com>
1309
1310         * mainproc.c (proc_symkey_enc, proc_encrypted): Add ability to use
1311         --override-session-key on --symmetric messages (new-style or
1312         old-style).
1313         (proc_pubkey_enc): Move code to show session key from here to
1314         proc_encrypted() so it can work with any type of message.
1315         Suggested by Michael Young.
1316
1317 2003-11-29  David Shaw  <dshaw@jabberwocky.com>
1318
1319         * trustdb.c (validate_keys): Reset the trustdb before checking if
1320         we have any ultimately trusted keys.  This ensures that if we lose
1321         all our ultimately trusted keys, we don't leave behind the old
1322         validity calculations.  Noted by Peter Palfrader.
1323
1324         * revoke.c (gen_desig_revoke): Specify in the comment when a
1325         designated revocation is generated.
1326
1327         * getkey.c (merge_selfsigs_main, merge_selfsigs_subkey,
1328         get_seckey_byname2): Remove Elgamal check since we are removing
1329         type 20 keys altogether.
1330
1331 2003-11-27  David Shaw  <dshaw@jabberwocky.com>
1332
1333         * pkclist.c (build_pk_list): Do not allow an empty PK list in
1334         interactive mode.
1335
1336         * keygen.c (ask_algo): Remove ability to generate Elgamal
1337         sign+encrypt keys.
1338
1339         * getkey.c (merge_selfsigs_main, merge_selfsigs_subkey,
1340         get_seckey_byname2): Disallow use of sign+encrypt Elgamal keys.
1341
1342 2003-11-20  David Shaw  <dshaw@jabberwocky.com>
1343
1344         * seskey.c (do_encode_md): Comment about earlier (pre-PGP 2.3)
1345         encodings.
1346
1347         * misc.c (compress_algo_to_string): Translate "Uncompressed".
1348         Requested by Tommi Vainikainen.
1349         (string_to_compress_algo): Include multi-string for
1350         "uncompressed|none".
1351
1352 2003-11-17  David Shaw  <dshaw@jabberwocky.com>
1353
1354         * options.h, g10.c (main), compress-bz2.c (init_uncompress): Add
1355         --bz2-compress-lowmem to set bzlib "small" flag for low memory
1356         (but slow) decompression.
1357
1358 2003-11-15  David Shaw  <dshaw@jabberwocky.com>
1359
1360         * compress.c (init_compress): Remove compress level 10 trick,
1361         since it is no longer needed.
1362
1363         * g10.c: Fix typoed option name.
1364
1365         * compress-bz2.c (init_compress): Compression level 0 is not
1366         meaningful for bzip2.
1367
1368         * options.h, g10.c (main), compress.c (init_compress),
1369         compress-bz2.c (init_compress): Add --compress-level and
1370         --bzip2-compress-level.  -z sets them both.  Change various
1371         callers.
1372
1373         * encode.c (encode_simple), sign.c (sign_symencrypt_file):
1374         Properly use default_compress_algo (--compress-algo, followed by
1375         the highest --personal-compress-preference, followed by ZIP) to
1376         get the algorithm.
1377
1378 2003-11-14  David Shaw  <dshaw@jabberwocky.com>
1379
1380         * options.h, trustdb.c (trust_model_string, init_trustdb): Add
1381         support for "external" trust model, where the user can provide a
1382         pregenerated trustdb.
1383
1384         * keyedit.c (keyedit_menu): Do not allow editing ownertrust with
1385         an external trust model trustdb.
1386
1387 2003-11-13  David Shaw  <dshaw@jabberwocky.com>
1388
1389         * options.h, g10.c, keyedit.c, keylist.c, mainproc.c: Clarify the
1390         plurarility (or not) of various list and verify options.
1391
1392 2003-11-12  David Shaw  <dshaw@jabberwocky.com>
1393
1394         * g10.c (main): Add --symmetric --sign --encrypt.
1395
1396         * main.h, encode.c (setup_symkey): New.  Prompt for a passphrase
1397         and create a DEK for symmetric encryption.
1398         (write_symkey_enc): New.  Write out symmetrically encrypted
1399         session keys.
1400         (encode_crypt, encrypt_filter): Use them here here when creating a
1401         message that can be decrypted with a passphrase or a pk.
1402
1403         * sign.c (sign_file): Call setup_symkey if we are doing a
1404         --symmetric --sign --encrypt.
1405
1406 2003-11-09  David Shaw  <dshaw@jabberwocky.com>
1407
1408         * mainproc.c (proc_symkey_enc): Don't show algorithm information
1409         when --quiet is set.  Suggested by Duncan Harris.  Also don't fail
1410         with BUG() when processing a --symmetric message with a cipher we
1411         don't have.
1412
1413         * g10.c: Alias --personal-xxx-prefs to --personal-xxx-preferences.
1414
1415         * pkclist.c (build_pk_list): When adding recipients interactively,
1416         allow the user to stop at any point.
1417
1418 2003-10-31  David Shaw  <dshaw@jabberwocky.com>
1419
1420         * trustdb.h, trustdb.c (register_trusted_keyid): New.  Adds a
1421         keyid to the list of ultimately trusted keys.
1422
1423         * keygen.c (do_generate_keypair): Use it here so that the ultimate
1424         ownertrust happens before the trustdb (might be) rebuilt.  Also
1425         fix an error where the newly generated pk is thought to be a
1426         subkey by the trustdb.
1427
1428         * g10.c (main): Fix --export-all do actually do something
1429         different than --export.
1430
1431         * pkclist.c (build_pk_list): Show all recipients rather than
1432         showing each recipient as they are added.
1433
1434         * mainproc.c (proc_symkey_enc, proc_encrypted): Keep a count of
1435         the number of passphrases that can decrypt a symmetric or mixed
1436         symmetric/pk message and include it in the list of keys shown to
1437         the user.
1438
1439 2003-10-30  David Shaw  <dshaw@jabberwocky.com>
1440
1441         * misc.c (compress_algo_to_string, string_to_compress_algo,
1442         check_compress_algo): Add bzip2.
1443
1444         * compress.c (compress_filter): Make static to help force the use
1445         of push_compress_filter.  Remove default algorithm setting since
1446         that is done in push_compress_filter now.
1447
1448         * main.h: Use named algorithm.
1449
1450         * filter.h, compress.c (push_compress_filter,
1451         push_compress_filter2): New.  Figure out which is the appropriate
1452         compression filter to use, and push it into place.
1453
1454         * compress.c (handle_compressed), encode.c (encode_simple,
1455         encode_crypt), sign.c (sign_file, sign_symencrypt_file), import.c
1456         (read_block), export.c (do_export): Use push_compress_filter
1457         instead of pushing the compression filter ourselves.
1458
1459         * compress-bz2.c: New.  Bzlib versions of the compression filter
1460         routines.
1461
1462         * Makefile.am: Include compress-bz2.c if bz2lib is available.
1463
1464 2003-10-30  Werner Koch  <wk@gnupg.org>
1465
1466         * apdu.c (close_ct_reader, close_pcsc_reader): Implemented.
1467         (get_ccid_error_string): New.  Not very useful messages, though.
1468
1469 2003-10-29  Werner Koch  <wk@gnupg.org>
1470
1471         * cardglue.c (open_card): Ask for card insertion.
1472         (check_card_serialno): New.
1473         (agent_scd_pksign, agent_scd_pkdecrypt): Use it here.
1474         * cardglue.c (open_card): Issue insertion status message.
1475         * status.h, status.c (STATUS_CARDCTRL): New.
1476
1477         * status.c (cpr_get_answer_okay_cancel): New.
1478
1479 2003-10-28  Werner Koch  <wk@gnupg.org>
1480
1481         * keylist.c (list_keyblock_print): Denote secrets keys stored on a
1482         card with an '>'. Print the '#' also for subkeys.
1483         (list_keyblock_colon): Introduce new field 15 for sec/ssb to print
1484         the serial number.
1485
1486 2003-10-26  David Shaw  <dshaw@jabberwocky.com>
1487
1488         * g10.c (main): Enhance the version-specific config file code to
1489         try for more specific matches before giving up (e.g. 1.3.3-cvs,
1490         1.3.3, 1.3, 1).
1491
1492 2003-10-25  David Shaw  <dshaw@jabberwocky.com>
1493
1494         * g10.c (main): Add --symmetric --encrypt command.  This generates
1495         a message that can be decrypted via a passphrase or public key
1496         system.
1497
1498         * main.h, encode.c (encode_seskey): Allow passing in an
1499         already-created session key dek.
1500         (encode_simple): Use the actual symmetric cipher when encrypting a
1501         session key for a symmetric message.
1502         (encode_crypt): Add a flag to trigger a hybrid mode that can be
1503         decrypted via a passphrase or a pk.  Change all callers.
1504
1505         * mainproc.c (symkey_decrypt_sesskey): There is no way to tell the
1506         difference here between a bad passphrase and a cipher algorithm
1507         that we don't have, so use a error message that makes that clear.
1508         Use the actual list of ciphers when checking whether a cipher is
1509         invalid.  Return error if the decrypted cipher algorithm is
1510         invalid.
1511         (proc_symkey_enc): In a mixed passphrase/pk message, if a valid
1512         dek already exists from decrypting via pk, do not try to process
1513         the passphrase.
1514         (proc_symkey_enc): Indicate when we're decrypting a session key as
1515         opposed to decrypting data.  If a passphrase is invalid, discard
1516         the dek so we'll keep trying.
1517
1518 2003-10-25  Werner Koch  <wk@gnupg.org>
1519
1520         * ccid-driver.c (ccid_open_reader): Return an error if no USB
1521         devices are found.
1522
1523         * Makefile.am: Replaced INTLLIBS by LIBINTL.
1524
1525         * g10.c (main) [ENABLE_CARD_SUPPORT]: Add a default for
1526         --pcsc-driver.
1527
1528         * cardglue.c (learn_status_cb): Fixed faulty use of !space.
1529
1530 2003-10-24  Werner Koch  <wk@gnupg.org>
1531
1532         * apdu.c (apdu_open_reader): Hacks for PC/SC under Windows.
1533
1534 2003-10-21  Werner Koch  <wk@gnupg.org>
1535
1536         * passphrase.c (ask_passphrase): Add optional promptid arg.
1537         Changed all callers.
1538         * cardglue.c (pin_cb): Use it here, so the machine interface can
1539         tell whether the Admin PIN is requested.
1540
1541         * cardglue.c (agent_scd_checkpin): New.
1542
1543         * misc.c (openpgp_pk_algo_usage): Added AUTH usage.
1544
1545         * app-openpgp.c (check_against_given_fingerprint): New. Factored
1546         out that code elsewhere.
1547         (do_check_pin): New.
1548         * card-util.c (card_edit): New command "passwd".  Add logic to
1549         check the PIN in advance.
1550         (card_status): Add new args to return the serial number.  Changed
1551         all callers.
1552
1553 2003-10-14  David Shaw  <dshaw@jabberwocky.com>
1554
1555         * import.c (import_one): Show the keyid when giving the Elgamal
1556         slow import warning.
1557
1558         * g10.c (main): Older versions used --comment "" to indicate no
1559         comment.  Don't add an empty comment.
1560
1561 2003-10-13  David Shaw  <dshaw@jabberwocky.com>
1562
1563         * keyedit.c (show_key_with_all_names): Ownertrust is only
1564         meaningful for the PGP or classic trust models.  Both validity and
1565         ownertrust are not meaningful for the always trust model.
1566
1567 2003-10-11  Werner Koch  <wk@gnupg.org>
1568
1569         * keygen.c: Always enable the gen_card_key prototype.
1570
1571 2003-10-10  Werner Koch  <wk@gnupg.org>
1572
1573         * cardglue.c (card_close): New.
1574         (agent_scd_change_pin): Implemented.
1575
1576         * ccid-driver.c (ccid_close_reader): New.
1577         * apdu.c (close_ccid_reader, close_ct_reader, close_csc_reader)
1578         (close_osc_reader, apdu_close_reader): New.  Not all are properly
1579         implemented yet.
1580         * g10.c (g10_exit): Use close_card.
1581
1582 2003-10-09  David Shaw  <dshaw@jabberwocky.com>
1583
1584         * g10.c (main): Give a deprecated option warning for
1585         --show-keyring, --show-photos, --show-policy-url, --show-notation,
1586         and their respective no- forms.
1587
1588         * options.skel: Remove show-photos and replace with
1589         list/verify-options show-photos.  Remove no-mangle-dos-filenames.
1590
1591         * misc.c (parse_options): Allow for incomplete (but unambiguous)
1592         options.
1593
1594 2003-10-09  Werner Koch  <wk@gnupg.org>
1595
1596         * ccid-driver.c (ccid_transceive): Add T=1 chaining for sending.
1597
1598         * sign.c (do_sign) [!ENABLE_CARD_SUPPORT]: Return an error for
1599         card keys.
1600
1601         * cardglue.c (agent_scd_pkdecrypt): Implemented.
1602         * pubkey-enc.c (get_it) [ENABLE_CARD_SUPPORT]: Divert decryption
1603         to card
1604
1605 2003-10-08  Werner Koch  <wk@gnupg.org>
1606
1607         * cardglue.c (pin_cb): Detect whether an admin or regular PIN is
1608         requested.
1609         (genkey_status_cb): New.
1610         (agent_scd_genkey): Implemented.
1611
1612         * keygen.c (generate_keypair): New arg CARD_SERIALNO and prepare
1613         parameters for on card key generation. Changed all callers.
1614         (do_generate_keypair): Add new arg card and merged casrd specific
1615         changes from 1.9.
1616         (proc_parameter_file): New arg card, apss it down to
1617         do_generate_keypair and changed all callers.
1618         (gen_card_key): New.
1619
1620         * g10.c: Include cardclue.h.
1621         (main): s/app_set_default_reader_port/card_set_reader_port/.
1622         * cardglue.c (card_set_reader_port): New to address include file
1623         issues.
1624
1625 2003-10-02  Werner Koch  <wk@gnupg.org>
1626
1627         * cardglue.c (learn_status_cb): Release values before assignment
1628         so that it can be used by getattr to update the structure.
1629         (agent_scd_getattr): New.
1630
1631         * keylist.c (print_pubkey_info): Add FP arg for optional printing
1632         to a stream.  Changed all callers.
1633
1634 2003-10-01  Werner Koch  <wk@gnupg.org>
1635
1636         * app-common.h, app-openpgp.c, iso7816.c, iso7816.h, apdu.c
1637         * apdu.h, ccid-driver.c, ccid-driver.h, card-util.c: Updated
1638         from current GnuPG 1.9. Changes over there are:
1639         * card-util.c: Tweaked to use this source also under 1.3. 
1640         (card_edit): New command "forcesig".
1641         * card-util.c (print_name, print_isoname): Use 0 and not LF fro
1642         the max_n arg of tty_print_utf8_string2.
1643         * card-util.c (change_pin): Simplified.  We now have only a PIN
1644         and an Admin PIN.
1645         * ccid-driver.c: Detect GnuPG 1.3 and include appropriate files.
1646         * apdu.c: Ditto.
1647         * app-openpgp.c: Ditto.
1648         * iso7816.c: Ditto.
1649         (generate_keypair): Renamed to ..
1650         (do_generate_keypair): .. this.
1651         * app-common.h [GNUPG_MAJOR_VERSION]: New.
1652         * iso7816.h [GNUPG_MAJOR_VERSION]: Include cardglue.h
1653         * app-openpgp.c (do_change_pin): Make sure CVH1 and CHV2 are
1654         always synced.
1655         (verify_chv2, verify_chv3): New. Factored out common code.
1656         (do_setattr, do_sign, do_auth, do_decipher): Change the names of
1657         the prompts to match that we have only 2 different PINs.
1658         (app_select_openpgp): Check whether the card enforced CHV1.
1659         (convert_sig_counter_value): New. Factor out code from
1660         get_sig_counter.
1661
1662         * Makefile.am (card_support_source): Depend on new AM conditional
1663         to get the ifdef ENABLE_CARD_SUPPORT off the way from source
1664         copied files.
1665         (update-source-from-gnupg-2): Maintainer helper.
1666         
1667 2003-10-01  David Shaw  <dshaw@jabberwocky.com>
1668
1669         * g10.c (main): Add --no-groups to zero --group list.
1670
1671         * encode.c (encode_simple): Allow for 32 bytes (256 bits) of
1672         symmetrically encrypted session key.  Use --s2k-cipher-algo to
1673         choose cipher, rather than the default cipher.
1674
1675         * parse-packet.c (parse_subkeyenc): Give a warning if an
1676         symmetrically encrypted session key is seen without salt.  Show in
1677         --list-packets if a symetrically encrypted session key is present.
1678
1679         * pubkey-enc.c (get_it): Always show cipher-not-in-prefs warning
1680         unless --quiet is set.  Use text name of cipher in warning.
1681
1682 2003-09-30  David Shaw  <dshaw@jabberwocky.com>
1683
1684         * options.h, g10.c (main), mainproc.c (check_sig_and_print): Add
1685         --verify-option show-unusable-uids.
1686
1687         * gpgv.c (check_trustdb_stale): Stub.
1688
1689         * trustdb.c (get_validity): Move the up-to-date check to
1690         check_trustdb_stale (new), so that it can be called before
1691         validity is checked.
1692         
1693         * keylist.c (list_keyblock_print): Disable the overall key
1694         validity display until it can be thought about more.  Use
1695         check_trustdb_stale here to avoid putting the check warning in the
1696         middle of a listed key.
1697
1698         * trustdb.c (init_trustdb): Only verify_own_keys() for those trust
1699         models that it applies to (i.e. classic and OpenPGP).
1700
1701 2003-09-29  Werner Koch  <wk@gnupg.org>
1702
1703         * keygen.c (do_add_key_flags, parse_parameter_usage): Add support
1704         the proposed AUTH key flag.
1705         * getkey.c (fixup_uidnode, merge_selfsigs_main) 
1706         (merge_selfsigs_subkey, premerge_public_with_secret): Ditto.
1707         * keylist.c (print_capabilities): Ditto.
1708
1709         * parse-packet.c (parse_key): Allow to parse the divert-to-card
1710         S2K mode.
1711         * build-packet.c (do_secret_key): Handle divert-to-card S2K
1712         * seckey-cert.c (is_secret_key_protected): Ditto.
1713         (check_secret_key): Ditto.
1714
1715         * keygen.c (do_ask_passphrase): Renamed from ask_passphrase.
1716         * passphrase.c (ask_passphrase): New.
1717
1718 2003-09-28  Werner Koch  <wk@gnupg.org>
1719
1720         * g10.c (main): New commands --card-edit, --card-status and
1721         --change-pin.  New options --ctapi-driver, --pcsc-driver and
1722         --disable-ccid
1723         * options.h (DBG_CARD_IO): New.
1724         * cardglue.c, cardclue.h: Enhanced.
1725         * card-util.c: New. Taken from current the gnupg 1.9 branch.
1726         * app-common.h, app-openpgp.c, iso7816.c, iso7816.h, apdu.c
1727         * apdu.h, ccid-driver.c, ccid-driver.h: New.  Takem from the current
1728         gnupg 1.9 branch withy minor changes to include directives.
1729         * Makefile.am: Added these files.
1730         
1731 2003-09-27  Werner Koch  <wk@gnupg.org>
1732
1733         * sign.c (do_sign) [ENABLE_CARD_SUPPORT]: Divert to card.
1734         * cardglue.c, cardglue.h: New.
1735         * Makefile.am (gpg_LDADD): Added.
1736         (card_support_sources): New.
1737         
1738 2003-09-25  David Shaw  <dshaw@jabberwocky.com>
1739
1740         * options.h, g10.c (main), keylist.c (list_keyblock_print): Add
1741         "show-unusable-uids" list-option to show revoked and/or expired
1742         user IDs.
1743
1744 2003-09-24  David Shaw  <dshaw@jabberwocky.com>
1745
1746         * keyedit.c (show_key_with_all_names): Show names a little neater
1747         by putting the [revoked] or [expired] in the space used for the
1748         [validity].  There is also no point in showing "[unknown]
1749         [revoked]".
1750
1751 2003-09-23  David Shaw  <dshaw@jabberwocky.com>
1752
1753         * sign.c (mk_notation_policy_etc): Capitalize "URL".
1754
1755         * trustdb.c (validate_keys): Give a little more information while
1756         rebuilding trustdb.
1757
1758         * pkclist.c (do_edit_ownertrust): Clarify "don't know".
1759
1760         * g10.c (main): Default to --no-mangle-dos-filenames.
1761
1762         * keydb.h, keyring.c (keyring_search), trustdb.c (search_skipfnc):
1763         Expand the skipfnc to include a pointer to the user ID that
1764         matched.
1765
1766         * getkey.c (skip_disabled): Rename to skip_unusable, and add
1767         checks for expired or revoked user IDs.
1768
1769 2003-09-22  David Shaw  <dshaw@jabberwocky.com>
1770
1771         * g10.c (main): Deprecate --default-comment in favor of
1772         --no-comments.
1773
1774         * options.h, g10.c (main), armor.c (armor_filter): Allow using
1775         --comment multiple times to get multiple Comment: header lines.
1776         --no-comments resets list.
1777
1778 2003-09-11  David Shaw  <dshaw@jabberwocky.com>
1779
1780         * g10.c (main): Trim --help to commonly used options.  Remove -f.
1781
1782 2003-09-08  David Shaw  <dshaw@jabberwocky.com>
1783
1784         * g10.c (main): Error out if --multifile is used with the commands
1785         that don't support it yet (--sign, --clearsign, --detach-sign,
1786         --symmetric, and --store).
1787
1788         * g10.c (main): Add --multifile as an alias to turn --encrypt into
1789         --encrypt-files (plus --verify-files, --decrypt-files).
1790
1791         * encode.c (use_mdc), g10.c (main): Use RFC1991 and RFC2440
1792         directly to check for MDC usability.  Do not set the force_mdc or
1793         disable_mdc flags since there is no point any longer.
1794
1795 2003-09-04  David Shaw  <dshaw@jabberwocky.com>
1796
1797         * armor.c (parse_hash_header, armor_filter), g10.c (print_hex,
1798         print_mds), pkclist.c (algo_available): Drop TIGER/192 support.
1799
1800 2003-09-03  David Shaw  <dshaw@jabberwocky.com>
1801
1802         * keyedit.c (show_key_with_all_names): Fix assertion failure when
1803         using toggle to see a secret key.  Reported by Maxim Britov.
1804
1805 2003-08-31  David Shaw  <dshaw@jabberwocky.com>
1806
1807         * g10.c (add_keyserver_url), keyedit.c (keyedit_menu), sign.c
1808         (mk_notation_policy_etc): Clarify a few strings.  It's a
1809         "preferred keyserver URL".
1810
1811         * g10.c (main): Use "keyserver-url" instead of
1812         "preferred-keyserver" for the sake of short and simple commands.
1813
1814 2003-08-30  David Shaw  <dshaw@jabberwocky.com>
1815
1816         * main.h, keygen.c (keygen_add_keyserver_url): Signature callback
1817         for adding a keyserver URL.
1818
1819         * keyedit.c (keyedit_menu, menu_set_keyserver_url): New command to
1820         set preferred keyserver to specified (or all) user IDs.
1821
1822         * build-packet.c (build_sig_subpkt): Set preferred keyserver flag
1823         while building a preferred keyserver subpacket.
1824
1825         * keylist.c (show_policy_url, show_keyserver_url): URLs might be
1826         UTF8.
1827
1828         * keyedit.c (menu_addrevoker): Fix leaking a few bytes.
1829
1830 2003-08-29  David Shaw  <dshaw@jabberwocky.com>
1831
1832         * keyedit.c (show_key_with_all_names): Use list-option
1833         show-long-keyid in main --edit-key display.
1834
1835         * keyedit.c (print_and_check_one_sig): Use list-option
1836         show-long-keyid in --edit-key "check" function.
1837
1838 2003-08-28  David Shaw  <dshaw@jabberwocky.com>
1839
1840         * passphrase.c (agent_send_all_options): Make use of $GPG_TTY.
1841
1842         * g10.c (main): Disable use-agent if passphrase-fd is given
1843         later. Suggested by Kurt Garloff.
1844
1845         * exec.c, g10.c, gpgv.c, passphrase.c, photoid.c:
1846         s/__MINGW32__/_WIN32/ to help building on native Windows
1847         compilers.  Requested by Brian Gladman.  From Werner on stable
1848         branch.
1849
1850 2003-08-25  David Shaw  <dshaw@jabberwocky.com>
1851
1852         * options.h, g10.c (main): Add list-option
1853         list-preferred-keyserver.
1854
1855         * keyedit.c (change_passphrase): When responding 'no' to the blank
1856         passphrase question, re-prompt for a new passphrase.  This is bug
1857         #202.
1858
1859         * mainproc.c (check_sig_and_print): Use two different preferred
1860         keyserver displays - one if the key is not present (to tell the
1861         user where to get the key), the other if it is present (to tell
1862         the user where the key can be refreshed).
1863
1864         * packet.h, parse-packet.c (parse_signature): Set flag if a
1865         preferred keyserver is present.
1866
1867         * keylist.c (list_keyblock_print): Show keyserver url in listings
1868         with list-option show-keyserver-url.
1869
1870 2003-08-24  David Shaw  <dshaw@jabberwocky.com>
1871
1872         * Makefile.am: Use NETLIBS instead of EGDLIBS.
1873
1874         * mainproc.c (check_sig_and_print): Get the uid validity before
1875         printing any sig results to avoid munging the output with trustdb
1876         warnings.
1877
1878         * g10.c (main): Don't include --show-keyring in --help as it is
1879         deprecated.
1880
1881 2003-08-21  David Shaw  <dshaw@jabberwocky.com>
1882
1883         * gpgv.c: Remove extra semicolon (typo).
1884
1885         * options.skel: Note that keyserver.pgp.com isn't synchronized,
1886         and explain the roundrobin a bit better.
1887
1888         * sig-check.c (check_key_signature2), import.c (import_one,
1889         import_revoke_cert, chk_self_sigs, delete_inv_parts,
1890         collapse_uids, merge_blocks): Make much quieter during import of
1891         slightly munged, but recoverable, keys. Use log_error for
1892         unrecoverable import failures.
1893
1894         * keyring.c (keyring_rebuild_cache): Comment.
1895
1896         * sign.c (mk_notation_and_policy): Making a v3 signature with
1897         notations or policy urls is an error, not an info (i.e. increment
1898         the errorcount). Don't print the notation or policy url to stdout
1899         since it can be mixed into the output stream when piping and munge
1900         the stream.
1901
1902 2003-08-12  David Shaw  <dshaw@jabberwocky.com>
1903
1904         * packet.h, sig-check.c (signature_check2, do_check,
1905         do_check_messages): Provide a signing-key-is-revoked flag.  Change
1906         all callers.
1907
1908         * status.h, status.c (get_status_string): New REVKEYSIG status tag
1909         for a good signature from a revoked key.
1910
1911         * mainproc.c (do_check_sig, check_sig_and_print): Use it here.
1912
1913         * import.c (import_revoke_cert, merge_blocks, merge_sigs): Compare
1914         actual signatures on import rather than using keyid or class
1915         matching.  This does not change actual behavior with a key, but
1916         does mean that all sigs are imported whether they will be used or
1917         not.
1918
1919         * parse-packet.c (parse_signature): Don't give "signature packet
1920         without xxxx" warnings for experimental pk algorithms.  An
1921         experimental algorithm may not have a notion of (for example) a
1922         keyid (i.e. PGP's x.509 stuff).
1923
1924 2003-08-02  David Shaw  <dshaw@jabberwocky.com>
1925
1926         * options.h, g10.c (main), keylist.c (list_keyblock_print),
1927         keyedit.c (print_and_check_one_sig): New "show-sig-expire"
1928         list-option to show signature expiration dates (if any).
1929
1930 2003-07-24  David Shaw  <dshaw@jabberwocky.com>
1931
1932         * options.h, g10.c (main, add_keyserver_url): Add
1933         --sig-preferred-keyserver to implant a "where to get my key"
1934         subpacket into a signature.
1935
1936         * sign.c (mk_notation_and_policy): Rename to
1937         mk_notation_policy_etc and add preferred keyserver support for
1938         signatures.
1939
1940 2003-07-21  David Shaw  <dshaw@jabberwocky.com>
1941
1942         * keygen.c (do_add_key_flags): Don't set the certify flag for
1943         subkeys.
1944         (ask_algo): Provide key flags for DSA, Elgamal_e, and Elgamal
1945         subkeys.
1946         (generate_keypair): Provide key flags for the default DSA/Elgamal
1947         keys.
1948
1949         * sig-check.c (signature_check, signature_check2,
1950         check_key_signature, check_key_signature2): Allow passing NULLs
1951         for unused parameters in the x2 form of each function to avoid the
1952         need for dummy variables. getkey.c, mainproc.c: Change all
1953         callers.
1954
1955         * trustdb.h, trustdb.c (read_trust_options): New.  Returns items
1956         from the trustdb version record.
1957
1958         * keylist.c (public_key_list): Use it here for the new "tru"
1959         record.
1960
1961         * gpgv.c (read_trust_options): Stub.
1962
1963 2003-07-20  David Shaw  <dshaw@jabberwocky.com>
1964
1965         * keyedit.c (show_key_with_all_names): Use list-option
1966         show-validity in --edit-key interface as well.
1967
1968 2003-07-19  David Shaw  <dshaw@jabberwocky.com>
1969
1970         * options.h, g10.c (main), mainproc.c (check_sig_and_print): Add
1971         verify-options "show-validity" and "show-long-keyid" to show
1972         trustdb validity and long keyids during (file) signature
1973         verification.
1974
1975         * packet.h, main.h, sig-check.c (signature_check2,
1976         check_key_signature2, do_check): If ret_pk is set, fill in the pk
1977         used to verify the signature.  Change all callers in getkey.c,
1978         mainproc.c, and sig-check.c.
1979
1980         * keylist.c (list_keyblock_colon): Use the ret_pk from above to
1981         put the fingerprint of the signing key in "sig" records during a
1982         --with-colons --check-sigs.  This requires --no-sig-cache as well
1983         since we don't cache fingerprints.
1984
1985 2003-07-10  David Shaw  <dshaw@jabberwocky.com>
1986
1987         * parse-packet.c (parse_signature): No need to reserve 8 bytes for
1988         the unhashed signature cache any longer.
1989
1990         * misc.c (pct_expando): Add two new expandos - signer's
1991         fingerprint (%g), and signer's primary fingerprint (%p).
1992
1993         * Makefile.am: Include W32LIBS where appropriate.
1994
1995         * g10.c (main): Add --rfc2440 alias for --openpgp since in a few
1996         months, they won't be the same thing.
1997
1998         * keyserver.c (parse_keyserver_uri): Accept "http" as an alias for
1999         "hkp", since it is occasionally written that way.
2000         (keyserver_spawn): Use ascii_isspace to avoid locale issues.
2001
2002         * keygen.c (ask_user_id): Make --allow-freeform-uid apply to the
2003         email field as well as the name field, and allow mixing fields
2004         when it is set.
2005
2006         * options.skel: Use subkeys.pgp.net as the default keyserver.
2007
2008         * trustdb.c (validate_one_keyblock): Certifications on revoked or
2009         expired uids do not count in the web of trust.
2010
2011         * signal.c (init_one_signal, pause_on_sigusr, do_block): Only use
2012         sigprocmask() if we have sigset_t, and only use sigaction() if we
2013         have struct sigaction.  This is for Forte c89 on Solaris which
2014         seems to define only the function call half of the two pairs by
2015         default.
2016         (pause_on_sigusr): Typo.
2017         (do_block): If we can't use sigprocmask() and sigset_t, try to get
2018         the number of signals from NSIG as well as MAXSIG, and if we
2019         can't, fail with an explanation.
2020
2021         * signal.c, tdbio.c: Comment out the transaction code.  It was not
2022         used in this version, and was causing some build problems on
2023         quasi-posix platforms (Solaris and Forte c89).
2024
2025         * keylist.c (list_keyblock_colon): Don't include validity values
2026         when listing secret keys since they can be incorrect and/or
2027         misleading.  This is a temporary kludge, and will be handled
2028         properly in 1.9/2.0.
2029
2030         * mainproc.c (check_sig_and_print): Only show the "key available
2031         from" preferred keyserver line if the key is not currently
2032         present.
2033
2034         * keyedit.c (sign_uids): Do not sign expired uids without --expert
2035         (same behavior as revoked uids).  Do not allow signing a user ID
2036         without a self-signature.  --expert overrides.  Add additional
2037         prompt to the signature level question.
2038         (menu_expire): When changing expiration dates, don't replace
2039         selfsigs on revoked uids since this would effectively unrevoke
2040         them. There is also no point in replacing expired selfsigs.  This
2041         is bug #181
2042
2043 2003-07-10  David Shaw  <dshaw@jabberwocky.com> (from Werner on stable branch)
2044
2045         * g10.c (add_notation_data): Make sure that only ascii is passed
2046         to iscntrl.  Noted by Christian Biere.
2047         * getkey.c (classify_user_id2): Replaced isspace by spacep
2048         * keygen.c (ask_user_id): Ditto.
2049         (get_parameter_algo): Ditto.
2050         * keyedit.c (keyedit_menu): Ditto.
2051         * tdbdump.c (import_ownertrust): Ditto.  s/isxdigit/hexdigitp/.
2052         * revoke.c (ask_revocation_reason): 
2053         * keyserver.c (keyserver_spawn): Dito.
2054
2055 2003-06-10  Werner Koch  <wk@gnupg.org>
2056
2057         * parse-packet.c (parse): Disallow old style partial length for
2058         all key material packets to avoid possible corruption of keyrings.
2059
2060 2003-06-08  Werner Koch  <wk@gnupg.org>
2061
2062         * import.c (import_keys_internal): Invalidate the cache so that
2063         the file descriptor gets closed.  Fixes bug reported by Juan
2064         F. Codagnone.
2065
2066 2003-06-04  David Shaw  <dshaw@jabberwocky.com>
2067
2068         * options.skel: Use new hkp://subkeys.pgp.net as sample keyserver
2069         since they at least handle subkeys correctly.
2070
2071         * options.h, g10.c (main), main.h, keylist.c (show_keyserver_url),
2072         mainproc.c (check_sig_and_print), parse-packet.c (dump_sig_subpkt,
2073         parse_one_sig_subpkt, can_handle_critical): Add read-only support
2074         for preferred keyserver subpackets.  They're basically policy URLs
2075         with a different name.  Add a verify-option
2076         "show-preferred-keyserver" to turn them on and off (on by default,
2077         as per stable branch).
2078
2079         * g10.c (main): Add "--set-notation" as alias to "--notation-data"
2080         this is to make things consistent with --set-policy-url meaning
2081         both sigs and certs.
2082
2083 2003-06-03  David Shaw  <dshaw@jabberwocky.com>
2084
2085         * options.h, g10.c (main), keylist.c (list_keyblock_print): Add
2086         "show-validity" and "show-long-keyid" list-options.
2087
2088         * gpgv.c (get_validity, trust_value_to_string): Stubs.
2089
2090         * g10.c (main): Use SAFE_VERSION instead of VERSION in the
2091         version-specific gpg.conf file so it can be overridden on RISCOS.
2092
2093 2003-06-01  David Shaw  <dshaw@jabberwocky.com>
2094
2095         * g10.c (main), keylist.c (show_policy_url, show_notation),
2096         mainproc.c (check_sig_and_print): Emulate the old policy and
2097         notation behavior (display by default).  Send to status-fd whether
2098         it is displayed on the screen or not.
2099
2100         * g10.c (main): Since we now have some options in devel that won't
2101         work in a stable branch gpg.conf file, try for a version-specific
2102         gpg.conf-VERSION file before falling back to gpg.conf.
2103
2104         * main.h, options.h: Move various option flags to options.h.
2105
2106 2003-05-31  David Shaw  <dshaw@jabberwocky.com>
2107
2108         * mainproc.c (check_sig_and_print), main.h, keylist.c
2109         (show_policy, show_notation): Collapse the old print_notation_data
2110         into show_policy() and show_notation() so there is only one
2111         function to print notations and policy URLs.
2112
2113         * options.h, main.h, g10.c (main), keyedit.c
2114         (print_and_check_one_sig), keylist.c (list_one,
2115         list_keyblock_print), pkclist.c (do_edit_ownertrust), sign.c
2116         (mk_notation_and_policy): New "list-options" and "verify-options"
2117         commands.  These replace the existing
2118         --show-photos/--no-show-photos,
2119         --show-notation/--no-show-notation,
2120         --show-policy-url/--no-show-policy-url, and --show-keyring
2121         options.  The new method is more flexible since a user can specify
2122         (for example) showing photos during sig verification, but not in
2123         key listings.  The old options are emulated.
2124
2125         * main.h, misc.c (parse_options): New general option line
2126         parser. Fix the bug in the old version that did not handle report
2127         syntax errors after a valid entry.
2128
2129         * import.c (parse_import_options), export.c
2130         (parse_export_options): Call it here instead of duplicating the
2131         code.
2132
2133 2003-05-30  David Shaw  <dshaw@jabberwocky.com>
2134
2135         * keylist.c (list_one): Don't show the keyring filename when in
2136         --with-colons mode.  Actually translate "Keyring" string.
2137
2138         * mainproc.c (proc_tree): We can't currently handle multiple
2139         signatures of different classes or digests (we'd pretty much have
2140         to run a different hash context for each), but if they are all the
2141         same, make an exception.  This is Debian bug #194292.
2142
2143         * sig-check.c (check_key_signature2): Make string translatable.
2144
2145         * packet.h, getkey.c (fixup_uidnode): Mark real primary uids
2146         differently than assumed primaries.
2147
2148         * keyedit.c (no_primary_warning): Use the differently marked
2149         primaries here in a new function to warn when an --edit-key
2150         command might rearrange the self-sig dates enough to change which
2151         uid is primary.
2152         (menu_expire, menu_set_preferences): Use no_primary_warning()
2153         here.
2154
2155         * Makefile.am: Use @DLLIBS@ for -ldl.
2156
2157 2003-05-26  David Shaw  <dshaw@jabberwocky.com>
2158
2159         * getkey.c (premerge_public_with_secret): Made "no secret subkey
2160         for" warning a verbose item and translatable. (From wk on stable
2161         branch)
2162
2163         * sig-check.c (check_key_signature2): Made "no subkey for subkey
2164         binding packet" a verbose item instead of a !quiet one.  There are
2165         too many garbled keys out in the wild. (From wk on stable branch)
2166
2167         * filter.h: Remove const from WHAT. (From wk on stable branch)
2168
2169         * progress.c (handle_progress): Store a copy of
2170         NAME. (progress_filter): Release WHAT, make sure not to print a
2171         NULL WHAT. (From wk on stable branch)
2172
2173         * openfile.c (open_sigfile): Adjust free for new progress
2174         semantics. (From wk on stable branch)
2175
2176         * plaintext.c (ask_for_detached_datafile): Don't dealloc
2177         pfx->WHAT. (From wk on stable branch)
2178
2179         * seckey-cert.c (do_check): Issue the RSA_OR_IDEA status when the
2180         cipher algo is IDEA to make it easier to track down the
2181         problem. (From twoaday on stable branch)
2182         
2183 2003-05-24  David Shaw  <dshaw@jabberwocky.com>
2184
2185         * armor.c, g10.c, kbnode.c, misc.c, pkclist.c, sign.c,
2186         build-packet.c, getkey.c, keydb.c, openfile.c, plaintext.c,
2187         status.c, gpgv.c, keygen.c, options.h, sig-check.c, tdbio.h,
2188         encode.c, mainproc.c, parse-packet.c, signal.c, textfilter.c: Edit
2189         all preprocessor instructions to remove whitespace before the '#'.
2190         This is not required by C89, but there are some compilers out
2191         there that don't like it.
2192
2193 2003-05-21  David Shaw  <dshaw@jabberwocky.com>
2194
2195         * trustdb.h, trustdb.c (is_disabled), gpgv.c (is_disabled): Rename
2196         is_disabled to cache_disabled_value, which now takes a pk and not
2197         just the keyid. This is for speed since there is no need to
2198         re-fetch a key when we already have that key handy.  Cache the
2199         result of the check so we don't need to hit the trustdb more than
2200         once.
2201         
2202         * getkey.c (skip_disabled): New function to get a pk and call
2203         is_disabled on it. (key_byname): Use it here.
2204         
2205         * packet.h, getkey.c (skip_disabled), keylist.c
2206         (print_capabilities): New "pk_is_disabled" macro to retrieve the
2207         cached disabled value if available, and fill it in via
2208         cache_disabled_value if not available.
2209
2210         * trustdb.c (get_validity): Cache the disabled value since we have
2211         it handy and it might be useful later.
2212
2213         * parse-packet.c (parse_key): Clear disabled flag when parsing a
2214         new key.  Just in case someone forgets to clear the whole key.
2215
2216         * getkey.c (merge_selfsigs_main): Add an "if all else fails" path
2217         for setting a single user ID primary when there are multiple set
2218         primaries all at the same second, or no primaries set and the most
2219         recent user IDs are at the same second, or no signed user IDs at
2220         all. This is arbitrary, but deterministic.
2221
2222         * exec.h, photoid.h: Add copyright message.
2223
2224         * keylist.c (list_keyblock_print): Don't dump attribs for
2225         revoked/expired/etc uids for non-colon key listings.  This is for
2226         consistency with --show-photos.
2227
2228         * main.h, keylist.c (dump_attribs), mainproc.c
2229         (check_sig_and_print): Dump attribs if --attrib-fd is set when
2230         verifying signatures.
2231         
2232         * g10.c (main): New --gnupg option to disable the various
2233         --openpgp, --pgpX, etc. options.  This is the same as --no-XXXX
2234         for those options.
2235
2236         * revoke.c (ask_revocation_reason): Clear old reason if user
2237         elects to repeat question.  This is bug 153.
2238
2239         * keyedit.c (sign_uids): Show keyid of the key making the
2240         signature.
2241
2242 2003-05-21  Werner Koch  <wk@gnupg.org>
2243
2244         * progress.c (handle_progress)
2245         * sign.c (write_plaintext_packet)
2246         * encode.c (encode_simple,encode_crypt): Make sure that a filename
2247         of "-" is considered to be stdin so that iobuf_get_filelength
2248         won't get called.  This fixes bug 156 reported by Gregery Barton.
2249
2250 2003-05-02  David Shaw  <dshaw@jabberwocky.com>
2251
2252         * packet.h, build-packet.c (build_sig_subpkt), export.c
2253         (do_export_stream), import.c (remove_bad_stuff, import),
2254         parse-packet.c (dump_sig_subpkt, parse_one_sig_subpkt): Remove
2255         vestigal code for the old sig cache subpacket.  This wasn't
2256         completely harmless as it caused subpacket 101 to disappear on
2257         import and export.
2258
2259         * options.h, armor.c, cipher.c, g10.c, keyedit.c, pkclist.c,
2260         sign.c, encode.c, getkey.c, revoke.c: The current flags for
2261         different levels of PGP-ness are massively complex.  This is step
2262         one in simplifying them. No functional change yet, just use a
2263         macro to check for compliance level.
2264
2265         * sign.c (sign_file): Fix bug that causes spurious compression
2266         preference warning.
2267
2268         * sign.c (clearsign_file): Fix bug that prevents proper warning
2269         message from appearing when clearsigning in --pgp2 mode with a
2270         non-v3 RSA key.
2271
2272         * main.h, misc.c (compliance_option_string, compliance_string,
2273         compliance_failure), pkclist.c (build_pk_list), sign.c (sign_file,
2274         clearsign_file), encode.c (encode_crypt,
2275         write_pubkey_enc_from_list): New functions to put the "this
2276         message may not be usable...." warning in one place.
2277
2278         * options.h, g10.c (main): Part two of the simplification.  Use a
2279         single enum to indicate what we are compliant to (1991, 2440,
2280         PGPx, etc.)
2281
2282         * g10.c (main): Show errors for failure in export, send-keys,
2283         recv-keys, and refresh-keys.
2284
2285         * options.h, g10.c (main): Give algorithm warnings for algorithms
2286         chosen against the --pgpX and --openpgp rules.
2287
2288         * keydb.h, pkclist.c (algo_available): Make TIGER192 invalid in
2289         --openpgp mode.
2290
2291         * sign.c (sign_file), pkclist.c (algo_available): Allow passing a
2292         hint of 0.
2293
2294 2003-05-01  David Shaw  <dshaw@jabberwocky.com>
2295
2296         * tdbio.c (create_version_record): Only create new trustdbs with
2297         TM_CLASSIC or TM_PGP.
2298
2299         * trustdb.h, trustdb.c (trust_string, get_ownertrust_string,
2300         get_validity_string, ask_ownertrust, validate_keys), pkclist.c
2301         (do_edit_ownertrust): Rename trust_string to trust_value_to_string
2302         for naming consistency.
2303
2304         * trustdb.h, trustdb.c (string_to_trust_value): New function to
2305         translate a string to a trust value.
2306
2307         * g10.c (main): Use string_to_trust_value here for
2308         --force-ownertrust.
2309         
2310         * options.h, g10.c (main), trustdb.c (trust_model_string,
2311         init_trustdb, check_trustdb, update_trustdb, get_validity,
2312         validate_one_keyblock): An "OpenPGP" trust model is misleading
2313         since there is no official OpenPGP trust model.  Use "PGP"
2314         instead.
2315
2316 2003-04-30  David Shaw  <dshaw@jabberwocky.com>
2317
2318         * build-packet.c (build_sig_subpkt): Comments.
2319
2320         * exec.c (exec_write): Cast NULL to void* to properly terminate
2321         varargs list.
2322
2323         * keyedit.c (show_key_with_all_names): Just for safety, catch an
2324         invalid pk algorithm.
2325
2326         * sign.c (make_keysig_packet): Crucial that the call to mksubpkt
2327         comes LAST before the calls to finalize the sig as that makes it
2328         possible for the mksubpkt function to get a reliable pointer to
2329         the subpacket area.
2330
2331         * pkclist.c (do_we_trust_pre): If an untrusted key was chosen by a
2332         particular user ID, use that ID as the one to ask about when
2333         prompting whether to use the key anyway.
2334         (build_pk_list): Similar change here when adding keys to the
2335         recipient list.
2336
2337         * trustdb.c (update_validity): Fix bug that prevented more than
2338         one validity record per trust record.
2339         (get_validity): When retrieving validity for a (user) supplied
2340         user ID, return the validity for that user ID only, and do not
2341         fall back to the general key validity.
2342         (validate_one_keyblock): Some commentary on whether
2343         non-self-signed user IDs belong in the web of trust (arguably,
2344         they do).
2345
2346 2003-04-27  David Shaw  <dshaw@jabberwocky.com>
2347
2348         * g10.c (main): Add --no-textmode.
2349
2350         * export.c (do_export_stream), keyedit.c (show_key_with_all_names,
2351         menu_addrevoker), mainproc.c (check_sig_and_print), photoid.c
2352         (show_photos), sign.c (mk_notation_and_policy), trustdb.c
2353         (get_validity, reset_trust_records, validate_keys): Make some
2354         strings translatable.
2355
2356         * mainproc.c (check_sig_and_print): Show digest algorithm and sig
2357         class when verifying a sig with --verbose on, and add version, pk
2358         and hash algorithms and sig class to VALIDSIG.
2359         
2360         * parse-packet.c (enum_sig_subpkt): Make a warning message a
2361         --verbose warning message since we don't need to warn every time
2362         we see an unknown critical (we only need to invalidate the
2363         signature).
2364
2365         * trustdb.c (init_trustdb): Check the trustdb options even with
2366         TM_AUTO since the auto may become TM_CLASSIC or TM_OPENPGP.
2367
2368 2003-04-26  David Shaw  <dshaw@jabberwocky.com>
2369
2370         * sign.c (do_sign): Show the hash used when making a signature in
2371         verbose mode.
2372
2373         * tdbio.h, tdbio.c (tdbio_read_model): New function to return the
2374         trust model used in a given trustdb.
2375
2376         * options.h, g10.c (main), trustdb.c (init_trustdb, check_trustdb,
2377         update_trustdb): Use tdbio_read_model to implement an "auto" trust
2378         model which is set via the trustdb.
2379
2380 2003-04-23  David Shaw  <dshaw@jabberwocky.com>
2381
2382         * import.c (import_revoke_cert): Remove ultimate trust when
2383         revoking an ultimately trusted key.
2384
2385         * keyedit.c (sign_uids): Allow replacing expired signatures.
2386         Allow duplicate signatures with --expert.
2387
2388         * pkclist.c (check_signatures_trust): Don't display a null
2389         fingerprint when checking a signature with --always-trust enabled.
2390
2391         * filter.h (progress_filter_context_t), progress.c
2392         (handle_progress), plaintext.c (ask_for_detached_datafile,
2393         hash_datafiles): Fix compiler warnings.  Make "what" constant.
2394
2395         * build-packet.c (do_plaintext): Do not create invalid literal
2396         packets with >255-byte names.
2397
2398 2003-04-15  Werner Koch  <wk@gnupg.org>
2399
2400         * Makefile.am (AM_CFLAGS): Make use of AM_CFLAGS and AM_LDFLAGS.
2401
2402         * g10.c, options.h: New option --enable-progress-filter.
2403         * progress.c (handle_progress): Make use of it.
2404
2405 2003-04-15  Marcus Brinkmann  <marcus@g10code.de>
2406
2407         * progress.c: New file.
2408         * Makefile.am (common_source): Add progress.c.
2409         * filter.h (progress_filter_context_t): New type.
2410         (progress_filter, handle_progress): New prototypes.
2411         * main.h (open_sigfile): New argument for prototype.
2412         * openfile.c (open_sigfile): New argument to install progress
2413         filter.
2414         * encode.c (encode_simple): New variable PFX.  Register
2415         progress filter.  Install text_filter after that.
2416         (encode_crypt): Likewise.
2417         * sign.c (sign_file): Likewise.
2418         (clearsign_file): Likewise.
2419         * decrypt.c (decrypt_message): Likewise.
2420         (decrypt_messages): Likewise.
2421         * verify.c (verify_signatures): Likewise.
2422         (verify_one_file): Likewise.
2423         * plaintext.c (hash_datafiles): Likewise.
2424         (ask_for_detached_datafile): Likewise.
2425
2426 2003-04-10  Werner Koch  <wk@gnupg.org>
2427
2428         * passphrase.c (read_passphrase_from_fd): Do a dummy read if the
2429         agent is to be used.  Noted by Ingo Klöcker.
2430         (agent_get_passphrase): Inhibit caching when we have no
2431         fingerprint.  This is required for key generation as well as for
2432         symmetric only encryption.
2433
2434         * passphrase .c (agent_get_passphrase): New arg CANCELED.
2435         (passphrase_to_dek): Ditto.  Passed to above.  Changed all
2436         callers to pass NULL.
2437         * seckey-cert.c (do_check): New arg CANCELED.
2438         (check_secret_key): Terminate loop when canceled.
2439
2440         * keyedit.c (change_passphrase): Pass ERRTEXT untranslated to
2441         passphrase_to_dek and translate where appropriate.
2442         * seckey-cert.c (check_secret_key): Ditto.
2443         * keygen.c (ask_passphrase): Ditto.
2444         * passphrase.c (agent_get_passphrase): Translate the TRYAGAIN_TEXT.
2445         Switch the codeset to utf-8.
2446
2447 2003-04-09  Werner Koch  <wk@gnupg.org>
2448
2449         * decrypt.c (decrypt_messages): Fixed error handling; the function
2450         used to re-loop with same file after an error.  Reported by Joseph
2451         Walton.
2452
2453 2003-04-08  David Shaw  <dshaw@jabberwocky.com>
2454
2455         * main.h, g10.c (main), import.c (parse_import_options,
2456         fix_pks_corruption): It's really PKS corruption, not HKP
2457         corruption.  Keep the old repair-hkp-subkey-bug command as an
2458         alias.
2459
2460         * g10.c (main): Rename --no-version to --no-emit-version for
2461         consistency.  Keep --no-version as an alias.
2462
2463 2003-04-04  David Shaw  <dshaw@jabberwocky.com>
2464
2465         * pkclist.c (algo_available): PGP 8 can use the SHA-256 hash.
2466
2467         * sign.c (sign_file, clearsign_file, sign_symencrypt_file): Remove
2468         unused code.
2469
2470 2003-04-01  Werner Koch  <wk@gnupg.org>
2471
2472         * mainproc.c (check_sig_and_print): Add primary key fpr to VALIDSIG
2473         status.
2474
2475 2003-03-24  David Shaw  <dshaw@jabberwocky.com>
2476
2477         * keydb.h: Err on the side of making an unknown signature a SIG
2478         rather than a CERT.
2479
2480         * import.c (delete_inv_parts): Discard any key signatures that
2481         aren't key types (i.e. 0x00, 0x01, etc.)
2482
2483         * g10.c (main): Add deprecated option warning for
2484         --list-ownertrust.  Add --compression-algo alias for
2485         --compress-algo.  Change --version output strings to match
2486         "showpref" strings, and make translatable.
2487
2488         * status.c (do_get_from_fd): Accept 'y' as well as 'Y' for
2489         --command-fd boolean input.
2490
2491         * trustdb.c: Fix typo (DISABLE_REGEXP -> DISABLE_REGEX)
2492
2493         * keyedit.c (show_key_with_all_names_colon): Show no-ks-modify
2494         flag.
2495
2496 2003-03-11  David Shaw  <dshaw@jabberwocky.com>
2497
2498         * options.h, g10.c (main), keyserver.c (kopts): Add "try-dns-srv"
2499         keyserver option.  Defaults to on.
2500
2501         * passphrase.c (agent_get_passphrase): Fix memory leak with
2502         symmetric messages.  Fix segfault with symmetric messages.  Fix
2503         incorrect prompt with symmetric messages.
2504
2505 2003-03-10  Werner Koch  <wk@gnupg.org>
2506
2507         * compress.c (init_uncompress): Use a 15 bit window size so that
2508         the output of implementations which don't run for PGP 2
2509         compatibility won't get garbled.
2510
2511 2003-03-04  David Shaw  <dshaw@jabberwocky.com>
2512
2513         * trustdb.c (validate_keys): Mask the ownertrust when building the
2514         list of fully valid keys so that disabled keys are still counted
2515         in the web of trust.
2516         (get_ownertrust_with_min): Do the same for the minimum ownertrust
2517         calculation.
2518
2519         * parse-packet.c (dump_sig_subpkt): Show the notation names for
2520         not-human-readable notations.  Fix cosmetic off-by-one length
2521         counter.
2522
2523         * options.skel: Add explantion and commented-out
2524         "no-mangle-dos-filenames".
2525
2526         * mainproc.c (proc_encrypted): Make string translatable.
2527
2528         * keyserver.c (keyserver_spawn): Quote ':', '%', and any 8-bit
2529         characters in the uid strings sent to the keyserver helper.
2530
2531         * keyring.c (keyring_rebuild_cache): Lock the keyring while
2532         rebuilding the signature caches to prevent another gpg from
2533         tampering with the temporary copy.
2534
2535         * keygen.c (keygen_set_std_prefs): Include AES192 and AES256 in
2536         default prefs.
2537
2538         * keyedit.c (show_prefs): Make strings translatable.
2539
2540         * keydb.c: Double the maximum number of keyrings to 40.
2541
2542         * gpgv.c (main): Fix bug #113 - gpgv should accept the
2543         --ignore-time-conflict option.
2544
2545         * g10.c (main): --openpgp disables --pgpX.  Double the amount of
2546         secure memory to 32k (keys are getting bigger these days).
2547
2548         * Makefile.am: Makefile.am: Use @CAPLIBS@ to link in -lcap if we
2549         are using capabilities.
2550
2551 2003-02-26  David Shaw  <dshaw@jabberwocky.com>
2552
2553         * keyserver.c (keyserver_spawn): Include various pieces of
2554         information about the key in the data sent to the keyserver
2555         helper.  This allows the helper to use it in instructing a remote
2556         server which may not have any actual OpenPGP smarts in parsing
2557         keys.
2558
2559         * main.h, export.c (export_pubkeys_stream, do_export_stream): Add
2560         ability to return only the first match in an exported keyblock for
2561         keyserver usage.  This should be replaced at some point with a
2562         more flexible solution where each key can be armored seperately.
2563
2564 2003-02-22  David Shaw  <dshaw@jabberwocky.com>
2565
2566         * sign.c (sign_file): Do not push textmode filter onto an unopened
2567         IOBUF (segfault).  Noted by Marcus Brinkmann.  Push and
2568         reinitialize textmode filter for each file in a multiple file
2569         list.
2570
2571         * packet.h, getkey.c (fixup_uidnode), keyedit.c (show_prefs): Set
2572         and show the keyserver no-modify flag.
2573
2574         * keygen.c (add_keyserver_modify): New.
2575         (keygen_upd_std_prefs): Call it here.
2576         (keygen_set_std_prefs): Accept "ks-modify" and "no-ks-modify" as
2577         prefs to set and unset keyserver modify flag.
2578
2579         * g10.c (main): Accept "s1" in addition to "idea" to match the
2580         other ciphers.
2581
2582         * main.h, misc.c (idea_cipher_warn): We don't need this if IDEA
2583         has been disabled.
2584
2585 2003-02-21  David Shaw  <dshaw@jabberwocky.com>
2586
2587         * keygen.c (keygen_set_std_prefs): Don't put AES or CAST5 in
2588         default prefs if they are disabled.
2589
2590         * g10.c (main): Use 3DES instead of CAST5 if we don't have CAST5
2591         support.  Use 3DES for the s2k cipher in --openpgp mode.
2592         (print_mds): #ifdef all of the optional digest algorithms.
2593
2594 2003-02-12  David Shaw  <dshaw@jabberwocky.com>
2595
2596         * keydb.h, getkey.c (classify_user_id, classify_user_id2): Make
2597         'exact' a per-desc item.  Merge into one function since
2598         'force_exact' is no longer needed.
2599         (key_byname): Use new classify_user_id function, and new exact
2600         flag in KEYDB_SEARCH_DESC.
2601
2602         * keyring.h, keyring.c (keyring_search): Return an optional index
2603         to show which KEYDB_SEARCH_DESC was the matching one.
2604
2605         * keydb.h, keydb.c (keydb_search): Rename to keydb_search2, and
2606         pass the optional index to keyring_search.  Add a macro version of
2607         keydb_search that calls this new function.
2608
2609         * export.c (do_export_stream): If the keyid! syntax is used,
2610         export only that specified key.  If the key in question is a
2611         subkey, export the primary plus that subkey only.
2612
2613 2003-02-11  David Shaw  <dshaw@jabberwocky.com>
2614
2615         * exec.c (set_exec_path): Add debugging line.
2616
2617         * g10.c (print_hex, print_mds): Print long hash strings a lot
2618         neater.  This assumes at least an 80-character display, as there
2619         are a few other similar assumptions here and there.  Users who
2620         need unformatted hashes can still use with-colons.  Check that
2621         SHA384 and 512 are available before using them as they are no
2622         longer always available.
2623
2624         * Makefile.am: Use a local copy of libexecdir along with @PACKAGE@
2625         as GNUPG_LIBEXECDIR so it can be easily overridden at make time.
2626
2627 2003-02-04  David Shaw  <dshaw@jabberwocky.com>
2628
2629         * armor.c (parse_hash_header, armor_filter): Accept the new SHAs
2630         in the armor Hash: header.
2631
2632         * g10.c (print_hex): Print long hash strings a little neater.
2633         (print_mds): Add the new SHAs to the hash list.
2634
2635 2003-02-02  David Shaw  <dshaw@jabberwocky.com>
2636
2637         * keyedit.c (menu_revuid): Properly handle a nonselfsigned uid on
2638         a v4 key (treat as a v4 revocation).
2639
2640         * import.c (print_import_check): Do not re-utf8 convert user IDs.
2641
2642 2003-01-27  David Shaw  <dshaw@jabberwocky.com>
2643
2644         * mainproc.c (list_node): Show signature expiration date in
2645         with-colons sig records.
2646
2647         * keylist.c (list_keyblock_colon), mainproc.c (list_node): Show
2648         trust sig information in with-colons sig records.
2649
2650 2003-01-16  David Shaw  <dshaw@jabberwocky.com>
2651
2652         * g10.c (add_group): Trim whitespace after a group name so it does
2653         not matter where the user puts the = sign.
2654
2655         * options.skel: Comment out the first three lines in case someone
2656         manually copies the skel file to their homedir.
2657
2658         * sign.c (clearsign_file): Only use pgp2mode with v3 keys and
2659         MD5. This matches what we do when decoding such messages and
2660         prevents creating a message (v3+RIPEMD/160) that we can't verify.
2661
2662         * sig-check.c (signature_check2): Use G10ERR_GENERAL as the error
2663         for signature digest conflict.  BAD_SIGN implies that a signature
2664         was checked and we may try and print out a user ID for a key that
2665         doesn't exist.
2666
2667 2003-01-15  David Shaw  <dshaw@jabberwocky.com>
2668
2669         * trustdb.c (init_trustdb, get_validity): Don't use a changed
2670         trust model to indicate a dirty trustdb, and never auto-rebuild a
2671         dirty trustdb with the "always" trust model.
2672
2673         * g10.c (add_group): Last commit missed the \t ;)
2674
2675 2003-01-14  David Shaw  <dshaw@jabberwocky.com>
2676
2677         * packet.h, parse-packet.c (setup_user_id), free-packet.c
2678         (free_user_id), keydb.h, keyid.c (namehash_from_uid): New function
2679         to rmd160-hash the contents of a user ID packet and cache it in
2680         the uid object.
2681
2682         * keylist.c (list_keyblock_colon): Use namehash in field 8 of
2683         uids.  Show dates for creation (selfsig date), and expiration in
2684         fields 6 and 7.
2685
2686         * trustdb.c (get_validity, get_validity_counts, update_validity):
2687         Use new namehash function rather than hashing it locally.
2688
2689 2003-01-14  Werner Koch  <wk@gnupg.org>
2690
2691         * g10.c (add_group): Fixed group parsing to allow more than one
2692         delimiter in a row and also allow tab as delimiter.
2693
2694 2003-01-12  David Shaw  <dshaw@jabberwocky.com>
2695
2696         * tdbio.c (tdbio_set_dbname): Fix assertion failure with
2697         non-fully-qualified trustdb names.
2698
2699 2003-01-11  David Shaw  <dshaw@jabberwocky.com>
2700
2701         * trustdb.c (get_validity_info, get_ownertrust_info,
2702         trust_letter): Simplify by returning a ? for error directly.
2703
2704         * keyedit.c (show_key_with_all_names): Use get_validity_string and
2705         get_ownertrust_string to show full word versions of trust
2706         (i.e. "full" instead of 'f').
2707
2708         * trustdb.h, trustdb.c (get_ownertrust_string,
2709         get_validity_string): Same as get_ownertrust_info, and
2710         get_validity_info, except returns a full string.
2711
2712         * trustdb.c (get_ownertrust_with_min): New.  Same as
2713         'get_ownertrust' but takes the min_ownertrust value into account.
2714
2715 2003-01-10  David Shaw  <dshaw@jabberwocky.com>
2716
2717         * armor.c (armor_filter): Comment about PGP's end of line tab
2718         problem.
2719
2720         * trustdb.h, trustdb.c (trust_letter): Make
2721         static. (get_ownertrust_info, get_validity_info): Don't mask the
2722         trust level twice.
2723
2724         * trustdb.h, gpgv.c, trustdb.c (get_validity, get_validity_info),
2725         keylist.c (list_keyblock_colon), keyedit.c
2726         (show_key_with_all_names_colon, menu_revuid): Pass a user ID in
2727         rather than a namehash, so we only have to do the hashing in one
2728         place.
2729
2730         * packet.h, pkclist.c (build_pk_list), free-packet.c
2731         (release_public_key_parts): Remove unused namehash element for
2732         public keys.
2733
2734 2003-01-07  David Shaw  <dshaw@jabberwocky.com>
2735
2736         * keygen.c (keygen_set_std_prefs): Warn when setting an IDEA
2737         preference when IDEA is not available.
2738
2739 2003-01-06  David Shaw  <dshaw@jabberwocky.com>
2740
2741         * trustdb.c (get_validity_info): 'd' for disabled is not a
2742         validity value any more.
2743
2744         * packet.h, tdbio.h, tdbio.c (tdbio_read_record,
2745         tdbio_write_record), trustdb.c (update_validity): Store temporary
2746         full & marginal counts in the trustdb.
2747         (clear_validity, get_validity_counts): Return and clear temp
2748         counts.
2749         (store_validation_status): Keep track of which keyids have been
2750         stored.
2751         (validate_one_keyblock, validate_key_list): Use per-uid copies of
2752         the full & marginal counts so they can be recalled for multiple
2753         levels.
2754         (validate_keys): Only use unused keys for each new round.
2755         (reset_unconnected_keys): Rename to reset_trust_records, and only
2756         skip specifically excluded records.
2757
2758         * keylist.c (print_capabilities): Show 'D' for disabled keys in
2759         capabilities section.
2760
2761         * trustdb.c (is_disabled): Remove incorrect comment.
2762
2763 2003-01-03  David Shaw  <dshaw@jabberwocky.com>
2764
2765         * import.c (import_one): Only do the work to create the status
2766         display for interactive import if status is enabled.
2767
2768         * keyring.c (keyring_search): skipfnc didn't work properly with
2769         non-keyid searches.  Noted by Stefan Bellon.
2770
2771         * getkey.c (merge_selfsigs_main): Remove some unused code and make
2772         sure that the pk selfsigversion member accounts for 1F direct
2773         sigs.
2774
2775 2003-01-02  Werner Koch  <wk@gnupg.org>
2776
2777         * keydb.c (keydb_add_resource): Don't assume that try_make_homedir
2778         terminates but check again for the existence of the directory and
2779         continue then.
2780         * openfile.c (copy_options_file): Print a warning if the skeleton
2781         file has active options.
2782
2783 2002-12-29  David Shaw  <dshaw@jabberwocky.com>
2784
2785         * getkey.c (merge_selfsigs_main), main.h, sig-check.c
2786         (check_key_signature2): Pass the ultimately trusted pk directly to
2787         check_key_signature2 to avoid going through the key selection
2788         mechanism.  This prevents a deadly embrace when two keys without
2789         selfsigs each sign the other.
2790
2791 2002-12-27  David Shaw  <dshaw@jabberwocky.com>
2792
2793         * keyserver.c (keyserver_refresh): Don't print the "refreshing..."
2794         line if there are no keys to refresh or if there is no keyserver
2795         set.
2796
2797         * getkey.c (merge_selfsigs_main): Any valid user ID should make a
2798         key valid, not just the last one.  This also fixes Debian bug
2799         #174276.
2800
2801 2002-12-27  Stefan Bellon  <sbellon@sbellon.de>
2802
2803         * import.c (print_import_check): Changed int to size_t.
2804
2805 2002-12-27  David Shaw  <dshaw@jabberwocky.com>
2806
2807         * keyedit.c (keyedit_menu, menu_revuid): Add "revuid" feature to
2808         revoke a user ID.  This is the same as issuing a revocation for
2809         the self-signature, but a much simpler interface to do it.
2810
2811 2002-12-26  David Shaw  <dshaw@jabberwocky.com>
2812
2813         * keydb.h, getkey.c (key_byname): Flag to enable or disable
2814         including disabled keys.  Keys specified via keyid (i.e. 0x...)
2815         are always included.
2816
2817         * getkey.c (get_pubkey_byname, get_seckey_byname2,
2818         get_seckey_bynames), keyedit.c (keyedit_menu, menu_addrevoker):
2819         Include disabled keys in these functions.
2820
2821         * pkclist.c (build_pk_list): Do not include disabled keys for -r
2822         or the key prompt.  Do include disabled keys for the default key
2823         and --encrypt-to.
2824
2825         * trustdb.h, trustdb.c (is_disabled): New skipfnc for skipping
2826         disabled keys.
2827
2828         * gpgv.c (is_disabled): Stub.
2829
2830         * keygen.c (keygen_add_key_expire): Properly handle updating a key
2831         expiration to a no-expiration value.
2832
2833         * keyedit.c (enable_disable_key): Comment.
2834
2835         * import.c (import_one): When in interactive mode and --verbose,
2836         don't repeat some key information twice.
2837
2838 2002-12-22  Timo Schulz  <ts@winpt.org>
2839         
2840         * import.c (print_import_check): New.
2841         (import_one): Use it here.
2842         Use merge_keys_and_selfsig in the interactive mode to avoid
2843         wrong key information.
2844         * status.h: Add new status code.
2845         * status.c: Ditto.
2846         
2847 2002-12-13  David Shaw  <dshaw@jabberwocky.com>
2848
2849         * pkclist.c (do_we_trust): Tweak language to refer to the "named
2850         user" rather than "owner".  Noted by Stefan Bellon.
2851
2852         * trustdb.h, trustdb.c (trustdb_pending_check): New function to
2853         check if the trustdb needs a check.
2854
2855         * import.c (import_keys_internal): Used here so we don't rebuild
2856         the trustdb if it is still clean.
2857         (import_one, chk_self_sigs): Only mark trustdb dirty if the key
2858         that is being imported has any sigs other than self-sigs.
2859         Suggested by Adrian von Bidder.
2860
2861         * options.skel: Include the required '=' sign in the sample
2862         'group' option.  Noted by Stefan Bellon.
2863
2864         * import.c (chk_self_sigs): Don't try and check a subkey as if it
2865         was a signature.
2866
2867 2002-12-11  David Shaw  <dshaw@jabberwocky.com>
2868
2869         * tdbio.c (tdbio_read_record, tdbio_write_record): Compact the
2870         RECTYPE_TRUST records a bit.
2871
2872         * g10.c (main): Comment out --list-trust-path until it can be
2873         implemented.
2874
2875         * import.c (import_one): Warn when importing an Elgamal primary
2876         that this may take some time (to verify self-sigs).
2877         (chk_self_sigs): Try and cache all self-sigs so the keyblock is
2878         written to the keyring with a good rich cache.
2879
2880         * keygen.c (ask_algo): Make the Elgamal sign+encrypt warning
2881         stronger, and remove the RSA sign+encrypt warning.
2882
2883 2002-12-06  Stefan Bellon  <sbellon@sbellon.de>
2884
2885         * options.h: Fixed typo (mangle_dos_names instead of
2886         mangle_dos_filenames).
2887
2888 2002-12-05  Werner Koch  <wk@gnupg.org>
2889
2890         * g10.c: New options --[no-]mangle-dos-filenames.
2891         * options.h (opt): Added mangle-dos-filenames.
2892         * openfile.c (open_outfile) [USE_ONLY_8DOT3]: Truncate the
2893         filename only when this option is set; this is the default.
2894
2895 2002-12-04  David Shaw  <dshaw@jabberwocky.com>
2896
2897         * main.h, keyedit.c, keygen.c: Back out previous (2002-12-01)
2898         change.  Minimal isn't always best.
2899
2900         * sign.c (update_keysig_packet): Use the current time rather then
2901         a modification of the original signature time.  Make sure that
2902         this doesn't cause a time warp.
2903
2904         * keygen.c (keygen_add_key_expire): Properly handle a key
2905         expiration date in the past (use a duration of 0).
2906
2907         * keyedit.c (menu_expire): Use update_keysig_packet so any sig
2908         subpackets are maintained during the update.
2909
2910         * build-packet.c (build_sig_subpkt): Mark sig expired or unexpired
2911         when the sig expiration subpacket is added.
2912         (build_sig_subpkt_from_sig): Handle making an expiration subpacket
2913         from a sig that has already expired (use a duration of 0).
2914
2915         * packet.h, sign.c (update_keysig_packet), keyedit.c
2916         (menu_set_primary_uid, menu_set_preferences): Add ability to issue
2917         0x18 subkey binding sigs to update_keysig_packet and change all
2918         callers.
2919
2920         * trustdb.c (validate_keys): Show trust parameters when building
2921         the trustdb, and make sure that the version record update was
2922         successful.
2923         (init_trustdb): If the current parameters aren't what was used for
2924         building the trustdb, the trustdb is invalid.
2925
2926         * tbio.c (tdbio_db_matches_options): Update to work with new
2927         trustdbs.
2928
2929 2002-12-03  David Shaw  <dshaw@jabberwocky.com>
2930
2931         * tdbio.h, tdbio.c (tdbio_read_record, tdbio_write_record): Store
2932         trust model in the trustdb version record.
2933         (tdbio_update_version_record): New function to update version
2934         record values during a trustdb check or update.
2935         (tdbio_dump_record): Show trust model in dump.
2936
2937         * trustdb.c (validate_keys): Call tdbio_update_version_record on
2938         success so that the correct options are stored in the trustdb.
2939
2940         * options.h: rearrange trust models so that CLASSIC is 0 and
2941         OPENPGP is 1.
2942
2943         * options.h, g10.c (main), encode.c (write_pubkey_enc_from_list),
2944         pkclist.c (algo_available), revoke.c (gen_revoke): Add --pgp8
2945         mode.  This is basically identical to --pgp7 in all ways except
2946         that signing subkeys, v4 data sigs (including expiration), and SK
2947         comments are allowed.
2948
2949         * getkey.c (finish_lookup): Comment.
2950
2951         * main.h, keylist.c (reorder_keyblock), keyedit.c (keyedit_menu):
2952         Reorder user ID display in the --edit-key menu to match that of
2953         the --list-keys display.
2954
2955         * g10.c (add_notation_data): Fix initialization.
2956
2957 2002-12-01  David Shaw  <dshaw@jabberwocky.com>
2958
2959         * keyedit.c (menu_expire): Don't lose key flags when changing the
2960         expiration date of a subkey.  This is not the most optimal
2961         solution, but it is minimal change on the stable branch.
2962
2963         * main.h, keygen.c (do_copy_key_flags): New function to copy key
2964         flags, if any, from one sig to another.
2965         (do_add_key_expire): New function to add key expiration to a sig.
2966         (keygen_copy_flags_add_expire): New version of
2967         keygen_add_key_expire that also copies key flags.
2968         (keygen_add_key_flags_and_expire): Use do_add_key_expire.
2969
2970         * import.c (fix_hkp_corruption): Comment.
2971
2972 2002-11-25  Stefan Bellon  <sbellon@sbellon.de>
2973
2974         * plaintext.c (handle_plaintext) [__riscos__]: If nooutput is set,
2975         no filetype is needed obviously.
2976
2977 2002-11-24  David Shaw  <dshaw@jabberwocky.com>
2978
2979         * main.h, misc.c (default_cipher_algo, default_compress_algo):
2980         New.  Return the default algorithm by trying
2981         --cipher-algo/--compress-algo, then the first item in the pref
2982         list, then s2k-cipher-algo or ZIP.
2983
2984         * sign.c (sign_file, sign_symencrypt_file), encode.c
2985         (encode_simple, encode_crypt): Call default_cipher_algo and
2986         default_compress_algo to get algorithms.
2987
2988         * g10.c (main): Allow pref selection for compress algo with
2989         --openpgp.
2990
2991         * mainproc.c (proc_encrypted): Use --s2k-digest-algo for
2992         passphrase mangling rather than --digest-algo.
2993
2994         * sign.c (hash_for): If --digest-algo is not set, but
2995         --personal-digest-preferences is, then use the first hash
2996         algorithm in the personal list.  If the signing algorithm is DSA,
2997         then use the first 160-bit hash algorithm in the personal list.
2998         If --pgp2 is set and it's a v3 RSA key, use MD5.
2999
3000         * g10.c (main), keydb.c (keydb_add_resource,
3001         keydb_locate_writable): Rename --default-keyring as
3002         --primary-keyring.  Stefan wins the naming contest.
3003
3004 2002-11-23  David Shaw  <dshaw@jabberwocky.com>
3005
3006         * g10.c (add_notation_data): Disallow notation names that do not
3007         contain a '@', unless --expert is set.  This is to help prevent
3008         people from polluting the (as yet unused) IETF namespace.
3009
3010         * main.h: Comments about default algorithms.
3011
3012         * photoid.c (image_type_to_string): Comments about 3-letter file
3013         extensions.
3014
3015         * encode.c (encode_simple), passphrase.c (passphrase_to_dek),
3016         sign.c (sign_symencrypt_file): Use --s2k-digest-algo for
3017         passphrase mangling rather than --digest-algo.
3018
3019 2002-11-21  David Shaw  <dshaw@jabberwocky.com>
3020
3021         * keygen.c (keygen_set_std_prefs): Properly handle an empty
3022         preference string.
3023
3024         * misc.c (string_to_compress_algo): "none" is a bad choice since
3025         it conflicts with the "none" in setpref.
3026
3027 2002-11-14  David Shaw  <dshaw@jabberwocky.com>
3028
3029         * g10.c (main): Allow compression algorithm names as the argument
3030         to --compress-algo.  The old algorithm names still work for
3031         backwards compatibility.
3032
3033         * misc.c (string_to_compress_algo): Allow "none" as an alias for
3034         "uncompressed".
3035
3036 2002-11-13  Stefan Bellon  <sbellon@sbellon.de>
3037
3038         * getkey.c (get_pubkey_byfprint_fast): Fixed type incompatibility,
3039         was unsigned char instead of byte.
3040
3041 2002-11-13  David Shaw  <dshaw@jabberwocky.com>
3042
3043         * encode.c (encode_simple): Make sure that files larger than about
3044         4G use partial length encoding.  This is required because OpenPGP
3045         allows only for 32 bit length fields.  From Werner on stable
3046         branch.
3047
3048         * getkey.c (get_pubkey_direct): Renamed to...
3049         (get_pubkey_fast): this and made extern.
3050         (get_pubkey_byfprint_fast): New.  From Werner on stable branch.
3051
3052         * keydb.h, import.c (import_one): Use get_pubkey_fast instead of
3053         get_pubkey.  We don't need a merged key and actually this might
3054         lead to recursions.
3055         (revocation_present): Likewise for search by fingerprint.  From
3056         Werner on stable branch.
3057
3058         * g10.c (main): Try to create the trustdb even for non-colon-mode
3059         list-key operations.  This is required because getkey needs to
3060         know whether a a key is ultimately trusted.  From Werner on stable
3061         branch.
3062         
3063         * exec.c [__CYGWIN32__]: Keep cygwin separate from Mingw32;
3064         we don't need it here as it behaves more like a Posix system.
3065         From Werner on stable branch.
3066
3067         * passphrase.c (agent_get_passphrase): Ditto.  From Werner on
3068         stable branch.
3069
3070         * tdbio.c (MY_O_BINARY): Need binary mode with Cygwin.  From
3071         Werner on stable branch.
3072
3073         * g10.c, gpgv.c (main) [__CYGWIN32__]: Don't get the homedir from
3074         the registry.  From Werner on stable branch.
3075         
3076         * keyedit.c (show_key_with_all_names_colon): Make --with-colons
3077         --edit display match the validity and trust of --with-colons
3078         --list-keys.
3079
3080         * passphrase.c (agent_send_all_options): Fix compile warning.
3081
3082         * keylist.c (list_keyblock_colon): Validity for subkeys should
3083         match that of the primary key, and not that of the last user ID.
3084
3085         * getkey.c (merge_selfsigs): Revoked/expired/invalid primary keys
3086         carry these facts onto all their subkeys, but only after the
3087         subkey has a chance to be marked valid.  This is to fix an
3088         incorrect "invalid public key" error verifying a signature made by
3089         a revoked signing subkey, with a valid unrevoked primary key.
3090
3091 2002-11-09  Werner Koch  <wk@gnupg.org>
3092
3093         * passphrase.c (agent_send_all_options): Use tty_get_ttyname to
3094         get the default ttyname.
3095
3096 2002-11-07  David Shaw  <dshaw@jabberwocky.com>
3097
3098         * keyring.h, keyring.c (keyring_register_filename): Return the
3099         pointer if a given keyring is registered twice.
3100
3101         * keydb.h, keydb.c (keydb_add_resource): Use flags to indicate a
3102         default keyring.
3103         (keydb_locate_writable): Prefer the default keyring if possible.
3104
3105         * g10.c (main): Add --default-keyring option.
3106
3107 2002-11-06  David Shaw  <dshaw@jabberwocky.com>
3108
3109         * options.h, g10.c (main), trustdb.c (ask_ownertrust): Add
3110         --force-ownertrust option for debugging purposes.  This allows
3111         setting a whole keyring to a given trust during an
3112         --update-trustdb.  Not for normal use - it's just easier than
3113         hitting "4" all the time to test a large trustdb.
3114
3115         * pubkey-enc.c (get_session_key): With hidden recipients or try a
3116         given passphrase against all secret keys rather than trying all
3117         secret keys in turn.  Don't if --try-all-secrets or --status-fd is
3118         enabled.
3119
3120         * passphrase.c (passphrase_to_dek): Mode 1 means do a regular
3121         passphrase query, but don't prompt with the key info.
3122
3123         * seckey-cert.c (do_check, check_secret_key): A negative ask count
3124         means to enable passphrase mode 1.
3125
3126         * keydb.h, getkey.c (enum_secret_keys): Add flag to include
3127         secret-parts-missing keys (or not) in the list.
3128
3129 2002-11-05  David Shaw  <dshaw@jabberwocky.com>
3130
3131         * keyserver.c (keyserver_search_prompt): When --with-colons is
3132         enabled, don't try and fit the search output to the screen size -
3133         just dump the whole list.
3134
3135 2002-11-04  David Shaw  <dshaw@jabberwocky.com>
3136
3137         * keyserver.c (keyserver_search_prompt): When --with-colons is
3138         enabled, just dump the raw keyserver protocol to stdout and don't
3139         print the menu.
3140
3141         * keyserver.c (show_prompt): Don't show a prompt when command-fd
3142         is being used.
3143
3144         * trustdb.c (trust_model_string, check_trustdb, update_trustdb,
3145         validate_one_keyblock): It's not clear what a trustdb rebuild or
3146         check means with a trust model other than "classic" or "openpgp",
3147         so disallow this.
3148
3149 2002-11-03  David Shaw  <dshaw@jabberwocky.com>
3150
3151         * options.h, g10.c (main): Add --trust-model option.  Current
3152         models are "openpgp" which is classic+trustsigs, "classic" which
3153         is classic only, and "always" which is the same as the current
3154         option --always-trust (which still works).  Default is "openpgp".
3155
3156         * trustdb.c (validate_one_keyblock): Use "openpgp" trust model to
3157         enable trust sigs.
3158
3159         * gpgv.c (main), mainproc.c (check_sig_and_print), pkclist.c
3160         (do_we_trust, do_we_trust_pre, check_signatures_trust): Use new
3161         --trust-model option in place of --always-trust.
3162
3163         * keyedit.c (sign_mk_attrib, trustsig_prompt, sign_uids,
3164         keyedit_menu): Prompt for and create a trust signature with
3165         "tsign".  This is functional, but needs better UI text.
3166
3167         * build-packet.c (build_sig_subpkt): Able to build trust and
3168         regexp subpackets.
3169
3170         * pkclist.c (do_edit_ownertrust): Comment.
3171
3172 2002-11-02  David Shaw  <dshaw@jabberwocky.com>
3173
3174         * keygen.c (set_one_pref, keygen_set_std_prefs): Allow using the
3175         full algorithm name (CAST5, SHA1) rather than the short form (S3,
3176         H2).
3177
3178         * main.h, keygen.c (keygen_get_std_prefs), keyedit.c
3179         (keyedit_menu): Return and use a fake uid packet rather than a
3180         string since we already have a nice parser/printer in
3181         keyedit.c:show_prefs.
3182
3183         * main.h, misc.c (string_to_compress_algo): New.
3184
3185 2002-11-01  David Shaw  <dshaw@jabberwocky.com>
3186
3187         * g10.c (main): Add --no-throw-keyid.
3188
3189         * keydb.h, encode.c (write_pubkey_enc_from_list), g10.c (main),
3190         pkclist.c (build_pk_list): Add --hidden-recipient (-R) and
3191         --hidden-encrypt-to, which do a single-user variation on
3192         --throw-keyid.  The "hide this key" flag is carried in bit 0 of
3193         the pk_list flags field.
3194
3195         * keyserver.c (parse_keyrec): Fix shadowing warning.
3196
3197 2002-10-31  Stefan Bellon  <sbellon@sbellon.de>
3198
3199         * compress.c (init_compress) [__riscos__]: Use
3200         riscos_load_module() to load ZLib module.
3201
3202         * g10.c (main) [__riscos__]: Renames due to changes in riscos.c
3203         (e.g. prefixes all RISC OS specific functions with riscos_*).
3204         * photoid.c (show_photos) [__riscos__]: Likewise.
3205         * signal.c (got_fatal_signal) [__riscos__]: Likewise.
3206
3207         * trustdb.c (check_regexp) [__riscos__]: Branch to RISC OS RegEx
3208         handling.
3209
3210 2002-10-31  David Shaw  <dshaw@jabberwocky.com>
3211
3212         * build-packet.c (do_plaintext), encode.c (encode_sesskey,
3213         encode_simple, encode_crypt), sign.c (write_plaintext_packet): Use
3214         wipememory() instead of memset() to wipe sensitive memory as the
3215         memset() might be optimized away.
3216
3217 2002-10-30  David Shaw  <dshaw@jabberwocky.com>
3218
3219         * trustdb.c (check_regexp): Modern regexps require REG_EXTENDED.
3220
3221 2002-10-29  David Shaw  <dshaw@jabberwocky.com>
3222
3223         * packet.h, trustdb.h, trustdb.c (trust_string): New.  Return a
3224         string like "fully trusted", "marginally trusted", etc.
3225         (get_min_ownertrust): New.  Return minimum ownertrust.
3226         (update_min_ownertrust): New.  Set minimum ownertrust.
3227         (check_regexp): New.  Check a regular epression against a user ID.
3228         (ask_ownertrust): Allow specifying a minimum value.
3229         (get_ownertrust_info): Follow the minimum ownertrust when
3230         returning a letter.
3231         (clear_validity): Remove minimum ownertrust when a key becomes
3232         invalid.
3233         (release_key_items): Release regexp along with the rest of the
3234         info.
3235         (validate_one_keyblock, validate_keys): Build a trust sig chain
3236         while validating.  Call check_regexp for regexps.  Use the minimum
3237         ownertrust if the user does not specify a genuine ownertrust.
3238
3239         * pkclist.c (do_edit_ownertrust): Only allow user to select a
3240         trust level greater than the minimum value.
3241
3242         * parse-packet.c (can_handle_critical): Can handle critical trust
3243         and regexp subpackets.
3244
3245         * trustdb.h, trustdb.c (clear_ownertrusts), delkey.c
3246         (do_delete_key), import.c (import_one): Rename clear_ownertrust to
3247         clear_ownertrusts and have it clear the min_ownertrust value as
3248         well.
3249
3250         * keylist.c (list_keyblock_print): Indent uid to match pub and
3251         sig.
3252
3253         * keyedit.c (print_and_check_one_sig, show_key_and_fingerprint,
3254         menu_addrevoker), keylist.c (list_keyblock_print,
3255         print_fingerprint): Show "T" or the trust depth for trust
3256         signatures, and add spaces to some strings to make room for it.
3257
3258         * packet.h, parse-packet.c (dump_sig_subpkt, parse_one_sig_subpkt,
3259         parse_signature): Parse trust signature values.
3260
3261         * tdbio.h, tdbio.c (tdbio_read_record, tdbio_write_record):
3262         Reserve a byte for the minimum ownertrust value (for use with
3263         trust signatures).
3264
3265 2002-10-29  Stefan Bellon  <sbellon@sbellon.de>
3266
3267         * build-packet.c (calc_plaintext, do_plaintext): Removed RISC OS
3268         specific filetype parts (it's now done in make_basename()).
3269
3270         * plaintext.c (handle_plaintext): Tidied up RISC OS specific
3271         filetype parts.
3272
3273         * encode.c (encode_simple, encode_crypt): Added argument to
3274         make_basename() call.
3275
3276         * sign.c (write_plaintext_packet): Added argument to
3277         make_basename() call.
3278
3279 2002-10-28  Stefan Bellon  <sbellon@sbellon.de>
3280
3281         * build-packet.c (calc_plaintext, do_plaintext): Added filetype
3282         handling for RISC OS' file types.
3283
3284         * plaintext.c (handle_plaintext) [__riscos__]: Added filetype
3285         handling for RISC OS' file types.
3286
3287 2002-10-23  David Shaw  <dshaw@jabberwocky.com>
3288
3289         * main.h, import.c (sec_to_pub_keyblock, import_secret_one,
3290         parse_import_options), g10.c (main): New import-option
3291         "convert-sk-to-pk" to convert a secret key into a public key
3292         during import.  It is on by default.
3293
3294 2002-10-23  Werner Koch  <wk@gnupg.org>
3295
3296         * pubkey-enc.c (get_it): Fix segv, test for revoked only when PK
3297         has been assigned.
3298
3299 2002-10-18  Timo Schulz  <ts@winpt.org>
3300
3301         * keylist.c: (print_pubkey_info): New.
3302         (print_seckey_info): New.
3303         * main.h: Prototypes for the new functions.       
3304         * delkey.c (do_delete_key): Use it here.
3305         * revoke.c (gen_desig_revoke): Ditto.
3306         
3307 2002-10-17  Werner Koch  <wk@gnupg.org>
3308
3309         * pkclist.c (do_edit_ownertrust): Show all user IDs.  This should
3310         be enhanced to also show the current trust level.  Suggested by
3311         Florian Weimer.
3312
3313 2002-10-17  David Shaw  <dshaw@jabberwocky.com>
3314
3315         * g10.c (main): Handle --strict and --no-strict from the command
3316         line before the options file is loaded.
3317
3318 2002-10-15  David Shaw  <dshaw@jabberwocky.com>
3319
3320         * g10.c (main): Disable --textmode when encrypting (symmetric or
3321         pk) in --pgp2 mode as PGP 2 can't handle the unknown length
3322         literal packet.  Reported by Michael Richardson.
3323
3324 2002-10-14  David Shaw  <dshaw@jabberwocky.com>
3325
3326         * keyserver-internal.h, keyserver.c (print_keyrec, parse_keyrec,
3327         show_prompt, keyserver_search_prompt, keyserver_spawn): Go to
3328         version 1 of the keyserver protocol.  This is a better design,
3329         similar to --with-colons, that allows for keys with multiple user
3330         IDs rather than using multiple keys.  It also matches the machine
3331         readable pksd format.  Also use a prettier --search-keys listing
3332         format that can fill different size windows (currently set at 24
3333         lines).
3334
3335 2002-10-12  Werner Koch  <wk@gnupg.org>
3336
3337         * keygen.c (print_status_key_created): New.
3338         (do_generate_keypair): Use it to print the fingerprint.
3339         (generate_subkeypair): Likewise.
3340
3341 2002-10-11  David Shaw  <dshaw@jabberwocky.com>
3342
3343         * keyedit.c (menu_addrevoker): Properly back out if the signature
3344         fails.  Also, do not allow appointing the same revoker twice, and
3345         report ALREADY_SIGNED if the user tries it.
3346
3347 2002-10-07  David Shaw  <dshaw@jabberwocky.com>
3348
3349         * import.c (import_keys_internal): Missed one s/inp/inp2/.
3350
3351         * keylist.c (print_capabilities): Properly indicate per-key
3352         capabilities of sign&encrypt primary keys that have
3353         secret-parts-missing (i.e. no capabilities at all)
3354
3355         * mainproc.c (symkey_decrypt_sesskey): Fix compiler warning.
3356
3357 2002-10-04  David Shaw  <dshaw@jabberwocky.com>
3358
3359         * getkey.c (get_pubkey_direct): Don't cache keys retrieved via
3360         this function as they may not have all their fields filled in.
3361
3362         * sig-check.c (signature_check2): Use new is_primary flag to check
3363         rather than comparing main_keyid with keyid as this still works in
3364         the case of a not fully filled in pk.
3365
3366 2002-10-04  Werner Koch  <wk@gnupg.org>
3367
3368         * import.c (import_keys_internal): s/inp/inp2/ to avoid shadowing
3369         warning.
3370
3371         * passphrase.c (agent_get_passphrase): Fixed signed/unsigned char
3372         problem in %-escaping.  Noted by Ingo Klöcker.
3373
3374 2002-10-03  David Shaw  <dshaw@jabberwocky.com>
3375
3376         * options.h, g10.c (main): Add --strict and --no-strict to switch
3377         the log_warning severity level from info to error.
3378
3379         * keylist.c (print_capabilities): Secret-parts-missing keys should
3380         show that fact in the capabilities, and only primary signing keys
3381         can certify other keys.
3382
3383         * packet.h, parse_packet.c (parse_key): Add is_primary flag for
3384         public keys (it already exists for secret keys).
3385
3386 2002-10-02  David Shaw  <dshaw@jabberwocky.com>
3387
3388         * import.c (import_secret_one): Check for an illegal (>110)
3389         protection cipher when importing a secret key.
3390
3391         * keylist.c (list_keyblock_print): Show a '#' for a
3392         secret-parts-missing key.
3393
3394         * parse_packet.c (parse_key): Some comments.
3395
3396         * revoke.c (gen_revoke): Remove some debugging code.
3397
3398         * trustdb.c (verify_own_keys): Make trusted-key a non-deprecated
3399         option again.
3400
3401         * seckey-cert.c (do_check): Don't give the IDEA warning unless the
3402         cipher in question is in fact IDEA.
3403
3404 2002-10-01  David Shaw  <dshaw@jabberwocky.com>
3405
3406         * import.c (import_one): Make sure that a newly imported key
3407         starts with a clean ownertrust.
3408
3409 2002-10-01  Werner Koch  <wk@gnupg.org>
3410
3411         * getkey.c (get_pubkey_direct): New.
3412         (merge_selfsigs_main): Use it here to look for an ultimately
3413         trusted key.  Using the full get_pubkey might lead to an
3414         infinitive recursion.
3415
3416 2002-09-29  David Shaw  <dshaw@jabberwocky.com>
3417
3418         * keyserver.c (parse_keyserver_uri): Force the keyserver URI
3419         scheme to lowercase to be case-insensitive.
3420
3421 2002-09-28  David Shaw  <dshaw@jabberwocky.com>
3422
3423         * export.c (do_export_stream): Comment.
3424
3425         * sig-check.c (check_key_signature2): Properly handle a
3426         non-designated revocation import.
3427
3428 2002-09-26  Werner Koch  <wk@gnupg.org>
3429
3430         * g10.c (set_homedir): New. Changed all direct assignments to use
3431         this.
3432         * gpgv.c (set_homedir): Ditto.
3433
3434 2002-09-25  David Shaw  <dshaw@jabberwocky.com>
3435
3436         * Makefile.am: Link gpg with EGDLIBS (i.e. NETLIBS) as EGD uses
3437         sockets.  Remove the old NETLIBS variable since the keyserver
3438         stuff is no longer internal.
3439
3440 2002-09-24  David Shaw  <dshaw@jabberwocky.com>
3441
3442         * import.c (import_keys_stream): Fix compiler type warning.
3443
3444         * keyring.c (keyring_rebuild_cache), sig-check.c
3445         (check_key_signature2), import.c (import, chk_self_sigs): Minor