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