* gpgsm.c (main): Use GNUPG_DEFAULT_HOMEDIR constant.
[gnupg.git] / sm / ChangeLog
1 2002-06-27  Werner Koch  <wk@gnupg.org>
2
3         * gpgsm.c (main): Use GNUPG_DEFAULT_HOMEDIR constant.
4
5         * call-agent.c (start_agent): Create and pass the list of FD to
6         keep in the child to assuan.
7         * call-dirmngr.c (start_dirmngr): Ditto.
8
9 2002-06-26  Werner Koch  <wk@gnupg.org>
10
11         * import.c (gpgsm_import): Print an STATUS_IMPORTED.
12
13         * gpgsm.c: --debug-no-path-validation does not take an argument.
14
15 2002-06-25  Werner Koch  <wk@gnupg.org>
16
17         * certdump.c (print_dn_part): Always print a leading slash,
18         removed NEED_DELIM arg and changed caller.
19
20         * export.c (gpgsm_export): Print LFs to FP and not stdout.
21         (print_short_info): Ditto.  Make use of gpgsm_print_name.
22
23         * server.c (cmd_export): Use output-fd instead of data lines; this
24         was actually the specified way.
25
26 2002-06-24  Werner Koch  <wk@gnupg.org>
27
28         * gpgsm.c: Removed duped help entry for --list-keys.
29         
30         * gpgsm.c, gpgsm.h: New option --debug-no-path-validation.
31
32         * certpath.c (gpgsm_validate_path): Use it here instead of the
33         debug flag hack.
34
35         * certpath.c (check_cert_policy): Return No_Policy_Match if the
36         policy file could not be opened.
37
38 2002-06-20  Werner Koch  <wk@gnupg.org>
39
40         * certlist.c (gpgsm_add_to_certlist): Fixed locating of a
41         certificate with the required key usage.
42
43         * gpgsm.c (main): Fixed a segv when using --outfile without an
44         argument.
45
46         * keylist.c (print_capabilities): Also check for non-repudiation
47         and data encipherment.
48         * certlist.c (cert_usage_p): Test for signing and encryption was
49         swapped.  Add a case for certification usage, handle
50         non-repudiation and data encipherment.
51         (gpgsm_cert_use_cert_p): New.
52         (gpgsm_add_to_certlist): Added a CTRL argument and changed all
53         callers to pass it.
54         * certpath.c (gpgsm_validate_path): Use it here to print a status
55         message. Added a CTRL argument and changed all callers to pass it.
56         * decrypt.c (gpgsm_decrypt): Print a status message for wrong key
57         usage.
58         * verify.c (gpgsm_verify): Ditto.
59         * keydb.c (classify_user_id): Allow a colon delimited fingerprint.
60
61 2002-06-19  Werner Koch  <wk@gnupg.org>
62
63         * call-agent.c (learn_cb): Use log_info instead of log_error on
64         successful import.
65
66         * keydb.c (keydb_set_ephemeral): New.
67         (keydb_store_cert): New are ephemeral, changed all callers.
68         * keylist.c (list_external_cb): Store cert as ephemeral.
69         * export.c (gpgsm_export): Kludge to export epehmeral certificates.
70
71         * gpgsm.c (main): New command --list-external-keys.
72         
73 2002-06-17  Werner Koch  <wk@gnupg.org>
74
75         * certreqgen.c (read_parameters): Improved error handling.
76         (gpgsm_genkey): Print error message.
77
78 2002-06-13  Werner Koch  <wk@gnupg.org>
79
80         * gpgsm.c (main): New option --log-file.
81
82 2002-06-12  Werner Koch  <wk@gnupg.org>
83
84         * call-dirmngr.c (lookup_status_cb): New.
85         (gpgsm_dirmngr_lookup): Use the status CB.  Add new arg CTRL and
86         changed caller to pass it.
87
88         * gpgsm.c (open_fwrite): New.
89         (main): Allow --output for --verify.
90
91         * sign.c (hash_and_copy_data): New.
92         (gpgsm_sign): Implemented normal (non-detached) signatures.
93         * gpgsm.c (main): Ditto.
94         
95         * certpath.c (gpgsm_validate_path): Special error handling for
96         no policy match.
97
98 2002-06-10  Werner Koch  <wk@gnupg.org>
99
100         * server.c (get_status_string): Add STATUS_ERROR.
101
102         * certpath.c (gpgsm_validate_path): Tweaked the error checking to 
103         return error codes in a more sensitive way.
104         * verify.c (gpgsm_verify): Send status TRUST_NEVER also for a bad
105         CA certificate and when the certificate has been revoked.  Issue
106         TRUST_FULLY even when the cert has expired.  Append an error token
107         to these status lines.  Issue the new generic error status when a
108         cert was not found and when leaving the function.
109
110 2002-06-04  Werner Koch  <wk@gnupg.org>
111
112         * gpgsm.c (main): New command --list-sigs
113         * keylist.c (list_cert_std): New.  Use it whenever colon mode is
114         not used.
115         (list_cert_chain): New.
116
117 2002-05-31  Werner Koch  <wk@gnupg.org>
118
119         * gpgsm.c (main): Don't print the "go ahead" message for an
120         invalid command.
121
122 2002-05-23  Werner Koch  <wk@gnupg.org>
123
124         * import.c (gpgsm_import): Add error messages.
125
126 2002-05-21  Werner Koch  <wk@gnupg.org>
127
128         * keylist.c (list_internal_keys): Renamed from gpgsm_list_keys.
129         (list_external_keys): New.
130         (gpgsm_list_keys): Dispatcher for above.
131         * call-dirmngr.c (lookup_cb,pattern_from_strlist)
132         (gpgsm_dirmngr_lookup): New.
133         * server.c (option_handler): Handle new option --list-mode.
134         (do_listkeys): Handle options and actually use the mode argument.
135         (get_status_string): New code TRUNCATED.
136
137         * import.c (gpgsm_import): Try to identify the type of input and
138         handle certs-only messages.
139
140 2002-05-14  Werner Koch  <wk@gnupg.org>
141
142         * gpgsm.c: New option --faked-system-time
143         * sign.c (gpgsm_sign): And use it here.
144         * certpath.c (gpgsm_validate_path): Ditto.
145
146 2002-05-03  Werner Koch  <wk@gnupg.org>
147
148         * certpath.c (gpgsm_validate_path): Added EXPTIME arg and changed
149         all callers.
150         * verify.c (gpgsm_verify): Tweaked usage of log_debug and
151         log_error.  Return EXPSIG status and add expiretime to VALIDSIG.
152
153 2002-04-26  Werner Koch  <wk@gnupg.org>
154
155         * gpgsm.h (DBG_AGENT,DBG_AGENT_VALUE): Replaced by DBG_ASSUAN_*.
156         Changed all users.
157
158         * call-agent.c (start_agent): Be more silent without -v.
159         * call-dirmngr.c (start_dirmngr): Ditto.
160
161 2002-04-25  Werner Koch  <wk@gnupg.org>
162
163         * call-agent.c (start_agent): Make copies of old locales and check
164         for setlocale.
165
166 2002-04-25  Marcus Brinkmann  <marcus@g10code.de>
167
168         * call-agent.c (start_agent): Fix error handling logic so the
169         locale is always correctly reset.
170
171 2002-04-25  Marcus Brinkmann  <marcus@g10code.de>
172
173         * server.c (option_handler): Accept display, ttyname, ttytype,
174         lc_ctype and lc_messages options.
175         * gpgsm.c (main): Allocate memory for these options.
176         * gpgsm.h (struct opt): Make corresponding members non-const.
177
178 2002-04-24  Marcus Brinkmann  <marcus@g10code.de>
179
180         * gpgsm.h (struct opt): New members display, ttyname, ttytype,
181         lc_ctype, lc_messages.
182         * gpgsm.c (enum cmd_and_opt_values): New members oDisplay,
183         oTTYname, oTTYtype, oLCctype, oLCmessages.
184         (opts): New entries for these options.
185         (main): Handle these new options.
186         * call-agent.c (start_agent): Set the various display and tty
187         parameter after resetting.
188
189 2002-04-18  Werner Koch  <wk@gnupg.org>
190
191         * certreqgen.c (gpgsm_genkey): Write status output on success.
192
193 2002-04-15  Werner Koch  <wk@gnupg.org>
194
195         * gpgsm.c (main): Check ksba version.
196
197         * certpath.c (find_up): New to use the authorithKeyIdentifier.
198         Use it in all other functions to locate the signing cert..
199
200 2002-04-11  Werner Koch  <wk@gnupg.org>
201
202         * certlist.c (cert_usable_p): New.
203         (gpgsm_cert_use_sign_p,gpgsm_cert_use_encrypt_p): New.
204         (gpgsm_cert_use_verify_p,gpgsm_cert_use_decrypt_p): New.
205         (gpgsm_add_to_certlist): Check the key usage.
206         * sign.c (gpgsm_sign): Ditto.
207         * verify.c (gpgsm_verify): Print a message wehn an unsuitable
208         certificate was used.
209         * decrypt.c (gpgsm_decrypt): Ditto
210         * keylist.c (print_capabilities): Determine values from the cert.
211
212 2002-03-28  Werner Koch  <wk@gnupg.org>
213
214         * keylist.c (list_cert_colon): Fixed listing of crt record; the
215         issuer is not at the right place.  Print a chainingID.
216         * certpath.c (gpgsm_walk_cert_chain): Be a bit more silent on
217         common errors.
218
219 2002-03-21  Werner Koch  <wk@gnupg.org>
220
221         * export.c: New.
222         * gpgsm.c: Add command --export.
223         * server.c (cmd_export): New.
224         
225 2002-03-13  Werner Koch  <wk@gnupg.org>
226
227         * decrypt.c (gpgsm_decrypt): Allow multiple recipients.
228
229 2002-03-12  Werner Koch  <wk@gnupg.org>
230
231         * certpath.c (check_cert_policy): Print the policy list.
232
233         * verify.c (gpgsm_verify): Detect certs-only message.
234
235 2002-03-11  Werner Koch  <wk@gnupg.org>
236
237         * import.c (gpgsm_import): Print a notice about imported certificates
238         when in verbose mode.
239
240         * gpgsm.c (main): Print INV_RECP status.
241         * server.c (cmd_recipient): Ditto.
242
243         * server.c (gpgsm_status2): New.  Allows for a list of strings.
244         (gpgsm_status): Divert to gpgsm_status2.
245
246         * encrypt.c (gpgsm_encrypt): Don't use a default key when no
247         recipients are given.  Print a NO_RECP status.
248
249 2002-03-06  Werner Koch  <wk@gnupg.org>
250
251         * server.c (cmd_listkeys, cmd_listsecretkeys): Divert to
252         (do_listkeys): new.  Add pattern parsing.
253
254         * keylist.c (gpgsm_list_keys): Handle selection pattern.
255
256         * gpgsm.c: New command --learn-card
257         * call-agent.c (learn_cb,gpgsm_agent_learn): New.
258
259         * gpgsm.c (main): Print error messages for non-implemented commands.
260
261         * base64.c (base64_reader_cb): Use case insensitive compare of the
262         Content-Type string to detect plain base-64.
263
264 2002-03-05  Werner Koch  <wk@gnupg.org>
265
266         * gpgsm.c, gpgsm.h: Add local_user.
267         * sign.c (gpgsm_get_default_cert): New.
268         (get_default_signer): Use the new function if local_user is not
269         set otherwise used that value.
270         * encrypt.c (get_default_recipient): Removed.
271         (gpgsm_encrypt): Use gpgsm_get_default_cert.
272
273         * verify.c (gpgsm_verify): Better error text for a bad signature
274         found by comparing the hashs.
275
276 2002-02-27  Werner Koch  <wk@gnupg.org>
277
278         * call-dirmngr.c, call-agent.c: Add 2 more arguments to all uses
279         of assuan_transact.
280
281 2002-02-25  Werner Koch  <wk@gnupg.org>
282
283         * server.c (option_handler): Allow to use -2 for "send all certs
284         except the root cert".
285         * sign.c (add_certificate_list): Implement it here.
286         * certpath.c (gpgsm_is_root_cert): New.
287
288 2002-02-19  Werner Koch  <wk@gnupg.org>
289
290         * certpath.c (check_cert_policy): New.
291         (gpgsm_validate_path): And call it from here.
292         * gpgsm.c (main): New options --policy-file,
293         --disable-policy-checks and --enable-policy-checks.
294         * gpgsm.h (opt): Added policy_file, no_policy_checks.
295
296 2002-02-18  Werner Koch  <wk@gnupg.org>
297
298         * certpath.c (gpgsm_validate_path): Ask the agent to add the
299         certificate into the trusted list.
300         * call-agent.c (gpgsm_agent_marktrusted): New.
301
302 2002-02-07  Werner Koch  <wk@gnupg.org>
303
304         * certlist.c (gpgsm_add_to_certlist): Check that the specified
305         name identifies a certificate unambiguously.
306         (gpgsm_find_cert): Ditto.
307
308         * server.c (cmd_listkeys): Check that the data stream is available.
309         (cmd_listsecretkeys): Ditto.
310         (has_option): New.
311         (cmd_sign): Fix ambiguousity in option recognition.
312
313         * gpgsm.c (main): Enable --logger-fd.
314
315         * encrypt.c (gpgsm_encrypt): Increased buffer size for better
316         performance.
317
318         * call-agent.c (gpgsm_agent_pksign): Check the S-Exp received from
319         the agent.
320
321         * keylist.c (list_cert_colon): Filter out control characters.
322
323 2002-02-06  Werner Koch  <wk@gnupg.org>
324
325         * decrypt.c (gpgsm_decrypt): Bail out after an decryption error.
326
327         * server.c (reset_notify): Close input and output FDs.
328         (cmd_encrypt,cmd_decrypt,cmd_verify,cmd_sign.cmd_import)
329         (cmd_genkey): Close the FDs and release the recipient list even in
330         the error case.
331
332 2002-02-01  Marcus Brinkmann  <marcus@g10code.de>
333
334         * sign.c (gpgsm_sign): Do not release certificate twice.
335
336 2002-01-29  Werner Koch  <wk@gnupg.org>
337
338         * call-agent.c (gpgsm_agent_havekey): New.
339         * keylist.c (list_cert_colon): New arg HAVE_SECRET, print "crs"
340         when we know that the secret key is available.
341         (gpgsm_list_keys): New arg MODE, check whether a secret key is
342         available.  Changed all callers.
343         * gpgsm.c (main): New command --list-secret-keys.
344         * server.c (cmd_listsecretkeys): New.
345         (cmd_listkeys): Return secret keys with "crs" record.
346
347 2002-01-28  Werner Koch  <wk@gnupg.org>
348
349         * certreqgen.c (create_request): Store the email address in the req.
350
351 2002-01-25  Werner Koch  <wk@gnupg.org>
352
353         * gpgsm.c (main): Disable core dumps.
354
355         * sign.c (add_certificate_list): New.
356         (gpgsm_sign): Add the certificates to the CMS object.
357         * certpath.c (gpgsm_walk_cert_chain): New.
358         * gpgsm.h (server_control_s): Add included_certs.
359         * gpgsm.c: Add option --include-certs.
360         (gpgsm_init_default_ctrl): New.
361         (main): Call it.
362         * server.c (gpgsm_server): Ditto.
363         (option_handler): Support --include-certs.
364
365 2002-01-23  Werner Koch  <wk@gnupg.org>
366
367         * certpath.c (gpgsm_validate_path): Print the DN of a missing issuer.
368         * certdump.c (gpgsm_dump_string): New.
369         (print_dn): Replaced by above.
370
371 2002-01-22  Werner Koch  <wk@gnupg.org>
372
373         * certpath.c (unknown_criticals): New.
374         (allowed_ca): New.
375         (gpgsm_validate_path): Check validity, CA attribute, path length
376         and unknown critical extensions.
377
378 2002-01-21  Werner Koch  <wk@gnupg.org>
379
380         * gpgsm.c: Add option --enable-crl-checks.
381
382         * call-agent.c (start_agent): Implemented socket based access.
383         * call-dirmngr.c (start_dirmngr): Ditto.
384
385 2002-01-20  Werner Koch  <wk@gnupg.org>
386
387         * server.c (option_handler): New.
388         (gpgsm_server): Register it with assuan.
389
390 2002-01-19  Werner Koch  <wk@gnupg.org>
391
392         * server.c (gpgsm_server): Use assuan_deinit_server and setup
393         assuan logging if enabled.
394         * call-agent.c (inq_ciphertext_cb): Don't show the session key in
395         an Assuan log file.
396
397         * gpgsm.c (my_strusage): Take bugreport address from configure.ac
398
399 2002-01-15  Werner Koch  <wk@gnupg.org>
400
401         * import.c (gpgsm_import): Just do a basic cert check before
402         storing it.
403         * certpath.c (gpgsm_basic_cert_check): New.
404
405         * keydb.c (keydb_store_cert): New.
406         * import.c (store_cert): Removed and change all caller to use
407         the new function.
408         * verify.c (store_cert): Ditto.
409
410         * certlist.c (gpgsm_add_to_certlist): Validate the path
411
412         * certpath.c (gpgsm_validate_path): Check the trust list.
413         * call-agent.c (gpgsm_agent_istrusted): New.
414
415 2002-01-14  Werner Koch  <wk@gnupg.org>
416
417         * call-dirmngr.c (inq_certificate): Changed for new interface semantic.
418         * certlist.c (gpgsm_find_cert): New.
419
420 2002-01-13  Werner Koch  <wk@gnupg.org>
421
422         * fingerprint.c (gpgsm_get_certid): Print the serial and not the
423         hash after the dot.
424
425 2002-01-11  Werner Koch  <wk@gnupg.org>
426
427         * call-dirmngr.c: New.
428         * certpath.c (gpgsm_validate_path): Check the CRL here.
429         * fingerprint.c (gpgsm_get_certid): New.
430         * gpgsm.c: New options --dirmngr-program and --disable-crl-checks.
431
432 2002-01-10  Werner Koch  <wk@gnupg.org>
433
434         * base64.c (gpgsm_create_writer): Allow to set the object name
435
436 2002-01-08  Werner Koch  <wk@gnupg.org>
437
438         * keydb.c (spacep): Removed because it is now in util.c
439
440         * server.c (cmd_genkey): New.
441         * certreqgen.c: New.  The parameter handling code has been taken
442         from gnupg/g10/keygen.c version 1.0.6.
443         * call-agent.c (gpgsm_agent_genkey): New.
444
445 2002-01-02  Werner Koch  <wk@gnupg.org>
446
447         * server.c (rc_to_assuan_status): Removed and changed all callers
448         to use map_to_assuan_status.
449
450 2001-12-20  Werner Koch  <wk@gnupg.org>
451
452         * verify.c (gpgsm_verify): Implemented non-detached signature
453         verification.  Add OUT_FP arg, initialize a writer and changed all
454         callers.
455         * server.c (cmd_verify): Pass an out_fp if one has been set.
456
457         * base64.c (base64_reader_cb): Try to detect an S/MIME body part.
458
459         * certdump.c (print_sexp): Renamed to gpgsm_dump_serial, made
460         global.
461         (print_time): Renamed to gpgsm_dump_time, made global.
462         (gpgsm_dump_serial): Take a real S-Expression as argument and
463         print the first item.
464         * keylist.c (list_cert_colon): Ditto.
465         * keydb.c (keydb_search_issuer_sn): Ditto.
466         * decrypt.c (print_integer_sexp): Removed and made callers 
467         use gpgsm_dump_serial.
468         * verify.c (print_time): Removed, made callers use gpgsm_dump_time.
469         
470 2001-12-19  Marcus Brinkmann  <marcus@g10code.de>
471
472         * call-agent.c (start_agent): Add new argument to assuan_pipe_connect.
473
474 2001-12-18  Werner Koch  <wk@gnupg.org>
475
476         * verify.c (print_integer_sexp): Renamed from print_integer and
477         print the serial number according to the S-Exp rules.
478         * decrypt.c (print_integer_sexp): Ditto.
479
480 2001-12-17  Werner Koch  <wk@gnupg.org>
481
482         * keylist.c (list_cert_colon): Changed for new return value of
483         get_serial.
484         * keydb.c (keydb_search_issuer_sn): Ditto.
485         * certcheck.c (gpgsm_check_cert_sig): Likewise for other S-Exp
486         returingin functions.
487         * fingerprint.c (gpgsm_get_keygrip): Ditto.
488         * encrypt.c (encrypt_dek): Ditto
489         * certcheck.c (gpgsm_check_cms_signature): Ditto
490         * decrypt.c (prepare_decryption): Ditto.
491         * call-agent.c (gpgsm_agent_pkdecrypt): Removed arg ciphertextlen,
492         use KsbaSexp type and calculate the length.
493
494         * certdump.c (print_sexp): Remaned from print_integer, changed caller.
495
496         * Makefile.am: Use the LIBGCRYPT and LIBKSBA variables.
497
498         * fingerprint.c (gpgsm_get_keygrip): Use the new
499         gcry_pk_get_keygrip to calculate the grip - note the algorithm and
500         therefore the grip values changed.
501
502 2001-12-15  Werner Koch  <wk@gnupg.org>
503
504         * certcheck.c (gpgsm_check_cms_signature): Removed the faked-key
505         kludge.
506         (gpgsm_create_cms_signature): Removed the commented fake key
507         code.  This makes the function pretty simple.
508
509         * gpgsm.c (main): Renamed the default key database to "keyring.kbx".
510
511         * decrypt.c (gpgsm_decrypt): Write STATUS_DECRYPTION_*.
512         * sign.c (gpgsm_sign): Write a STATUS_SIG_CREATED.
513
514 2001-12-14  Werner Koch  <wk@gnupg.org>
515
516         * keylist.c (list_cert_colon): Kludge to show an email address
517         encoded in the subject's DN.
518
519         * verify.c (gpgsm_verify): Add hash debug helpers
520         * sign.c (gpgsm_sign): Ditto.
521
522         * base64.c (base64_reader_cb): Reset the linelen when we need to
523         skip the line and adjusted test; I somehow forgot about DeMorgan.
524
525         * server.c (cmd_encrypt,cmd_decrypt,cmd_sign,cmd_verify) 
526         (cmd_import): Close the FDs on success.
527         (close_message_fd): New.
528         (input_notify): Setting autodetect_encoding to 0 after initializing
529         it to 0 is pretty pointless.  Easy to fix.
530
531         * gpgsm.c (main): New option --debug-wait n, so that it is
532         possible to attach gdb when used in server mode.
533
534         * sign.c (get_default_signer): Use keydb_classify_name here.
535
536 2001-12-14  Marcus Brinkmann  <marcus@g10code.de>
537
538         * call-agent.c (LINELENGTH): Removed.
539         (gpgsm_agent_pksign): Use ASSUAN_LINELENGTH, not LINELENGTH.
540         (gpgsm_agent_pkdecrypt): Likewise.
541
542 2001-12-13  Werner Koch  <wk@gnupg.org>
543
544         * keylist.c (list_cert_colon): Print alternative names of subject
545         and a few other values.
546
547 2001-12-12  Werner Koch  <wk@gnupg.org>
548
549         * gpgsm.c (main): New options --assume-{armor,base64,binary}. 
550         * base64.c (base64_reader_cb): Fixed non-autodetection mode.
551
552 2001-12-04  Werner Koch  <wk@gnupg.org>
553
554         * call-agent.c (read_from_agent): Check for inquire responses.
555         (request_reply): Handle them using a new callback arg, changed all
556         callers.
557         (gpgsm_agent_pkdecrypt): New.
558
559 2001-11-27  Werner Koch  <wk@gnupg.org>
560
561         * base64.c: New.  Changed all other functions to use this instead
562         of direct creation of ksba_reader/writer.
563         * gpgsm.c (main): Set ctrl.auto_encoding unless --no-armor is used.
564
565 2001-11-26  Werner Koch  <wk@gnupg.org>
566
567         * gpgsm.c: New option --agent-program
568         * call-agent.c (start_agent): Allow to override the default path
569         to the agent.
570
571         * keydb.c (keydb_add_resource): Create keybox
572
573         * keylist.c (gpgsm_list_keys): Fixed non-server keylisting.
574
575         * server.c (rc_to_assuan_status): New.  Use it for all commands.
576
577         
578  Copyright 2001, 2002 Free Software Foundation, Inc.
579
580  This file is free software; as a special exception the author gives
581  unlimited permission to copy and/or distribute it, with or without
582  modifications, as long as this notice is preserved.
583
584  This file is distributed in the hope that it will be useful, but
585  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
586  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.