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