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