Added common certificates.
[gnupg.git] / sm / ChangeLog
1 2006-09-18  Werner Koch  <wk@g10code.com>
2
3         * gpgsm.c (main): Use this to import standard certificates.
4         * keydb.c (keydb_add_resource): New arg AUTO_CREATED.
5
6 2006-09-14  Werner Koch  <wk@g10code.com>
7
8         Replaced all call gpg_error_from_errno(errno) by
9         gpg_error_from_syserror().
10
11 2006-09-13  Werner Koch  <wk@g10code.com>
12
13         * keylist.c (list_internal_keys): Print marker line to FP and not
14         to stdout.
15
16         * gpgsm.c (main): All list key list commands now make ose of
17         --output. Cleaned up calls to list modes.  New command
18         --dump-chain.  Renamed --list-sigs to --list-chain and added an
19         alias for the old one.
20
21         * server.c (cmd_message): Changed to use assuan_command_parse_fd.
22         (option_handler): New option list-to-output.
23         (do_listkeys): Use it.
24
25 2006-09-06  Werner Koch  <wk@g10code.com>
26
27         * gpgsm.h (OUT_OF_CORE): Removed and changed all callers to
28         out_of_core.
29         (CTRL): Removed and changed everywhere to ctrl_t.
30         (CERTLIST): Ditto.
31
32         Replaced all Assuan error codes by libgpg-error codes.  Removed
33         all map_to_assuan_status and map_assuan_err.
34         
35         * gpgsm.c (main): Call assuan_set_assuan_err_source to have Assuan
36         switch to gpg-error codes.  
37         * server.c (set_error): Adjusted.
38
39 2006-08-29  Werner Koch  <wk@g10code.com>
40
41         * call-agent.c (gpgsm_agent_pkdecrypt): Allow decryption using
42         complete S-expressions as implemented by the current gpg-agent.
43
44         * gpgsm.c (main): Implement --output for encrypt, decrypt, sign
45         and export.
46
47 2006-07-03  Werner Koch  <wk@g10code.com>
48
49         * certreqgen.c (proc_parameters): Print the component label of a
50         faulty DN.
51
52 2006-06-26  Werner Koch  <wk@g10code.com>
53
54         * certdump.c (gpgsm_cert_log_name): New.
55         * certchain.c (is_cert_still_valid): Log the name of the certificate.
56
57 2006-06-20  Werner Koch  <wk@g10code.com>
58
59         * gpgsm.c (gpgsm_init_default_ctrl): Take care of the command line
60         option --include-certs.
61
62         * keylist.c (list_cert_raw): Print the certid.
63
64 2006-05-23  Werner Koch  <wk@g10code.com>
65
66         * keydb.c (hextobyte): Deleted as it is now defined in jnlib.
67
68         * Makefile.am (gpgsm_LDADD): Include ZLIBS.
69
70 2006-05-19  Marcus Brinkmann  <marcus@g10code.de>
71
72         * keydb.c (keydb_insert_cert): Do not lock here, but only check if
73         it is locked.
74         (keydb_store_cert): Lock here.
75
76         * keydb.h (keydb_delete): Accept new argument UNLOCK.
77         * keydb.c (keydb_delete): Likewise.  Only unlock if this is set.
78         * delete.c (delete_one): Add new argument to invocation of
79         keydb_delete.
80         
81 2006-05-15  Werner Koch  <wk@g10code.com>
82
83         * keylist.c (print_names_raw): Sanitize URI.
84
85 2006-03-21  Werner Koch  <wk@g10code.com>
86
87         * certchain.c (get_regtp_ca_info): New.
88         (allowed_ca): Use it.
89
90 2006-03-20  Werner Koch  <wk@g10code.com>
91
92         * qualified.c (gpgsm_is_in_qualified_list): New optional arg COUNTRY.
93
94 2006-02-17  Werner Koch  <wk@g10code.com>
95
96         * call-dirmngr.c (start_dirmngr): Print name of dirmngr to be started.
97
98 2005-11-23  Werner Koch  <wk@g10code.com>
99
100         * gpgsm.h: New member QUALSIG_APPROVAL.
101         * sign.c (gpgsm_sign): Print a warning if a certificate is not
102         qualified.
103         * qualified.c (gpgsm_qualified_consent): Include a note that this
104         is not approved software.
105         (gpgsm_not_qualified_warning): New.
106         * gpgsm.c (main): Prepared to print a note whether the software
107         has been approved.
108
109 2005-11-13  Werner Koch  <wk@g10code.com>
110
111         * call-agent.c (gpgsm_agent_get_confirmation): New.
112
113         * keylist.c (list_cert_std): Print qualified status.
114         * qualified.c: New.
115         * certchain.c (gpgsm_validate_chain): Check for qualified
116         certificates.
117
118         * certchain.c (gpgsm_basic_cert_check): Release keydb handle when
119         no-chain-validation is used.
120
121 2005-11-11  Werner Koch  <wk@g10code.com>
122
123         * keylist.c (print_capabilities): Print is_qualified status.
124
125 2005-10-28  Werner Koch  <wk@g10code.com>
126
127         * certdump.c (pretty_print_sexp): New.
128         (gpgsm_print_name2): Use it here.  This allows proper printing of
129         DNS names as used with server certificates.
130
131 2005-10-10  Werner Koch  <wk@g10code.com>
132
133         * keylist.c: Add pkaAdress OID as reference.
134
135 2005-10-08  Marcus Brinkmann  <marcus@g10code.de>
136
137         * Makefile.am (gpgsm_LDADD): Add ../gl/libgnu.a after
138         ../common/libcommon.a.
139
140 2005-09-13  Werner Koch  <wk@g10code.com>
141
142         * verify.c (gpgsm_verify): Print a note if the unknown algorithm
143         is MD2.
144         * sign.c (gpgsm_sign): Ditto.
145         * certcheck.c (gpgsm_check_cert_sig): Ditto.
146
147 2005-09-08  Werner Koch  <wk@g10code.com>
148
149         * export.c (popen_protect_tool): Add option --have-cert.  We
150         probably lost this option with 1.9.14 due to restructuring of
151         export.c.
152
153 2005-07-21  Werner Koch  <wk@g10code.com>
154
155         * gpgsm.c (main): New options --no-log-file and --debug-none.
156
157         * certreqgen.c (get_parameter, get_parameter_value): Add SEQ arg
158         to allow enumeration.  Changed all callers.
159         (create_request): Process DNS and URI parameters.
160
161 2005-07-20  Werner Koch  <wk@g10code.com>
162
163         * keylist.c (email_kludge): Reworked.
164
165         * certdump.c (gpgsm_print_serial, gpgsm_dump_serial): Cast printf
166         arg to unsigned.
167         * call-dirmngr.c (gpgsm_dirmngr_run_command): Ditto
168
169 2005-07-19  Werner Koch  <wk@g10code.com>
170
171         * fingerprint.c (gpgsm_get_certid): Cast printf arg to unsigned.
172         Bug accidently introduced while solving the #$%^& gcc
173         signed/unsigned char* warnings.
174
175 2005-06-15  Werner Koch  <wk@g10code.com>
176
177         * delete.c (delete_one): Changed FPR to unsigned.
178         * encrypt.c (encrypt_dek): Made ENCVAL unsigned.
179         (gpgsm_encrypt): Ditto.
180         * sign.c (gpgsm_sign): Made SIGVAL unsigned.
181         * base64.c (base64_reader_cb): Need to use some casting to get
182         around signed/unsigned char* warnings.
183         * certcheck.c (gpgsm_check_cms_signature): Ditto.
184         (gpgsm_create_cms_signature): Changed arg R_SIGVAL to unsigned char*.
185         (do_encode_md): Made NFRAME a size_t.
186         * certdump.c (gpgsm_print_serial): Fixed signed/unsigned warning.
187         (gpgsm_dump_serial): Ditto.
188         (gpgsm_format_serial): Ditto.
189         (gpgsm_dump_string): Ditto.
190         (gpgsm_dump_cert): Ditto.
191         (parse_dn_part): Ditto.
192         (gpgsm_print_name2): Ditto.
193         * keylist.c (email_kludge): Ditto.
194         * certreqgen.c (proc_parameters, create_request): Ditto.
195         (create_request): Ditto.
196         * call-agent.c (gpgsm_agent_pksign): Made arg R_BUF unsigned.
197         (struct cipher_parm_s): Made CIPHERTEXT unsigned.
198         (struct genkey_parm_s): Ditto.
199         * server.c (strcpy_escaped_plus): Made arg S signed char*.
200         * fingerprint.c (gpgsm_get_fingerprint): Made ARRAY unsigned.
201         (gpgsm_get_keygrip): Ditto.
202         * keydb.c (keydb_insert_cert): Made DIGEST unsigned.
203         (keydb_update_cert): Ditto.
204         (classify_user_id): Apply cast to signed/unsigned assignment.
205         (hextobyte): Ditto.
206
207 2005-06-01  Werner Koch  <wk@g10code.com>
208
209         * misc.c: Include setenv.h.
210
211 2005-04-21  Werner Koch  <wk@g10code.com>
212
213         * gpgsm.c: New options --{enable,disable}-trusted-cert-crl-check.
214         * certchain.c (gpgsm_validate_chain): Make use of it.
215
216         * certchain.c (gpgsm_validate_chain): Check revocations even for
217         expired certificates.  This is required because on signature
218         verification an expired key is fine whereas a revoked one is not.
219
220 2005-04-20  Werner Koch  <wk@g10code.com>
221
222         * Makefile.am (AM_CFLAGS): Add PTH_CFLAGS as noted by several folks.
223
224 2005-04-19  Werner Koch  <wk@g10code.com>
225
226         * certchain.c (check_cert_policy): Print the diagnostic for a open
227         failure of policies.txt only in verbose mode or when it is not
228         ENOENT.
229
230 2005-04-17  Werner Koch  <wk@g10code.com>
231
232         * call-dirmngr.c (inq_certificate): Add new inquire SENDCERT_SKI.
233         * certlist.c (gpgsm_find_cert): Add new arg KEYID and implement
234         this filter.  Changed all callers.
235
236         * certchain.c (find_up_search_by_keyid): New helper.
237         (find_up): Also try using the AKI.keyIdentifier.
238         (find_up_external): Ditto.
239
240 2005-04-15  Werner Koch  <wk@g10code.com>
241
242         * keylist.c (list_cert_raw): Print the subjectKeyIdentifier as
243         well as the keyIdentifier part of the authorityKeyIdentifier.
244
245 2005-03-31  Werner Koch  <wk@g10code.com>
246
247         * call-dirmngr.c (start_dirmngr): Use PATHSEP_C instead of ':'.
248         * call-agent.c (start_agent): Ditto.
249
250 2005-03-17  Werner Koch  <wk@g10code.com>
251
252         * certcheck.c: Fixed use of DBG_CRYPTO and DBG_X509.
253
254         * certchain.c (gpgsm_basic_cert_check): Dump certificates after a
255         failed gcry_pk_verify.
256         (find_up): Do an external lookup also for an authorityKeyIdentifier
257         lookup. Factored external lookup code out to ..
258         (find_up_external): .. new.
259
260 2005-03-03  Werner Koch  <wk@g10code.com>
261
262         * Makefile.am (gpgsm_LDADD): Added PTH_LIBS.  Noted by Kazu Yamamoto.
263
264 2005-01-13  Werner Koch  <wk@g10code.com>
265
266         * certreqgen.c (proc_parameters): Cast printf arg.
267
268 2004-12-22  Werner Koch  <wk@g10code.com>
269
270         * gpgsm.c (set_binary): New.
271         (main, open_read, open_fwrite): Use it.
272
273 2004-12-21  Werner Koch  <wk@g10code.com>
274
275         * gpgsm.c (main): Use default_homedir().
276         (main) [W32]: Default to disabled CRL checks.
277
278 2004-12-20  Werner Koch  <wk@g10code.com>
279
280         * call-agent.c (start_agent): Before starting a pipe server start
281         to connect to a server on the standard socket.  Use PATHSEP
282         * call-dirmngr.c (start_dirmngr): Use PATHSEP.
283
284         * import.c: Include unistd.h for dup and close.
285
286 2004-12-18  Werner Koch  <wk@g10code.com>
287
288         * gpgsm.h (map_assuan_err): Define in terms of
289         map_assuan_err_with_source.
290         * call-agent.c (start_agent): Pass error source to
291         send_pinentry_environment.
292
293 2004-12-17  Werner Koch  <wk@g10code.com>
294
295         * call-dirmngr.c (isvalid_status_cb, lookup_status_cb)
296         (run_command_status_cb): Return cancel status if gpgsm_status
297         returned an error.
298
299         * server.c (gpgsm_status, gpgsm_status2) 
300         (gpgsm_status_with_err_code): Return an error code.
301         (gpgsm_status2): Always call va_end().
302
303 2004-12-15  Werner Koch  <wk@g10code.com>
304
305         * call-dirmngr.c (lookup_status_cb): Send progress messages
306         upstream.
307         (isvalid_status_cb): Ditto.
308         (gpgsm_dirmngr_isvalid): Put CTRL into status CB parameters.
309         (gpgsm_dirmngr_run_command, run_command_status_cb): Pass CTRL to
310         status callback and handle PROGRESS.
311
312         * misc.c (setup_pinentry_env) [W32]: Don't use it.
313
314         * gpgsm.c (main) [W32]: Init Pth because we need it for the socket
315         operations and to resolve libassuan symbols.
316         (run_protect_tool) [W32]: Disable it.
317
318         * Makefile.am (gpgsm_LDADD): Move LIBASSUAN_LIBS more to the end.
319
320 2004-12-07  Werner Koch  <wk@g10code.com>
321
322         * Makefile.am (gpgsm_LDADD): Put libassuan before jnlib because
323         under W32 we need the w32 pth code from jnlib.
324
325         * misc.c (setup_pinentry_env) [W32]: Disabled.
326
327 2004-12-06  Werner Koch  <wk@g10code.com>
328
329         * gpgsm.c (run_protect_tool) [_WIN32]: Disabled.
330
331         * import.c (popen_protect_tool): Simplified by making use of
332         gnupg_spawn_process.
333         (parse_p12): Likewise, using gnupg_wait_process.
334         * export.c (popen_protect_tool): Ditto.
335         (export_p12): Ditto.
336
337         * keydb.c: Don't define DIRSEP_S here.
338
339 2004-12-02  Werner Koch  <wk@g10code.com>
340
341         * certchain.c (gpgsm_basic_cert_check): Dump certs with bad
342         signature for debugging.
343         (gpgsm_validate_chain): Ditto.
344
345 2004-11-29  Werner Koch  <wk@g10code.com>
346
347         * gpgsm.c (set_debug): Changed to use a globals DEBUG_LEVEL and
348         DEBUG_VALUE.
349         (main): Made DEBUG_LEVEL global and introduced DEBUG_VALUE.  This
350         now allows to add debug flags on top of a debug-level setting.
351
352 2004-11-23  Werner Koch  <wk@g10code.com>
353
354         * gpgsm.c: New option --prefer-system-dirmngr.
355         * call-dirmngr.c (start_dirmngr): Implement this option.
356
357 2004-10-22  Werner Koch  <wk@g10code.com>
358
359         * certreqgen.c (gpgsm_genkey): Remove the NEW from the certificate
360         request PEM header.  This is according to the Sphinx standard.
361
362 2004-10-08  Moritz Schulte  <moritz@g10code.com>
363
364         * certchain.c (gpgsm_validate_chain): Do not use keydb_new() in
365         case the no_chain_validation-return-short-cut is used (fixes
366         memory leak).
367
368 2004-10-04  Werner Koch  <wk@g10code.com>
369
370         * misc.c (setup_pinentry_env): Try hard to set a default for GPG_TTY.
371
372 2004-09-30  Werner Koch  <wk@g10code.com>
373
374         * gpgsm.c (i18n_init): Always use LC_ALL.
375
376         * certdump.c (gpgsm_format_name): Factored code out to ..
377         (gpgsm_format_name2): .. new.
378         (gpgsm_print_name): Factored code out to ..
379         (gpgsm_print_name2): .. new.
380         (print_dn_part): New arg TRANSLATE.  Changed all callers.
381         (print_dn_parts): Ditto.
382         (gpgsm_format_keydesc): Do not translate the SUBJECT; we require
383         it to stay UTF-8 but we still want to filter out bad control
384         characters.
385
386         * Makefile.am: Adjusted for gettext 0.14.
387
388         * keylist.c (list_cert_colon): Make sure that the expired flag has
389         a higher precedence than the invalid flag. 
390
391 2004-09-29  Werner Koch  <wk@g10code.com>
392
393         * import.c (parse_p12): Write an error status line for bad
394         passphrases. Add new arg CTRL and changed caller.
395         * export.c (export_p12): Likewise.
396
397 2004-09-14  Werner Koch  <wk@g10code.com>
398
399         * certchain.c (gpgsm_validate_chain): Give expired certificates a
400         higher error precedence and don't bother to check any CRL in that
401         case.
402
403 2004-08-24  Werner Koch  <wk@g10code.de>
404
405         * certlist.c: Fixed typo in ocsp OID.
406
407 2004-08-18  Werner Koch  <wk@g10code.de>
408
409         * certlist.c (gpgsm_cert_use_ocsp_p): New.
410         (cert_usage_p): Support it here.
411         * call-dirmngr.c (gpgsm_dirmngr_isvalid): Use it here.
412
413 2004-08-17  Marcus Brinkmann  <marcus@g10code.de>
414
415         * import.c: Fix typo in last change.
416
417 2004-08-17  Werner Koch  <wk@g10code.de>
418
419         * import.c (check_and_store): Do a full validation if
420         --with-validation is set.
421
422         * certchain.c (gpgsm_basic_cert_check): Print more detailed error
423         messages.
424         
425         * certcheck.c (do_encode_md): Partly support DSA.  Add new arg
426         PKALGO. Changed all callers to pass it.
427         (pk_algo_from_sexp): New.
428
429 2004-08-16  Werner Koch  <wk@g10code.de>
430
431         * gpgsm.c: New option --fixed-passphrase.
432         * import.c (popen_protect_tool): Pass it to the protect-tool.
433
434         * server.c (cmd_encrypt): Use DEFAULT_RECPLIST and not recplist
435         for encrypt-to keys.
436
437 2004-08-06  Werner Koch  <wk@g10code.com>
438
439         * gpgsm.c: New option --with-ephemeral-keys.
440         * keylist.c (list_internal_keys): Set it here.
441         (list_cert_raw): And indicate those keys.  Changed all our callers
442         to pass the new arg HD through.
443
444 2004-07-23  Werner Koch  <wk@g10code.de>
445
446         * certreqgen.c (proc_parameters): Do not allow key length below
447         1024.
448
449 2004-07-22  Werner Koch  <wk@g10code.de>
450
451         * keylist.c (list_cert_raw): Print the keygrip.
452
453 2004-07-20  Werner Koch  <wk@gnupg.org>
454
455         * certchain.c (gpgsm_validate_chain): The trust check didn't
456         worked anymore, probably due to the changes at 2003-03-04.  Fixed.
457
458 2004-06-06  Werner Koch  <wk@gnupg.org>
459
460         * certreqgen.c (get_parameter_uint, create_request): Create
461         an extension for key usage when requested. 
462
463 2004-05-12  Werner Koch  <wk@gnupg.org>
464
465         * gpgsm.c (main): Install emergency_cleanup also as an atexit
466         handler.
467
468         * verify.c (gpgsm_verify): Removed the separate error code
469         handling for KSBA.  We use shared error codes anyway.
470
471         * export.c (export_p12): Removed debugging code.
472
473         * encrypt.c (gpgsm_encrypt): Put the session key in to secure memory.
474
475 2004-05-11  Werner Koch  <wk@gnupg.org>
476
477         * sign.c (gpgsm_sign): Include the error source in the final error
478         message.
479         * decrypt.c (gpgsm_decrypt): Ditto.
480
481         * fingerprint.c (gpgsm_get_key_algo_info): New.
482         * sign.c (gpgsm_sign): Don't assume RSA in the status line.
483         * keylist.c (list_cert_colon): Really print the algorithm and key
484         length.
485         (list_cert_raw, list_cert_std): Ditto.
486         (list_cert_colon): Reorganized to be able to tell whether a root
487         certificate is trusted.
488
489         * gpgsm.c: New option --debug-allow-core-dump.
490
491         * gpgsm.h (opt): Add member CONFIG_FILENAME.
492         * gpgsm.c (main): Use it here instead of the local var.
493
494         * server.c (gpgsm_server): Print some additional information with
495         the hello in verbose mode.
496
497 2004-04-30  Werner Koch  <wk@gnupg.org>
498
499         * import.c (check_and_store): Do not update the stats for hidden
500         imports of issuer certs.
501         (popen_protect_tool): Request statusmessages from the protect-tool.
502         (parse_p12): Detect status messages. Add new arg STATS and update them.
503         (print_imported_summary): Include secret key stats.
504
505 2004-04-28  Werner Koch  <wk@gnupg.org>
506
507         * gpgsm.c: New command --keydb-clear-some-cert-flags.
508         * keydb.c (keydb_clear_some_cert_flags): New.
509         (keydb_update_keyblock, keydb_set_flags): Change error code
510         CONFLICT to NOT_LOCKED.
511
512 2004-04-26  Werner Koch  <wk@gnupg.org>
513
514         * gpgsm.c (main) <gpgconf>: Do not use /dev/null as default config
515         filename.
516
517         * call-agent.c (gpgsm_agent_pksign, gpgsm_agent_pkdecrypt) 
518         (gpgsm_agent_genkey, gpgsm_agent_istrusted) 
519         (gpgsm_agent_marktrusted, gpgsm_agent_havekey) 
520         (gpgsm_agent_passwd): Add new arg CTRL and changed all callers.
521         (start_agent): New arg CTRL.  Send progress item when starting a
522         new agent.
523         * sign.c (gpgsm_get_default_cert, get_default_signer): New arg
524         CTRL to be passed down to the agent function.
525         * decrypt.c (prepare_decryption): Ditto.
526         * certreqgen.c (proc_parameters, read_parameters): Ditto.
527         * certcheck.c (gpgsm_create_cms_signature): Ditto.
528
529 2004-04-23  Werner Koch  <wk@gnupg.org>
530
531         * keydb.c (keydb_add_resource): Try to compress the file on init.
532
533         * keylist.c (oidtranstbl): New.  OIDs collected from several sources.
534         (print_name_raw, print_names_raw, list_cert_raw): New.
535         (gpgsm_list_keys): Check the dump mode and pass it down as
536         necessary.
537
538 2004-04-22  Werner Koch  <wk@gnupg.org>
539
540         * gpgsm.c (main): New commands --dump-keys, --dump-external-keys,
541         --dump-secret-keys.
542
543 2004-04-13  Werner Koch  <wk@gnupg.org>
544
545         * misc.c (setup_pinentry_env): New.
546         * import.c (popen_protect_tool): Call it.
547         * export.c (popen_protect_tool): Call it.
548
549 2004-04-08  Werner Koch  <wk@gnupg.org>
550
551         * decrypt.c (gpgsm_decrypt): Return GPG_ERR_NO_DATA if it is not a 
552         encrypted message.
553
554 2004-04-07  Werner Koch  <wk@gnupg.org>
555
556         * gpgsm.c: New option --force-crl-refresh.
557         * call-dirmngr.c (gpgsm_dirmngr_isvalid): Pass option to dirmngr.
558
559 2004-04-05  Werner Koch  <wk@gnupg.org>
560
561         * server.c (get_status_string): Add STATUS_NEWSIG.
562         * verify.c (gpgsm_verify): Print STATUS_NEWSIG for each signature.
563
564         * certchain.c (gpgsm_validate_chain) <gpgsm_cert_use_cer_p>: Do
565         not just warn if a cert is not suitable; bail out immediately.
566
567 2004-04-01  Werner Koch  <wk@gnupg.org>
568
569         * call-dirmngr.c (isvalid_status_cb): New.
570         (unhexify_fpr): New. Taken from ../g10/call-agent.c
571         (gpgsm_dirmngr_isvalid): Add new arg CTRL, changed caller to pass
572         it thru.  Detect need to check the respondert cert and do that.
573         * certchain.c (gpgsm_validate_chain): Add new arg FLAGS.  Changed
574         all callers.
575
576 2004-03-24  Werner Koch  <wk@gnupg.org>
577
578         * sign.c (gpgsm_sign): Include a short list of capabilities.
579
580 2004-03-17  Werner Koch  <wk@gnupg.org>
581
582         * gpgsm.c (main) <gpgconf>: Fixed default value quoting.
583
584 2004-03-16  Werner Koch  <wk@gnupg.org>
585
586         * gpgsm.c (main): Implemented --gpgconf-list.
587
588 2004-03-15  Werner Koch  <wk@gnupg.org>
589
590         * keylist.c (list_cert_colon): Hack to set the expired flag.
591
592 2004-03-09  Werner Koch  <wk@gnupg.org>
593
594         * gpgsm.c (main): Correctly intitialze USE_OCSP flag.
595
596         * keydb.c (keydb_delete): s/GPG_ERR_CONFLICT/GPG_ERR_NOT_LOCKED/
597
598 2004-03-04  Werner Koch  <wk@gnupg.org>
599
600         * call-dirmngr.c (gpgsm_dirmngr_isvalid): New arg ISSUER_CERT.
601
602         * certchain.c (is_cert_still_valid): New.  Code moved from ...
603         (gpgsm_validate_chain): ... here because we now need to check at
604         two places and at a later stage, so that we can pass the issuer
605         cert down to the dirmngr.
606
607 2004-03-03  Werner Koch  <wk@gnupg.org>
608
609         * call-agent.c (start_agent): Replaced pinentry setup code by a
610         call to a new common function.
611
612         * certdump.c (gpgsm_format_keydesc): Make sure the string is
613         returned as utf-8.
614
615         * export.c (gpgsm_export): Make sure that we don't export more
616         than one certificate.
617
618 2004-03-02  Werner Koch  <wk@gnupg.org>
619
620         * export.c (create_duptable, destroy_duptable)
621         (insert_duptable): New.
622         (gpgsm_export): Avoid duplicates.
623
624 2004-02-26  Werner Koch  <wk@gnupg.org>
625
626         * certchain.c (compare_certs): New.
627         (gpgsm_validate_chain): Fixed infinite certificate checks after
628         bad signatures.
629
630 2004-02-24  Werner Koch  <wk@gnupg.org>
631
632         * keylist.c (list_cert_colon): Print the fingerprint as the
633         cert-id for root certificates.
634
635 2004-02-21  Werner Koch  <wk@gnupg.org>
636
637         * keylist.c (list_internal_keys): Return error codes.
638         (list_external_keys, gpgsm_list_keys): Ditto.
639         * server.c (do_listkeys): Ditto.
640
641         * gpgsm.c (main): Display a key description for --passwd.
642         * call-agent.c (gpgsm_agent_passwd): New arg DESC.
643
644 2004-02-20  Werner Koch  <wk@gnupg.org>
645
646         * gpgsm.c (main): New option --debug-ignore-expiration.
647         * certchain.c (gpgsm_validate_chain): Use it here.
648
649         * certlist.c (cert_usage_p): Apply extKeyUsage.
650
651 2004-02-19  Werner Koch  <wk@gnupg.org>
652
653         * export.c (export_p12, popen_protect_tool)
654         (gpgsm_p12_export): New.
655         * gpgsm.c (main): New command --export-secret-key-p12. 
656
657 2004-02-18  Werner Koch  <wk@gnupg.org>
658
659         * gpgsm.c (set_debug): Set the new --debug-level flags.
660         (main): New option --gpgconf-list.  
661         (main): Do not setup -u and -r keys when not required.
662         (main): Setup the used character set.
663
664         * keydb.c (keydb_add_resource): Print a hint to start the
665         gpg-agent.
666
667 2004-02-17  Werner Koch  <wk@gnupg.org>
668
669         * gpgsm.c: Fixed value parsing for --with-validation.
670         * call-agent.c (start_agent): Ignore an empty GPG_AGENT_INFO.
671         * call-dirmngr.c (start_dirmngr): Likewise for DIRMNGR_INFO.
672
673         * gpgsm.c: New option --with-md5-fingerprint.
674         * keylist.c (list_cert_std): Print MD5 fpr.
675
676         * gpgsm.c: New options --with-validation.
677         * server.c (option_handler): New option "with-validation".
678         * keylist.c (list_cert_std, list_internal_keys): New args CTRL and
679         WITH_VALIDATION. Changed callers to set it.
680         (list_external_cb, list_external_keys): Pass CTRL to the callback.
681         (list_cert_colon): Add arg CTRL.  Check validation if requested.
682         * certchain.c (unknown_criticals, allowed_ca, check_cert_policy) 
683         (gpgsm_validate_chain): New args LISTMODE and FP.
684         (do_list): New helper for info output.
685         (find_up): New arg FIND_NEXT.
686         (gpgsm_validate_chain): After a bad signature try again with other
687         CA certificates.
688
689         * import.c (print_imported_status): New arg NEW_CERT. Print
690         additional STATUS_IMPORT_OK becuase that is what gpgme expects.
691         (check_and_store): Always call above function after import.
692         * server.c (get_status_string): Added STATUS_IMPORT_OK.
693
694 2004-02-13  Werner Koch  <wk@gnupg.org>
695
696         * certcheck.c (gpgsm_create_cms_signature): Format a description
697         for use by the pinentry.
698         * decrypt.c (gpgsm_decrypt): Ditto. Free HEXKEYGRIP.
699         * certdump.c (format_name_cookie, format_name_writer) 
700         (gpgsm_format_name): New.
701         (gpgsm_format_serial): New.
702         (gpgsm_format_keydesc): New.
703         * call-agent.c (gpgsm_agent_pksign): New arg DESC.
704         (gpgsm_agent_pkdecrypt): Ditto.
705
706         * encrypt.c (init_dek): Check for too weak algorithms.
707
708         * import.c (parse_p12, popen_protect_tool): New.
709
710         * base64.c (gpgsm_create_reader): New arg ALLOW_MULTI_PEM.
711         Changed all callers.
712         (base64_reader_cb): Handle it here.
713         (gpgsm_reader_eof_seen): New.
714         (base64_reader_cb): Set a flag for EOF.
715         (simple_reader_cb): Ditto.
716
717 2004-02-12  Werner Koch  <wk@gnupg.org>
718
719         * gpgsm.h, gpgsm.c: New option --protect-tool-program.
720         * gpgsm.c (run_protect_tool): Use it.
721
722 2004-02-11  Werner Koch  <wk@gnupg.org>
723
724         * Makefile.am (AM_CPPFLAGS): Pass directory constants via -D; this
725         will allow to override directory names at make time.
726
727 2004-02-02  Werner Koch  <wk@gnupg.org>
728
729         * import.c (check_and_store): Import certificates even with
730         missing issuer's cert.  Fixed an "depending on the verbose
731         setting" bug.
732
733         * certchain.c (gpgsm_validate_chain): Mark revoked certs in the
734         keybox.
735
736         * keylist.c (list_cert_colon): New arg VALIDITY; use it to print a
737         revoked flag.
738         (list_internal_keys): Retrieve validity flag.
739         (list_external_cb): Pass 0 as validity flag.
740         * keydb.c (keydb_get_flags, keydb_set_flags): New.
741         (keydb_set_cert_flags): New.
742         (lock_all): Return a proper error code.
743         (keydb_lock): New.
744         (keydb_delete): Don't lock but check that it has been locked.
745         (keydb_update_keyblock): Ditto.
746         * delete.c (delete_one): Take a lock.
747
748 2004-01-30  Werner Koch  <wk@gnupg.org>
749
750         * certchain.c (check_cert_policy): Fixed read error checking.
751         (check_cert_policy): With no critical policies issue only a
752         warning if the policy file does not exists.
753
754         * sign.c (add_certificate_list): Decrement N for the first cert.
755
756 2004-01-29  Werner Koch  <wk@gnupg.org>
757
758         * certdump.c (parse_dn_part): Map common OIDs to human readable
759         labels.  Make sure that a value won't get truncated if it includes
760         a Nul.
761
762 2004-01-28  Werner Koch  <wk@gnupg.org>
763
764         * certchain.c (gpgsm_validate_chain): Changed the message printed
765         for an untrusted root certificate.
766
767 2004-01-27  Werner Koch  <wk@gnupg.org>
768
769         * certdump.c (parse_dn_part): Pretty print the nameDistinguisher OID.
770         (print_dn_part): Do not delimit multiple RDN by " + ".  Handle
771         multi-valued RDNs in a special way, i.e. in the order specified by
772         the certificate.
773         (print_dn_parts): Simplified. 
774
775 2004-01-16  Werner Koch  <wk@gnupg.org>
776
777         * sign.c (gpgsm_sign): Print an error message on all failures.
778         * decrypt.c (gpgsm_decrypt): Ditto.
779
780 2003-12-17  Werner Koch  <wk@gnupg.org>
781
782         * server.c (gpgsm_server): Add arg DEFAULT_RECPLIST.
783         (cmd_encrypt): Add all enrypt-to marked certs to the list.
784         * encrypt.c (gpgsm_encrypt): Check that real recipients are
785         available.
786         * gpgsm.c (main): Make the --encrypt-to and --no-encrypt-to
787         options work.  Pass the list of recients to gpgsm_server.
788         * gpgsm.h (certlist_s): Add field IS_ENCRYPT_TO.
789         (opt): Add NO_ENCRYPT_TO.
790         * certlist.c (gpgsm_add_to_certlist): New arg IS_ENCRYPT_TO.
791         Changed all callers and ignore duplicate entries.
792         (is_cert_in_certlist): New.
793         (gpgsm_add_cert_to_certlist): New.
794
795         * certdump.c (gpgsm_print_serial): Cleaned up cast use in strtoul.
796         (gpgsm_dump_serial): Ditto.
797
798         * decrypt.c (gpgsm_decrypt): Replaced ERR by RC.
799
800 2003-12-16  Werner Koch  <wk@gnupg.org>
801
802         * gpgsm.c (main): Set the prefixes for assuan logging.
803
804         * sign.c (gpgsm_sign): Add validation checks for the default
805         certificate.
806
807         * gpgsm.c: Add -k as alias for --list-keys and -K for
808         --list-secret-keys.
809
810 2003-12-15  Werner Koch  <wk@gnupg.org>
811
812         * encrypt.c (init_dek): Use gry_create_nonce for the IV; there is
813         not need for real strong random here and it even better protect
814         the random bits used for the key.
815
816 2003-12-01  Werner Koch  <wk@gnupg.org>
817
818         * gpgsm.c, gpgsm.h: New options --{enable,disable}-ocsp.
819         (gpgsm_init_default_ctrl): Set USE_OCSP to the default value.
820         * certchain.c (gpgsm_validate_chain): Handle USE_OCSP.
821         * call-dirmngr.c (gpgsm_dirmngr_isvalid): Add arg USE_OCSP and
822         proceed accordingly.
823
824 2003-11-19  Werner Koch  <wk@gnupg.org>
825
826         * verify.c (gpgsm_verify): Use "0" instead of an empty string for
827         the VALIDSIG status.
828
829 2003-11-18  Werner Koch  <wk@gnupg.org>
830
831         * verify.c (gpgsm_verify): Fixed for changes API of gcry_md_info.
832
833         * certchain.c (unknown_criticals): Fixed an error code test.
834
835 2003-11-12  Werner Koch  <wk@gnupg.org>
836
837         Adjusted for API changes in Libksba.
838
839 2003-10-31  Werner Koch  <wk@gnupg.org>
840
841         * certchain.c (gpgsm_validate_chain): Changed to use ksba_isotime_t.
842         * verify.c (strtimestamp_r, gpgsm_verify): Ditto.
843         * sign.c (gpgsm_sign): Ditto.
844         * keylist.c (print_time, list_cert_std, list_cert_colon): Ditto.
845         * certdump.c (gpgsm_print_time, gpgsm_dump_time, gpgsm_dump_cert):
846         Ditto.
847
848 2003-10-25  Werner Koch  <wk@gnupg.org>
849
850         * certreqgen.c (read_parameters): Fixed faulty of !spacep().
851
852 2003-08-20  Marcus Brinkmann  <marcus@g10code.de>
853
854         * encrypt.c (encode_session_key): Allocate enough space.  Cast key
855         byte to unsigned char to prevent sign extension.
856         (encrypt_dek): Check return value before error.
857
858 2003-08-14  Timo Schulz  <twoaday@freakmail.de>
859
860         * encrypt.c (encode_session_key): Use new Libgcrypt interface.
861         
862 2003-07-31  Werner Koch  <wk@gnupg.org>
863
864         * Makefile.am (gpgsm_LDADD): Added INTLLIBS.
865
866 2003-07-29  Werner Koch  <wk@gnupg.org>
867
868         * gpgsm.c (main): Add secmem features and set the random seed file.
869         (gpgsm_exit): Update the random seed file and enable debug output.
870
871 2003-07-27  Werner Koch  <wk@gnupg.org>
872
873         Adjusted for gcry_mpi_print and gcry_mpi_scan API change.
874
875 2003-06-24  Werner Koch  <wk@gnupg.org>
876
877         * server.c (gpgsm_status_with_err_code): New.
878         * verify.c (gpgsm_verify): Use it here instead of the old
879         tokenizing version.
880
881         * verify.c (strtimestamp): Renamed to strtimestamp_r
882
883         Adjusted for changes in the libgcrypt API. Some more fixes for the
884         libgpg-error stuff.  
885
886 2003-06-04  Werner Koch  <wk@gnupg.org>
887
888         * call-agent.c (init_membuf,put_membuf,get_membuf): Removed.
889         Include new membuf header and changed used type.
890
891         Renamed error codes from INVALID to INV and removed _ERROR suffixes.
892
893 2003-06-03  Werner Koch  <wk@gnupg.org>
894
895         Changed all error codes in all files to the new libgpg-error scheme.
896
897         * gpgsm.h: Include gpg-error.h .
898         * Makefile.am: Link with libgpg-error.
899
900 2003-04-29  Werner Koch  <wk@gnupg.org>
901
902         * Makefile.am: Use libassuan.  Don't override LDFLAGS anymore.
903         * server.c (register_commands): Adjust for new Assuan semantics.
904
905 2002-12-03  Werner Koch  <wk@gnupg.org>
906
907         * call-agent.c (gpgsm_agent_passwd): New.
908         * gpgsm.c (main): New command --passwd and --call-protect-tool
909         (run_protect_tool): New.
910
911 2002-11-25  Werner Koch  <wk@gnupg.org>
912
913         * verify.c (gpgsm_verify): Handle content-type attribute. 
914
915 2002-11-13  Werner Koch  <wk@gnupg.org>
916
917         * call-agent.c (start_agent): Try to use $GPG_TTY instead of
918         ttyname.  Changed ttyname to test stdin becuase it can be assumed
919         that output redirection is more common that input redirection.
920
921 2002-11-12  Werner Koch  <wk@gnupg.org>
922
923         * gpgsm.c: New command --call-dirmngr. 
924         * call-dirmngr.c (gpgsm_dirmngr_run_command)
925         (run_command_inq_cb,run_command_cb)
926         (run_command_status_cb): New.
927
928 2002-11-11  Werner Koch  <wk@gnupg.org>
929
930         * certcheck.c (gpgsm_check_cms_signature): Don't double free
931         s_sig but free s_pkey at leave.
932
933 2002-11-10  Werner Koch  <wk@gnupg.org>
934
935         * gpgsm.c: Removed duplicate --list-secret-key entry.
936
937 2002-09-19  Werner Koch  <wk@gnupg.org>
938
939         * certcheck.c (gpgsm_check_cert_sig): Add cert hash debugging.
940
941         * certchain.c (find_up): Print info when the cert was not found 
942         by the autorithyKeyIdentifier.
943
944 2002-09-03  Werner Koch  <wk@gnupg.org>
945
946         * gpgsm.c (main): Disable the internal libgcrypt locking.
947
948 2002-08-21  Werner Koch  <wk@gnupg.org>
949
950         * import.c (print_imported_summary): Cleaned up.  Print new
951         not_imported value.
952         (check_and_store): Update non_imported counter.
953         (print_import_problem): New.
954         (check_and_store): Print error status message.
955         * server.c (get_status_string): Added STATUS_IMPORT_PROBLEM.
956
957 2002-08-20  Werner Koch  <wk@gnupg.org>
958
959         * gpgsm.c (main): Use the log file only in server mode.
960
961         * import.c (print_imported_summary): New.
962         (check_and_store): Update the counters, take new argument.
963         (import_one): Factored out core of gpgsm_import.
964         (gpgsm_import): Print counters.
965         (gpgsm_import_files): New.
966         * gpgsm.c (main): Use the new function for import.
967
968 2002-08-19  Werner Koch  <wk@gnupg.org>
969
970         * decrypt.c (gpgsm_decrypt): Return a better error status token.
971         * verify.c (gpgsm_verify): Don't error on messages with no signing
972         time or no message digest.  This is only the case for messages
973         without any signed attributes.
974
975 2002-08-16  Werner Koch  <wk@gnupg.org>
976
977         * certpath.c: Renamed to ..
978         * certchain.c: this. Renamed all all other usages of "path" in the
979         context of certificates to "chain".
980
981         * call-agent.c (learn_cb): Special treatment when the issuer
982         certificate is missing.
983
984 2002-08-10  Werner Koch  <wk@gnupg.org>
985
986         * Makefile.am (INCLUDES): Add definition for localedir.
987
988         * keylist.c (list_cert_colon): Print the short fingerprint in the
989         key ID field.
990         * fingerprint.c (gpgsm_get_short_fingerprint): New.
991         * verify.c (gpgsm_verify): Print more verbose info for a good
992         signature.
993
994 2002-08-09  Werner Koch  <wk@gnupg.org>
995
996         * decrypt.c (prepare_decryption): Hack to detected already
997         unpkcsedone keys.
998
999         * gpgsm.c (emergency_cleanup): New.
1000         (main): Initialize the signal handler.
1001
1002         * sign.c (gpgsm_sign): Reset the hash context for subsequent
1003         signers and release it at the end.
1004
1005 2002-08-05  Werner Koch  <wk@gnupg.org>
1006
1007         * server.c (cmd_signer): New command "SIGNER"
1008         (register_commands): Register it.
1009         (cmd_sign): Pass the signer list to gpgsm_sign.
1010         * certlist.c (gpgsm_add_to_certlist): Add SECRET argument, check
1011         for secret key if set and changed all callers.
1012         * sign.c (gpgsm_sign): New argument SIGNERLIST and implemt
1013         multiple signers.
1014         * gpgsm.c (main): Support more than one -u.
1015         
1016         * server.c (cmd_recipient): Return reason code 1 for No_Public_Key
1017         which is actually what gets returned from add_to_certlist.
1018         
1019 2002-07-26  Werner Koch  <wk@gnupg.org>
1020
1021         * certcheck.c (gpgsm_check_cert_sig): Implement proper cleanup.
1022         (gpgsm_check_cms_signature): Ditto.
1023
1024 2002-07-22  Werner Koch  <wk@gnupg.org>
1025
1026         * keydb.c (keydb_add_resource): Register a lock file.
1027         (lock_all, unlock_all): Implemented.
1028
1029         * delete.c: New.
1030         * gpgsm.c: Made --delete-key work.
1031         * server.c (cmd_delkeys): New.
1032         (register_commands): New command DELKEYS.
1033
1034         * decrypt.c (gpgsm_decrypt): Print a convenience note when RC2 is
1035         used and a STATUS_ERROR with the algorithm oid.
1036
1037 2002-07-03  Werner Koch  <wk@gnupg.org>
1038
1039         * server.c (gpgsm_status2): Insert a blank between all optional
1040         arguments when using assuan.
1041         * server.c (cmd_recipient): No more need for extra blank in constants.
1042         * import.c (print_imported_status): Ditto.
1043         * gpgsm.c (main): Ditto.
1044
1045 2002-07-02  Werner Koch  <wk@gnupg.org>
1046
1047         * verify.c (gpgsm_verify): Extend the STATUS_BADSIG line with
1048         the fingerprint.
1049
1050         * certpath.c (check_cert_policy): Don't use log_error to print a
1051         warning.
1052
1053         * keydb.c (keydb_store_cert): Add optional ar EXISTED and changed
1054         all callers.
1055         * call-agent.c (learn_cb): Print info message only for real imports.
1056
1057         * import.c (gpgsm_import): Moved duplicated code to ...
1058         (check_and_store): new function.  Added magic to import the entire
1059         chain. Print status only for real imports and moved printing code
1060         to ..
1061         (print_imported_status): New.
1062
1063         * call-dirmngr.c (gpgsm_dirmngr_isvalid): print status of dirmngr
1064         call in very verbose mode.
1065
1066         * gpgsm.c (main): Use the same error codes for STATUS_INV_RECP as
1067         with the server mode.
1068
1069 2002-06-29  Werner Koch  <wk@gnupg.org>
1070
1071         * gpgsm.c: New option --auto-issuer-key-retrieve.
1072         * certpath.c (find_up): Try to retrieve an issuer key from an
1073         external source and from the ephemeral key DB.
1074         (find_up_store_certs_cb): New.
1075
1076         * keydb.c (keydb_set_ephemeral): Does now return the old
1077         state.  Call the backend only when required.
1078
1079         * call-dirmngr.c (start_dirmngr): Use GNUPG_DEFAULT_DIRMNGR.
1080         (lookup_status_cb): Issue status only when CTRL is not NULL.
1081         (gpgsm_dirmngr_lookup): Document that CTRL is optional.
1082
1083         * call-agent.c (start_agent): Use GNUPG_DEFAULT_AGENT.
1084
1085 2002-06-28  Werner Koch  <wk@gnupg.org>
1086
1087         * server.c (cmd_recipient): Add more reason codes.
1088
1089 2002-06-27  Werner Koch  <wk@gnupg.org>
1090
1091         * certpath.c (gpgsm_basic_cert_check): Use
1092         --debug-no-path-validation to also bypass this basic check.
1093
1094         * gpgsm.c (main): Use GNUPG_DEFAULT_HOMEDIR constant.
1095
1096         * call-agent.c (start_agent): Create and pass the list of FD to
1097         keep in the child to assuan.
1098         * call-dirmngr.c (start_dirmngr): Ditto.
1099
1100 2002-06-26  Werner Koch  <wk@gnupg.org>
1101
1102         * import.c (gpgsm_import): Print an STATUS_IMPORTED.
1103
1104         * gpgsm.c: --debug-no-path-validation does not take an argument.
1105
1106 2002-06-25  Werner Koch  <wk@gnupg.org>
1107
1108         * certdump.c (print_dn_part): Always print a leading slash,
1109         removed NEED_DELIM arg and changed caller.
1110
1111         * export.c (gpgsm_export): Print LFs to FP and not stdout.
1112         (print_short_info): Ditto.  Make use of gpgsm_print_name.
1113
1114         * server.c (cmd_export): Use output-fd instead of data lines; this
1115         was actually the specified way.
1116
1117 2002-06-24  Werner Koch  <wk@gnupg.org>
1118
1119         * gpgsm.c: Removed duped help entry for --list-keys.
1120         
1121         * gpgsm.c, gpgsm.h: New option --debug-no-path-validation.
1122
1123         * certpath.c (gpgsm_validate_path): Use it here instead of the
1124         debug flag hack.
1125
1126         * certpath.c (check_cert_policy): Return No_Policy_Match if the
1127         policy file could not be opened.
1128
1129 2002-06-20  Werner Koch  <wk@gnupg.org>
1130
1131         * certlist.c (gpgsm_add_to_certlist): Fixed locating of a
1132         certificate with the required key usage.
1133
1134         * gpgsm.c (main): Fixed a segv when using --outfile without an
1135         argument.
1136
1137         * keylist.c (print_capabilities): Also check for non-repudiation
1138         and data encipherment.
1139         * certlist.c (cert_usage_p): Test for signing and encryption was
1140         swapped.  Add a case for certification usage, handle
1141         non-repudiation and data encipherment.
1142         (gpgsm_cert_use_cert_p): New.
1143         (gpgsm_add_to_certlist): Added a CTRL argument and changed all
1144         callers to pass it.
1145         * certpath.c (gpgsm_validate_path): Use it here to print a status
1146         message. Added a CTRL argument and changed all callers to pass it.
1147         * decrypt.c (gpgsm_decrypt): Print a status message for wrong key
1148         usage.
1149         * verify.c (gpgsm_verify): Ditto.
1150         * keydb.c (classify_user_id): Allow a colon delimited fingerprint.
1151
1152 2002-06-19  Werner Koch  <wk@gnupg.org>
1153
1154         * call-agent.c (learn_cb): Use log_info instead of log_error on
1155         successful import.
1156
1157         * keydb.c (keydb_set_ephemeral): New.
1158         (keydb_store_cert): New are ephemeral, changed all callers.
1159         * keylist.c (list_external_cb): Store cert as ephemeral.
1160         * export.c (gpgsm_export): Kludge to export epehmeral certificates.
1161
1162         * gpgsm.c (main): New command --list-external-keys.
1163         
1164 2002-06-17  Werner Koch  <wk@gnupg.org>
1165
1166         * certreqgen.c (read_parameters): Improved error handling.
1167         (gpgsm_genkey): Print error message.
1168
1169 2002-06-13  Werner Koch  <wk@gnupg.org>
1170
1171         * gpgsm.c (main): New option --log-file.
1172
1173 2002-06-12  Werner Koch  <wk@gnupg.org>
1174
1175         * call-dirmngr.c (lookup_status_cb): New.
1176         (gpgsm_dirmngr_lookup): Use the status CB.  Add new arg CTRL and
1177         changed caller to pass it.
1178
1179         * gpgsm.c (open_fwrite): New.
1180         (main): Allow --output for --verify.
1181
1182         * sign.c (hash_and_copy_data): New.
1183         (gpgsm_sign): Implemented normal (non-detached) signatures.
1184         * gpgsm.c (main): Ditto.
1185         
1186         * certpath.c (gpgsm_validate_path): Special error handling for
1187         no policy match.
1188
1189 2002-06-10  Werner Koch  <wk@gnupg.org>
1190
1191         * server.c (get_status_string): Add STATUS_ERROR.
1192
1193         * certpath.c (gpgsm_validate_path): Tweaked the error checking to 
1194         return error codes in a more sensitive way.
1195         * verify.c (gpgsm_verify): Send status TRUST_NEVER also for a bad
1196         CA certificate and when the certificate has been revoked.  Issue
1197         TRUST_FULLY even when the cert has expired.  Append an error token
1198         to these status lines.  Issue the new generic error status when a
1199         cert was not found and when leaving the function.
1200
1201 2002-06-04  Werner Koch  <wk@gnupg.org>
1202
1203         * gpgsm.c (main): New command --list-sigs
1204         * keylist.c (list_cert_std): New.  Use it whenever colon mode is
1205         not used.
1206         (list_cert_chain): New.
1207
1208 2002-05-31  Werner Koch  <wk@gnupg.org>
1209
1210         * gpgsm.c (main): Don't print the "go ahead" message for an
1211         invalid command.
1212
1213 2002-05-23  Werner Koch  <wk@gnupg.org>
1214
1215         * import.c (gpgsm_import): Add error messages.
1216
1217 2002-05-21  Werner Koch  <wk@gnupg.org>
1218
1219         * keylist.c (list_internal_keys): Renamed from gpgsm_list_keys.
1220         (list_external_keys): New.
1221         (gpgsm_list_keys): Dispatcher for above.
1222         * call-dirmngr.c (lookup_cb,pattern_from_strlist)
1223         (gpgsm_dirmngr_lookup): New.
1224         * server.c (option_handler): Handle new option --list-mode.
1225         (do_listkeys): Handle options and actually use the mode argument.
1226         (get_status_string): New code TRUNCATED.
1227
1228         * import.c (gpgsm_import): Try to identify the type of input and
1229         handle certs-only messages.
1230
1231 2002-05-14  Werner Koch  <wk@gnupg.org>
1232
1233         * gpgsm.c: New option --faked-system-time
1234         * sign.c (gpgsm_sign): And use it here.
1235         * certpath.c (gpgsm_validate_path): Ditto.
1236
1237 2002-05-03  Werner Koch  <wk@gnupg.org>
1238
1239         * certpath.c (gpgsm_validate_path): Added EXPTIME arg and changed
1240         all callers.
1241         * verify.c (gpgsm_verify): Tweaked usage of log_debug and
1242         log_error.  Return EXPSIG status and add expiretime to VALIDSIG.
1243
1244 2002-04-26  Werner Koch  <wk@gnupg.org>
1245
1246         * gpgsm.h (DBG_AGENT,DBG_AGENT_VALUE): Replaced by DBG_ASSUAN_*.
1247         Changed all users.
1248
1249         * call-agent.c (start_agent): Be more silent without -v.
1250         * call-dirmngr.c (start_dirmngr): Ditto.
1251
1252 2002-04-25  Werner Koch  <wk@gnupg.org>
1253
1254         * call-agent.c (start_agent): Make copies of old locales and check
1255         for setlocale.
1256
1257 2002-04-25  Marcus Brinkmann  <marcus@g10code.de>
1258
1259         * call-agent.c (start_agent): Fix error handling logic so the
1260         locale is always correctly reset.
1261
1262 2002-04-25  Marcus Brinkmann  <marcus@g10code.de>
1263
1264         * server.c (option_handler): Accept display, ttyname, ttytype,
1265         lc_ctype and lc_messages options.
1266         * gpgsm.c (main): Allocate memory for these options.
1267         * gpgsm.h (struct opt): Make corresponding members non-const.
1268
1269 2002-04-24  Marcus Brinkmann  <marcus@g10code.de>
1270
1271         * gpgsm.h (struct opt): New members display, ttyname, ttytype,
1272         lc_ctype, lc_messages.
1273         * gpgsm.c (enum cmd_and_opt_values): New members oDisplay,
1274         oTTYname, oTTYtype, oLCctype, oLCmessages.
1275         (opts): New entries for these options.
1276         (main): Handle these new options.
1277         * call-agent.c (start_agent): Set the various display and tty
1278         parameter after resetting.
1279
1280 2002-04-18  Werner Koch  <wk@gnupg.org>
1281
1282         * certreqgen.c (gpgsm_genkey): Write status output on success.
1283
1284 2002-04-15  Werner Koch  <wk@gnupg.org>
1285
1286         * gpgsm.c (main): Check ksba version.
1287
1288         * certpath.c (find_up): New to use the authorithKeyIdentifier.
1289         Use it in all other functions to locate the signing cert..
1290
1291 2002-04-11  Werner Koch  <wk@gnupg.org>
1292
1293         * certlist.c (cert_usable_p): New.
1294         (gpgsm_cert_use_sign_p,gpgsm_cert_use_encrypt_p): New.
1295         (gpgsm_cert_use_verify_p,gpgsm_cert_use_decrypt_p): New.
1296         (gpgsm_add_to_certlist): Check the key usage.
1297         * sign.c (gpgsm_sign): Ditto.
1298         * verify.c (gpgsm_verify): Print a message wehn an unsuitable
1299         certificate was used.
1300         * decrypt.c (gpgsm_decrypt): Ditto
1301         * keylist.c (print_capabilities): Determine values from the cert.
1302
1303 2002-03-28  Werner Koch  <wk@gnupg.org>
1304
1305         * keylist.c (list_cert_colon): Fixed listing of crt record; the
1306         issuer is not at the right place.  Print a chainingID.
1307         * certpath.c (gpgsm_walk_cert_chain): Be a bit more silent on
1308         common errors.
1309
1310 2002-03-21  Werner Koch  <wk@gnupg.org>
1311
1312         * export.c: New.
1313         * gpgsm.c: Add command --export.
1314         * server.c (cmd_export): New.
1315         
1316 2002-03-13  Werner Koch  <wk@gnupg.org>
1317
1318         * decrypt.c (gpgsm_decrypt): Allow multiple recipients.
1319
1320 2002-03-12  Werner Koch  <wk@gnupg.org>
1321
1322         * certpath.c (check_cert_policy): Print the policy list.
1323
1324         * verify.c (gpgsm_verify): Detect certs-only message.
1325
1326 2002-03-11  Werner Koch  <wk@gnupg.org>
1327
1328         * import.c (gpgsm_import): Print a notice about imported certificates
1329         when in verbose mode.
1330
1331         * gpgsm.c (main): Print INV_RECP status.
1332         * server.c (cmd_recipient): Ditto.
1333
1334         * server.c (gpgsm_status2): New.  Allows for a list of strings.
1335         (gpgsm_status): Divert to gpgsm_status2.
1336
1337         * encrypt.c (gpgsm_encrypt): Don't use a default key when no
1338         recipients are given.  Print a NO_RECP status.
1339
1340 2002-03-06  Werner Koch  <wk@gnupg.org>
1341
1342         * server.c (cmd_listkeys, cmd_listsecretkeys): Divert to
1343         (do_listkeys): new.  Add pattern parsing.
1344
1345         * keylist.c (gpgsm_list_keys): Handle selection pattern.
1346
1347         * gpgsm.c: New command --learn-card
1348         * call-agent.c (learn_cb,gpgsm_agent_learn): New.
1349
1350         * gpgsm.c (main): Print error messages for non-implemented commands.
1351
1352         * base64.c (base64_reader_cb): Use case insensitive compare of the
1353         Content-Type string to detect plain base-64.
1354
1355 2002-03-05  Werner Koch  <wk@gnupg.org>
1356
1357         * gpgsm.c, gpgsm.h: Add local_user.
1358         * sign.c (gpgsm_get_default_cert): New.
1359         (get_default_signer): Use the new function if local_user is not
1360         set otherwise used that value.
1361         * encrypt.c (get_default_recipient): Removed.
1362         (gpgsm_encrypt): Use gpgsm_get_default_cert.
1363
1364         * verify.c (gpgsm_verify): Better error text for a bad signature
1365         found by comparing the hashs.
1366
1367 2002-02-27  Werner Koch  <wk@gnupg.org>
1368
1369         * call-dirmngr.c, call-agent.c: Add 2 more arguments to all uses
1370         of assuan_transact.
1371
1372 2002-02-25  Werner Koch  <wk@gnupg.org>
1373
1374         * server.c (option_handler): Allow to use -2 for "send all certs
1375         except the root cert".
1376         * sign.c (add_certificate_list): Implement it here.
1377         * certpath.c (gpgsm_is_root_cert): New.
1378
1379 2002-02-19  Werner Koch  <wk@gnupg.org>
1380
1381         * certpath.c (check_cert_policy): New.
1382         (gpgsm_validate_path): And call it from here.
1383         * gpgsm.c (main): New options --policy-file,
1384         --disable-policy-checks and --enable-policy-checks.
1385         * gpgsm.h (opt): Added policy_file, no_policy_checks.
1386
1387 2002-02-18  Werner Koch  <wk@gnupg.org>
1388
1389         * certpath.c (gpgsm_validate_path): Ask the agent to add the
1390         certificate into the trusted list.
1391         * call-agent.c (gpgsm_agent_marktrusted): New.
1392
1393 2002-02-07  Werner Koch  <wk@gnupg.org>
1394
1395         * certlist.c (gpgsm_add_to_certlist): Check that the specified
1396         name identifies a certificate unambiguously.
1397         (gpgsm_find_cert): Ditto.
1398
1399         * server.c (cmd_listkeys): Check that the data stream is available.
1400         (cmd_listsecretkeys): Ditto.
1401         (has_option): New.
1402         (cmd_sign): Fix ambiguousity in option recognition.
1403
1404         * gpgsm.c (main): Enable --logger-fd.
1405
1406         * encrypt.c (gpgsm_encrypt): Increased buffer size for better
1407         performance.
1408
1409         * call-agent.c (gpgsm_agent_pksign): Check the S-Exp received from
1410         the agent.
1411
1412         * keylist.c (list_cert_colon): Filter out control characters.
1413
1414 2002-02-06  Werner Koch  <wk@gnupg.org>
1415
1416         * decrypt.c (gpgsm_decrypt): Bail out after an decryption error.
1417
1418         * server.c (reset_notify): Close input and output FDs.
1419         (cmd_encrypt,cmd_decrypt,cmd_verify,cmd_sign.cmd_import)
1420         (cmd_genkey): Close the FDs and release the recipient list even in
1421         the error case.
1422
1423 2002-02-01  Marcus Brinkmann  <marcus@g10code.de>
1424
1425         * sign.c (gpgsm_sign): Do not release certificate twice.
1426
1427 2002-01-29  Werner Koch  <wk@gnupg.org>
1428
1429         * call-agent.c (gpgsm_agent_havekey): New.
1430         * keylist.c (list_cert_colon): New arg HAVE_SECRET, print "crs"
1431         when we know that the secret key is available.
1432         (gpgsm_list_keys): New arg MODE, check whether a secret key is
1433         available.  Changed all callers.
1434         * gpgsm.c (main): New command --list-secret-keys.
1435         * server.c (cmd_listsecretkeys): New.
1436         (cmd_listkeys): Return secret keys with "crs" record.
1437
1438 2002-01-28  Werner Koch  <wk@gnupg.org>
1439
1440         * certreqgen.c (create_request): Store the email address in the req.
1441
1442 2002-01-25  Werner Koch  <wk@gnupg.org>
1443
1444         * gpgsm.c (main): Disable core dumps.
1445
1446         * sign.c (add_certificate_list): New.
1447         (gpgsm_sign): Add the certificates to the CMS object.
1448         * certpath.c (gpgsm_walk_cert_chain): New.
1449         * gpgsm.h (server_control_s): Add included_certs.
1450         * gpgsm.c: Add option --include-certs.
1451         (gpgsm_init_default_ctrl): New.
1452         (main): Call it.
1453         * server.c (gpgsm_server): Ditto.
1454         (option_handler): Support --include-certs.
1455
1456 2002-01-23  Werner Koch  <wk@gnupg.org>
1457
1458         * certpath.c (gpgsm_validate_path): Print the DN of a missing issuer.
1459         * certdump.c (gpgsm_dump_string): New.
1460         (print_dn): Replaced by above.
1461
1462 2002-01-22  Werner Koch  <wk@gnupg.org>
1463
1464         * certpath.c (unknown_criticals): New.
1465         (allowed_ca): New.
1466         (gpgsm_validate_path): Check validity, CA attribute, path length
1467         and unknown critical extensions.
1468
1469 2002-01-21  Werner Koch  <wk@gnupg.org>
1470
1471         * gpgsm.c: Add option --enable-crl-checks.
1472
1473         * call-agent.c (start_agent): Implemented socket based access.
1474         * call-dirmngr.c (start_dirmngr): Ditto.
1475
1476 2002-01-20  Werner Koch  <wk@gnupg.org>
1477
1478         * server.c (option_handler): New.
1479         (gpgsm_server): Register it with assuan.
1480
1481 2002-01-19  Werner Koch  <wk@gnupg.org>
1482
1483         * server.c (gpgsm_server): Use assuan_deinit_server and setup
1484         assuan logging if enabled.
1485         * call-agent.c (inq_ciphertext_cb): Don't show the session key in
1486         an Assuan log file.
1487
1488         * gpgsm.c (my_strusage): Take bugreport address from configure.ac
1489
1490 2002-01-15  Werner Koch  <wk@gnupg.org>
1491
1492         * import.c (gpgsm_import): Just do a basic cert check before
1493         storing it.
1494         * certpath.c (gpgsm_basic_cert_check): New.
1495
1496         * keydb.c (keydb_store_cert): New.
1497         * import.c (store_cert): Removed and change all caller to use
1498         the new function.
1499         * verify.c (store_cert): Ditto.
1500
1501         * certlist.c (gpgsm_add_to_certlist): Validate the path
1502
1503         * certpath.c (gpgsm_validate_path): Check the trust list.
1504         * call-agent.c (gpgsm_agent_istrusted): New.
1505
1506 2002-01-14  Werner Koch  <wk@gnupg.org>
1507
1508         * call-dirmngr.c (inq_certificate): Changed for new interface semantic.
1509         * certlist.c (gpgsm_find_cert): New.
1510
1511 2002-01-13  Werner Koch  <wk@gnupg.org>
1512
1513         * fingerprint.c (gpgsm_get_certid): Print the serial and not the
1514         hash after the dot.
1515
1516 2002-01-11  Werner Koch  <wk@gnupg.org>
1517
1518         * call-dirmngr.c: New.
1519         * certpath.c (gpgsm_validate_path): Check the CRL here.
1520         * fingerprint.c (gpgsm_get_certid): New.
1521         * gpgsm.c: New options --dirmngr-program and --disable-crl-checks.
1522
1523 2002-01-10  Werner Koch  <wk@gnupg.org>
1524
1525         * base64.c (gpgsm_create_writer): Allow to set the object name
1526
1527 2002-01-08  Werner Koch  <wk@gnupg.org>
1528
1529         * keydb.c (spacep): Removed because it is now in util.c
1530
1531         * server.c (cmd_genkey): New.
1532         * certreqgen.c: New.  The parameter handling code has been taken
1533         from gnupg/g10/keygen.c version 1.0.6.
1534         * call-agent.c (gpgsm_agent_genkey): New.
1535
1536 2002-01-02  Werner Koch  <wk@gnupg.org>
1537
1538         * server.c (rc_to_assuan_status): Removed and changed all callers
1539         to use map_to_assuan_status.
1540
1541 2001-12-20  Werner Koch  <wk@gnupg.org>
1542
1543         * verify.c (gpgsm_verify): Implemented non-detached signature
1544         verification.  Add OUT_FP arg, initialize a writer and changed all
1545         callers.
1546         * server.c (cmd_verify): Pass an out_fp if one has been set.
1547
1548         * base64.c (base64_reader_cb): Try to detect an S/MIME body part.
1549
1550         * certdump.c (print_sexp): Renamed to gpgsm_dump_serial, made
1551         global.
1552         (print_time): Renamed to gpgsm_dump_time, made global.
1553         (gpgsm_dump_serial): Take a real S-Expression as argument and
1554         print the first item.
1555         * keylist.c (list_cert_colon): Ditto.
1556         * keydb.c (keydb_search_issuer_sn): Ditto.
1557         * decrypt.c (print_integer_sexp): Removed and made callers 
1558         use gpgsm_dump_serial.
1559         * verify.c (print_time): Removed, made callers use gpgsm_dump_time.
1560         
1561 2001-12-19  Marcus Brinkmann  <marcus@g10code.de>
1562
1563         * call-agent.c (start_agent): Add new argument to assuan_pipe_connect.
1564
1565 2001-12-18  Werner Koch  <wk@gnupg.org>
1566
1567         * verify.c (print_integer_sexp): Renamed from print_integer and
1568         print the serial number according to the S-Exp rules.
1569         * decrypt.c (print_integer_sexp): Ditto.
1570
1571 2001-12-17  Werner Koch  <wk@gnupg.org>
1572
1573         * keylist.c (list_cert_colon): Changed for new return value of
1574         get_serial.
1575         * keydb.c (keydb_search_issuer_sn): Ditto.
1576         * certcheck.c (gpgsm_check_cert_sig): Likewise for other S-Exp
1577         returingin functions.
1578         * fingerprint.c (gpgsm_get_keygrip): Ditto.
1579         * encrypt.c (encrypt_dek): Ditto
1580         * certcheck.c (gpgsm_check_cms_signature): Ditto
1581         * decrypt.c (prepare_decryption): Ditto.
1582         * call-agent.c (gpgsm_agent_pkdecrypt): Removed arg ciphertextlen,
1583         use KsbaSexp type and calculate the length.
1584
1585         * certdump.c (print_sexp): Remaned from print_integer, changed caller.
1586
1587         * Makefile.am: Use the LIBGCRYPT and LIBKSBA variables.
1588
1589         * fingerprint.c (gpgsm_get_keygrip): Use the new
1590         gcry_pk_get_keygrip to calculate the grip - note the algorithm and
1591         therefore the grip values changed.
1592
1593 2001-12-15  Werner Koch  <wk@gnupg.org>
1594
1595         * certcheck.c (gpgsm_check_cms_signature): Removed the faked-key
1596         kludge.
1597         (gpgsm_create_cms_signature): Removed the commented fake key
1598         code.  This makes the function pretty simple.
1599
1600         * gpgsm.c (main): Renamed the default key database to "keyring.kbx".
1601
1602         * decrypt.c (gpgsm_decrypt): Write STATUS_DECRYPTION_*.
1603         * sign.c (gpgsm_sign): Write a STATUS_SIG_CREATED.
1604
1605 2001-12-14  Werner Koch  <wk@gnupg.org>
1606
1607         * keylist.c (list_cert_colon): Kludge to show an email address
1608         encoded in the subject's DN.
1609
1610         * verify.c (gpgsm_verify): Add hash debug helpers
1611         * sign.c (gpgsm_sign): Ditto.
1612
1613         * base64.c (base64_reader_cb): Reset the linelen when we need to
1614         skip the line and adjusted test; I somehow forgot about DeMorgan.
1615
1616         * server.c (cmd_encrypt,cmd_decrypt,cmd_sign,cmd_verify) 
1617         (cmd_import): Close the FDs on success.
1618         (close_message_fd): New.
1619         (input_notify): Setting autodetect_encoding to 0 after initializing
1620         it to 0 is pretty pointless.  Easy to fix.
1621
1622         * gpgsm.c (main): New option --debug-wait n, so that it is
1623         possible to attach gdb when used in server mode.
1624
1625         * sign.c (get_default_signer): Use keydb_classify_name here.
1626
1627 2001-12-14  Marcus Brinkmann  <marcus@g10code.de>
1628
1629         * call-agent.c (LINELENGTH): Removed.
1630         (gpgsm_agent_pksign): Use ASSUAN_LINELENGTH, not LINELENGTH.
1631         (gpgsm_agent_pkdecrypt): Likewise.
1632
1633 2001-12-13  Werner Koch  <wk@gnupg.org>
1634
1635         * keylist.c (list_cert_colon): Print alternative names of subject
1636         and a few other values.
1637
1638 2001-12-12  Werner Koch  <wk@gnupg.org>
1639
1640         * gpgsm.c (main): New options --assume-{armor,base64,binary}. 
1641         * base64.c (base64_reader_cb): Fixed non-autodetection mode.
1642
1643 2001-12-04  Werner Koch  <wk@gnupg.org>
1644
1645         * call-agent.c (read_from_agent): Check for inquire responses.
1646         (request_reply): Handle them using a new callback arg, changed all
1647         callers.
1648         (gpgsm_agent_pkdecrypt): New.
1649
1650 2001-11-27  Werner Koch  <wk@gnupg.org>
1651
1652         * base64.c: New.  Changed all other functions to use this instead
1653         of direct creation of ksba_reader/writer.
1654         * gpgsm.c (main): Set ctrl.auto_encoding unless --no-armor is used.
1655
1656 2001-11-26  Werner Koch  <wk@gnupg.org>
1657
1658         * gpgsm.c: New option --agent-program
1659         * call-agent.c (start_agent): Allow to override the default path
1660         to the agent.
1661
1662         * keydb.c (keydb_add_resource): Create keybox
1663
1664         * keylist.c (gpgsm_list_keys): Fixed non-server keylisting.
1665
1666         * server.c (rc_to_assuan_status): New.  Use it for all commands.
1667
1668         
1669  Copyright 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
1670
1671  This file is free software; as a special exception the author gives
1672  unlimited permission to copy and/or distribute it, with or without
1673  modifications, as long as this notice is preserved.
1674
1675  This file is distributed in the hope that it will be useful, but
1676  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
1677  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.