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