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