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