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