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