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