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