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