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