* call-scd.c (start_scd): Don't test for an alive scdaemon here.
[gnupg.git] / scd / ChangeLog
1 2005-05-21  Werner Koch  <wk@g10code.com>
2
3         * scdaemon.c (handle_signal): Print thread info on SIGUSR1.
4
5 2005-05-20  Werner Koch  <wk@g10code.com>
6
7         * ccid-driver.c: Replaced macro DEBUG_T1 by a new debug level.
8         (parse_ccid_descriptor): Mark SCR335 firmware version 5.18 good.
9         (ccid_transceive): Arghhh.  The seqno is another bit in the
10         R-block than in the I block, this was wrong at one place.
11
12         * scdaemon.c: New options --debug-ccid-driver and
13         --debug-disable-ticker.
14
15         * app-openpgp.c (do_genkey, do_writekey): Factored code to check
16         for existing key out into ..
17         (does_key_exist): .. New function.
18
19 2005-05-19  Werner Koch  <wk@g10code.com>
20
21         * tlv.c (parse_sexp): New.
22
23         * command.c (cmd_writekey): New.
24         * app.c (app_writekey): New.
25         * app-common.c (app_t): Add function ptr WRITEKEY.
26         * app-openpgp.c (do_writekey): New.
27
28         * app-openpgp.c (do_readkey) [GNUPG_MAJOR_VERSION==1]: Return error.
29         * app-common.h (app_t) [GNUPG_MAJOR_VERSION==1]: Add a field to
30         store the Assuan context.
31
32 2005-05-17  Werner Koch  <wk@g10code.com>
33
34         * scdaemon.c: Removed non-pth code paths.
35         (create_socket_name, create_server_socket): New.  Taken from
36         ../agent/gpg-agent.
37         (cleanup): Changed to adjust for SOCKET_NAME now being malloced.
38         (ticker_thread): Always use pth_event_occurred; it is again
39         defined for all decent PTH versions.
40         (handle_connections): New. Based on the gpg-agent code.
41         (start_connection_thread): Ditto.
42         (ticker_thread): Removed.
43         (cleanup_sh): Removed.
44         (main): Run the handler for the pipe server in a separate
45         thread.  This replaces the old ticker thread.
46         (scd_get_socket_name): New.
47         * command.c (cmd_getinfo): New command GETINFO.
48         (scd_command_handler): Renamed argument and changed code to use an
49         already connected FD.
50
51 2005-05-15  Werner Koch  <wk@g10code.com>
52
53         * app.c, app-common.h, app-nks.c, app-p15.c, app-dinsig.c
54         * app-openpgp.c: Change most function return types from int to
55         gpg_error_t.
56         * command.c (pin_cb): Ditto.
57         * sc-copykeys.c (pincb): Ditto.
58
59         * app.c (lock_reader, unlock_reader): New.  Changed call handler
60         wrappers to make use of these functions.
61
62 2005-05-07  Werner Koch  <wk@g10code.com>
63
64         * ccid-driver.c (do_close_reader): Don't do a reset before close.
65         Some folks reported that it makes the SCR335 hang less often.
66         Look at the source on how to re-enable it.
67
68 2005-04-27  Werner Koch  <wk@g10code.com>
69
70         * app-p15.c (micardo_mse): New.
71         (do_sign): Call it.
72         * iso7816.c (iso7816_manage_security_env): Allow passing DATA as
73         NULL to indicate an empty Lc.
74         * tlv.c (find_tlv): Check that a found object fits into the
75         buffer.
76         (find_tlv_unchecked): New as replacement for the old non-checking
77         variant.
78         * app.c (select_application): Keep on using the non-checking
79         variant.
80         * app-openpgp.c (get_one_do, dump_all_do): Ditto.
81
82         
83         Removal of the old OpenSC based code.
84         
85         * app-p15.c: New.  Basic support for pkcs15 cards without OpenSC.
86         There are quite a couple of things missing but at least I can use
87         my old TCOS cards from the Aegypten-1 development for signing.
88         * app.c (select_application): Detect pkcs15 applications.
89         * Makefile.am (scdaemon_SOURCES): Removed card.c, card-common.h
90         and card-p15.c because they are now obsolete. Added app-p15.c.
91         Removed all OpenSC stuff.
92         * command.c (do_reset, open_card, cmd_serialno, cmd_learn) 
93         (cmd_readcert, cmd_readkey, cmd_pksign, cmd_pkdecrypt): Removed
94         all special cases for the old card.c based mechanisms.
95         * scdaemon.c, apdu.c: Removed all special cases for OpenSC.
96
97 2005-04-20  Werner Koch  <wk@g10code.com>
98
99         * command.c: Use GPG_ERR_LOCKED instead of EBUSY.
100
101 2005-04-14  Werner Koch  <wk@g10code.com>
102
103         * app-openpgp.c (retrieve_key_material): Rewritten.  Return a
104         proper error code.
105         (retrieve_next_token): Removed.
106         (retrieve_fpr_from_card): Rewritten to make use of DO caching and
107         to take the KEYNO as arg.
108         (get_public_key): Renamed variable for clarity.
109
110 2005-04-12  Werner Koch  <wk@g10code.com>
111
112         Basic support for several sessions.
113         
114         * command.c (scd_command_handler): Replace the primary_connection
115         stuff by a real connection list.  Release the local context on
116         exit.
117         (scd_update_reader_status_file): Update accordingly.  Send signal
118         to all connections who registered an event signal.
119         (cmd_lock, cmd_unlock, register_commands): New commands LOCK and
120         UNLOCK.
121         (cmd_setdata, cmd_pksign, cmd_pkauth, cmd_pkdecrypt, cmd_setattr) 
122         (cmd_genkey, cmd_passwd, cmd_checkpin): Return an error if reader
123         is locked.
124         (do_reset): Handle locking.
125         (open_card): Ditto.  Share the reader slot with other sessions.
126         (get_reader_slot): New.
127         (update_card_removed): New.  Use it in the TEST_CARD_REMOVAL macro.
128
129 2005-04-07  Werner Koch  <wk@g10code.com>
130
131         * app-openpgp.c (do_check_pin): Add hack to allow verification of
132         CHV3.
133         (get_public_key): Don't use gcry functions to create S-expressions.
134         (do_deinit, do_readkey, do_genkey, send_keypair_info): Adjust for
135         above change.
136
137 2005-03-29  Moritz Schulte  <moritz@g10code.com>
138
139         * app-openpgp.c (retrieve_fpr_from_card): New function.
140         (retrieve_next_token): New function.
141         (retrieve_key_material): New function.
142         (get_public_key): Implement retrival of key through expernal
143         helper (gpg) in case the openpgp card is not cooperative enough.
144
145 2005-03-16  Werner Koch  <wk@g10code.com>
146
147         * ccid-driver.c (parse_ccid_descriptor): Make SCM workaround
148         reader type specific.
149         (scan_or_find_devices): Do not check the interface subclass in the
150         SPR532 kludge, as this depends on the firmware version.
151         (ccid_get_atr): Get the Slot status first.  This solves the
152         problem with readers hanging on recent Linux 2.6.x.
153         (bulk_in): Add argument TIMEOUT and changed all callers to pass an
154         appropriate one.  Change the standard timeout from 10 to 5 seconds.
155         (ccid_slot_status): Add a retry code with an initial short timeout.
156         (do_close_reader): Do an usb_reset before closing the reader.
157
158 2005-02-25  Werner Koch  <wk@g10code.com>
159
160         * app-openpgp.c (get_public_key): Make sure not to return negative
161         numbers.
162         (do_sign): Allow passing of indata with algorithm prefix.
163         (do_auth): Allow OPENPGP.3 as an alternative ID.
164
165         * app.c (app_getattr): Return just the S/N but not the timestamp.
166
167 2005-02-24  Werner Koch  <wk@g10code.com>
168
169         * app.c (app_getattr): Return APPTYPE or SERIALNO type even if the
170         application does dot support the getattr call.
171
172         * app-openpgp.c (get_one_do): Never try to get a non cacheable
173         object from the cache.
174         (get_one_do): Add new arg to return an error code.  Changed all
175         callers.
176         (do_getattr): Let it return a proper error code.
177
178         * app.c (select_application): Return an error code and the
179         application context in an new arg.
180         * command.c (open_card): Adjusted for that.  Don't use the
181         fallback if no card is present.  Return an error if the card has
182         been removed without a reset.
183         (do_reset, cmd_serialno): Clear that error flag.
184         (TEST_CARD_REMOVAL): New. Use it with all command handlers.
185         (scd_update_reader_status_file): Set the error flag on all changes.
186
187         * scdaemon.c (ticker_thread): Termintate if a shutdown is pending.
188
189         * apdu.c: Added some PCSC error codes.
190         (pcsc_error_to_sw): New.
191         (reset_pcsc_reader, pcsc_get_status, pcsc_send_apdu) 
192         (open_pcsc_reader): Do proper error code mapping.
193
194 2005-03-16  Werner Koch  <wk@g10code.com>
195
196         * ccid-driver.c (parse_ccid_descriptor): Make SCM workaround
197         reader type specific.
198         (scan_or_find_devices): Do not check the interface subclass in the
199         SPR532 kludge, as this depends on the firmware version.
200         (ccid_get_atr): Get the Slot status first.  This solves the
201         problem with readers hanging on recent Linux 2.6.x.
202
203 2005-02-22  Werner Koch  <wk@g10code.com>
204
205         * app-openpgp.c (app_local_s): New field PK.
206         (do_deinit, do_genkey, app_openpgp_storekey): Clear it.
207         (get_public_key, send_keypair_info): New.
208         (do_learn_status): Send KEYPAIR info
209
210         * app-common.h (app_ctx_t): Add function pointer READKEY.
211         * app.c (app_readkey): New.
212         * command.c (cmd_readkey): Use READKEY function if possible.
213
214 2005-01-26  Werner Koch  <wk@g10code.com>
215
216         * ccid-driver.c (parse_ccid_descriptor): Need the CSM workaround
217         also for newer firmware versions.  Need to get a list of fixed
218         firmware versions and use that.
219
220 2005-01-25  Werner Koch  <wk@g10code.com>
221
222         * apdu.c (apdu_send_le, apdu_send_direct): Fix some compiler
223         warnings.
224
225         * app-openpgp.c (get_cached_data): New arg GET_IMMEDIATE to bypass
226         the cache.  Changed all callers.
227         (get_one_do): Bypass the cache if the value would have been read
228         directly for v1.1 cards.It makes things a bit slower but obnly for
229         1.0 cards and there are not that many cards out in the wild.  This
230         is required to fix a caching bug when generating new keys; as a
231         side effect of the retrieval of the the C4 DO from the 6E DO the
232         cached fingerprint will get updated to the old value and later
233         when signing the generated key the checking of the fingerprint
234         fails because it won't match the new one.  Thanks to Moritz for
235         analyzing this problem.
236         (verify_chv3): Removed the CHV status reread logic because we
237         won't cache the C4 DO anymore.
238
239 2004-12-28  Werner Koch  <wk@g10code.com>
240
241         * ccid-driver.c (find_endpoint): New.
242         (scan_or_find_devices): Add new args to return endpoint info and
243         interface number.
244         (ccid_open_reader, ccid_shutdown_reader): Take care of these new
245         args.
246         (bulk_in, bulk_out): Use the correct endpoints.
247         (ccid_transceive_apdu_level): New.
248         (ccid_transceive): Divert to above.
249         (parse_ccid_descriptor): Allow APDU level exchange mode.
250         (do_close_reader): Pass the interface number to usb_release_interface.
251
252 2004-12-21  Werner Koch  <wk@g10code.com>
253
254         * scdaemon.c (main): Use default_homedir().
255
256 2004-12-18  Werner Koch  <wk@g10code.com>
257
258         * scdaemon.c (main) [W32]: Remove special Pth initialize..
259
260         * scdaemon.h (map_assuan_err): Define in terms of
261         map_assuan_err_with_source.
262
263 2004-12-15  Werner Koch  <wk@g10code.com>
264
265         * scdaemon.c [W32]: Various hacks to make it run under W32.
266
267         * command.c (scd_update_reader_status_file) [W32]: Don't use kill.
268
269         * apdu.c [W32]: Disable use of pcsc_wrapper.
270
271         * Makefile.am (scdaemon_LDADD): Reorder libs.
272         (sc_copykeys_LDADD): Add libassuan because it is needed for W32. 
273
274 2004-12-06  Werner Koch  <wk@g10code.com>
275
276         * Makefile.am (pkglib_PROGRAMS): Build only for W32.
277
278 2004-10-22  Werner Koch  <wk@g10code.com>
279
280         * app-openpgp.c (verify_chv3): The minium length for CHV3 is
281         8. Changed string to match the other ones.
282
283 2004-10-21  Werner Koch  <wk@g10code.com>
284
285         * app-openpgp.c (do_sign): Replace asprintf by direct allocation.
286         This avoids problems with missing vasprintf implementations in
287         gnupg 1.4.
288
289         * app-common.h (app_openpgp_storekey: Add prototype. 
290
291 2004-10-20  Werner Koch  <wk@g10code.com>
292
293         * sc-investigate: Removed.
294         * Makefile.am (sc_investigate): Removed.
295         
296         * pcsc-wrapper.c (load_pcsc_driver): Load get_status_change func.
297         (handle_open): Succeed even without a present card.
298         (handle_status, handle_reset): New.
299         
300         * apdu.c (apdu_open_reader): Load pcsc_get_status_change fucntion.
301         (pcsc_get_status): Implemented.
302         (reset_pcsc_reader): Implemented.
303         (open_pcsc_reader): Succeed even with no card inserted.
304         (open_ccid_reader): Set LAST_STATUS.
305
306         * iso7816.c (iso7816_select_application): Always use 0 for P1.
307
308 2004-10-18  Werner Koch  <wk@g10code.com>
309
310         * ccid-driver.c (ccid_get_atr): Reset T=1 state info.
311
312 2004-10-14  Werner Koch  <wk@g10code.com>
313
314         * app-openpgp.c (parse_login_data): New. 
315         (app_select_openpgp): Call it.
316         (do_setattr): Reparse it after change.
317
318 2004-10-06  Werner Koch  <wk@g10code.de>
319
320         * ccid-driver.c (ccid_open_reader): Store the vendor ID.
321         (ccid_transceive_secure): New.
322         (parse_ccid_descriptor): Workaround for an SCM reader problem.
323
324 2004-10-04  Werner Koch  <wk@g10code.de>
325
326         * ccid-driver.c (send_escape_cmd): New.
327
328 2004-09-30  Werner Koch  <wk@g10code.com>
329
330         * Makefile.am: Adjusted for gettext 0.14.
331
332         * app-openpgp.c (do_sign): Add the error string to the verify
333         failed messages.
334
335 2004-09-27  Werner Koch  <wk@g10code.com>
336
337         From gnupg 1.3
338
339         * app-openpgp.c: Made all strings translatable.
340         (verify_chv3) [GNUPG_MAJOR_VERSION]: Make opt.allow_admin
341         available for use in gnupg 2. 
342         (verify_chv3): Reimplemented countdown showing to use only
343         functions from this module.  Flush the CVH status cache on a
344         successful read.
345         (get_one_do): Hack to bypass the cache for cards versions > 1.0.
346         (store_fpr): Store the creation date for card version > 1.0.
347
348         * app-openpgp.c (app_openpgp_storekey): Call flush_cache.
349         (get_cached_data): Move local data initialization to ..
350         (app_select_openpgp): .. here. Read some flags for later use.
351         (do_getattr): New read-only attribute EXTCAP.
352         
353         * apdu.c (open_pcsc_reader): Do not print empty reader string.
354
355         * ccid-driver.c (do_close_reader): Factored some code out from ...
356         (ccid_close_reader): ..here.
357         (ccid_shutdown_reader): New.
358
359         * apdu.c (apdu_shutdown_reader): New.
360         (shutdown_ccid_reader): New.
361
362         * apdu.c (open_ccid_reader): New arg PORTSTR.  Pass it to
363         ccid_open_reader.
364         (apdu_open_reader): Pass portstr to open_ccid_reader.
365         (apdu_open_reader): No fallback if a full CCID reader id has been
366         given.
367
368         * ccid-driver.c (ccid_get_reader_list): New.
369         (ccid_open_reader): Changed API to take a string for the reader.
370         Removed al the cruft for the libusb development vesion which seems
371         not to be maintained anymore and there are no packages anyway.
372         The stable library works just fine.
373         (struct ccid_reader_id_s): Deleted and replaced everywhere by a
374         simple string.
375         (usb_get_string_simple): Removed.
376         (bulk_in): Do valgrind hack here and not just everywhere.
377
378         * ccid-driver.c (read_device_info): Removed.
379         (make_reader_id, scan_or_find_devices): New.
380         (ccid_open_reader): Simplified by make use of the new functions.
381         (ccid_set_debug_level): New.  Changed the macros to make use of
382         it.  It has turned out that it is often useful to enable debugging
383         at runtime so I added this option.
384
385         From gnupg 1.3 - David Shaw  <dshaw@jabberwocky.com>
386
387         * app-openpgp.c (verify_chv3): Show a countdown of how many wrong
388         admin PINs can be entered before the card is locked.
389
390         * app-openpgp.c (get_cached_data): Avoid mallocing zero since it
391         breaks us when using --enable-m-guard.
392
393         * ccid-driver.c (usb_get_string_simple): Replacement function to
394         work with older libusb.
395
396         * ccid-driver.c (read_device_info): Fix segfault when usb device
397         is not accessible.
398         (ccid_open_reader): Allow working with an even older version of
399         libusb (usb_busses global instead of usb_get_busses()).
400
401 2004-09-11  Werner Koch  <wk@g10code.com>
402
403         * app-openpgp.c (app_select_openpgp): Its app_munge_serialno and
404         not app_number_serialno.
405
406 2004-08-20  Werner Koch  <wk@g10code.de>
407
408         * app.c (select_application): Fixed serial number extraction and
409         added the BMI card workaround.
410         (app_munge_serialno): New.
411         * app-openpgp.c (app_select_openpgp): Try munging serialno.
412
413 2004-08-05  Werner Koch  <wk@g10code.de>
414
415         * scdaemon.c (main): New option --disable-application.
416         * app.c (is_app_allowed): New.
417         (select_application): Use it to check for disabled applications.
418
419         * ccid-driver.h (CCID_DRIVER_ERR_ABORTED): New.
420         * ccid-driver.c (ccid_open_reader): Support the stable 0.1 version
421         of libusb.
422         (ccid_get_atr): Handle short messages.
423
424         * apdu.c (my_rapdu_get_status): Implemented.
425
426 2004-07-27  Moritz Schulte  <moritz@g10code.com>
427
428         * apdu.c: Include <signal.h>.
429
430         * Makefile.am: Use @DL_LIBS@ instead of -ldl.
431
432 2004-07-22  Werner Koch  <wk@g10code.de>
433
434         * Makefile.am: Make OpenSC lib link after libgcrypt. Do not link
435         to pth.
436         * apdu.c: Don't use Pth if we use OpenSC.
437         * sc-investigate.c, scdaemon.c: Disable use of pth if OpenSC is used. 
438
439         * scdaemon.c (main): Bumbed thread stack size up to 512k.
440
441 2004-07-16  Werner Koch  <wk@gnupg.org>
442
443         * apdu.c (reader_table_s):  Add function pointers for the backends.
444         (apdu_close_reader, apdu_get_status, apdu_activate) 
445         (send_apdu): Make use of them.
446         (new_reader_slot): Intialize them to NULL.
447         (dump_ccid_reader_status, ct_dump_reader_status): New.
448         (dump_pcsc_reader_status): New.
449         (open_ct_reader, open_pcsc_reader, open_ccid_reader) 
450         (open_osc_reader, open_rapdu_reader): Intialize function pointers.
451         (ct_activate_card, ct_send_apdu, pcsc_send_apdu, osc_send_apdu) 
452         (error_string): Removed.  Replaced by apdu_strerror.
453         (get_ccid_error_string): Removed.
454         (ct_activate_card): Remove the unused loop.
455         (reset_ct_reader): Implemented.
456         (ct_send_apdu): Activate the card if not yet done.
457         (pcsc_send_apdu): Ditto.
458
459 2004-07-15  Werner Koch  <wk@gnupg.org>
460
461         * ccid-driver.h: Add error codes.
462         * ccid-driver.c: Implement more or less proper error codes all
463         over the place.
464
465         * apdu.c (apdu_send_direct): New.
466         (get_ccid_error_string): Add some error code mappings.
467         (send_apdu): Pass error codes along for drivers already supporting
468         them.
469         (host_sw_string): New.
470         (get_ccid_error_string): Use above.
471         (send_apdu_ccid): Reset the reader if it has not yet been done.
472         (open_ccid_reader): Don't care if the ATR can't be read.
473         (apdu_activate_card): New.
474         (apdu_strerror): New.
475         (dump_reader_status): Only enable it with opt.VERBOSE.
476         * iso7816.c (map_sw): Add mappings for the new error codes.
477
478 2004-07-02  Werner Koch  <wk@gnupg.org>
479
480         * apdu.c (open_ct_reader, open_pcsc_reader, open_ccid_reader)
481         (reset_ccid_reader, open_osc_reader): Call dump_reader_status only
482         in verbose mode.
483
484 2004-07-01  Werner Koch  <wk@gnupg.org>
485
486         * sc-investigate.c: Initialize Pth which is now required.
487         (interactive_shell): New command "readpk".
488
489         * app-openpgp.c (do_getattr): Fix for sending CA-FPR.
490
491 2004-06-30  Werner Koch  <wk@gnupg.org>
492
493         * app-openpgp.c (app_openpgp_readkey): Fixed check for valid
494         exponent.
495
496 2004-06-18  Werner Koch  <wk@g10code.com>
497
498         * sc-investigate.c (my_read_line): Renamed from read_line.
499
500 2004-06-16  Werner Koch  <wk@gnupg.org>
501
502         * apdu.c (osc_get_status): Fixed type in function name. Noted by
503         Axel Thimm.  Yes, I didn't tested it with OpenSC :-(.
504
505 2004-04-28  Werner Koch  <wk@gnupg.org>
506
507         * app-openpgp.c (do_setattr): Sync FORCE_CHV1.
508
509 2004-04-27  Werner Koch  <wk@gnupg.org>
510
511         * app-common.h: Do not include ksba.h for gnupg 1.
512
513 2004-04-26  Werner Koch  <wk@gnupg.org>
514
515         * app-common.h: New members FNC.DEINIT and APP_LOCAL.
516         * app.c (release_application): Call new deconstructor.
517         * app-openpgp.c (do_deinit): New.
518         (get_cached_data, flush_cache_item, flush_cache_after_error)
519         (flush_cache): New.
520         (get_one_do): Replaced arg SLOT by APP.  Make used of cached data.
521         (verify_chv2, verify_chv3): Flush some cache item after error.
522         (do_change_pin): Ditto.
523         (do_sign): Ditto.
524         (do_setattr): Flush cache item.
525         (do_genkey): Flush the entire cache.
526         (compare_fingerprint): Use cached data.
527
528         * scdaemon.c (main): Do the last change the usual way. This is so
529         that we can easily test for versioned config files above.
530
531 2004-04-26  Marcus Brinkmann  <marcus@g10code.de>
532
533         * scdaemon.c (main): For now, always print default filename for
534         --gpgconf-list, and never /dev/null.
535
536 2004-04-21  Werner Koch  <wk@gnupg.org>
537
538         * command.c (scd_update_reader_status_file): Send a signal back to
539         the client.
540         (option_handler): Parse the new event-signal option.
541
542         * scdaemon.c (handle_signal): Do not use SIGUSR{1,2} anymore for
543         changing the verbosity.
544
545 2004-04-20  Werner Koch  <wk@gnupg.org>
546
547         * command.c (scd_update_reader_status_file): Write status files.
548
549         * app-help.c (app_help_read_length_of_cert): Fixed calculation of
550         R_CERTOFF.
551
552         * pcsc-wrapper.c: New.
553         * Makefile.am (pkglib_PROGRAMS): Install it here.
554         * apdu.c (writen, readn): New.
555         (open_pcsc_reader, pcsc_send_apdu, close_pcsc_reader): Use the
556         pcsc-wrapper if we are using Pth.
557         (apdu_send_le): Reinitialize RESULTLEN.  Handle SW_EOF_REACHED
558         like SW_SUCCESS.
559
560 2004-04-19  Werner Koch  <wk@gnupg.org>
561
562         * ccid-driver.c (parse_ccid_descriptor): Store some of the reader
563         features away.  New arg HANDLE
564         (read_device_info): New arg HANDLE. Changed caller.
565         (bulk_in): Handle time extension requests.
566         (ccid_get_atr): Setup parameters and the IFSD.
567         (compute_edc): New. Factored out code.
568         (ccid_transceive): Use default NADs when required.
569
570 2004-04-14  Werner Koch  <wk@gnupg.org>
571
572         * scdaemon.h (server_control_s): Add member READER_SLOT.
573         * scdaemon.c (scd_init_default_ctrl): Initialize READER_SLOT to -1.
574         * command.c (open_card): Reuse an open slot.
575         (reset_notify): Just reset the slot if supported by the reader.
576         (do_reset): Factored code from above out.
577         (scd_command_handler): Use it for cleanup.
578
579         * apdu.h: New pseudo stati SW_HOST_NOT_SUPPORTED,
580         SW_HOST_LOCKING_FAILED and SW_HOST_BUSY.
581         * iso7816.c (map_sw): Map it.
582         
583         * ccid-driver.c (ccid_slot_status): Add arg STATUSBITS.
584         * apdu.c (apdu_get_status): New.
585         (ct_get_status, pcsc_get_status, ocsc_get_status): New stubs.
586         (get_status_ccid): New.
587         (apdu_reset): New.
588         (reset_ct_reader, reset_pcsc_reader, reset_osc_reader): New stubs.
589         (reset_ccid_reader): New.
590         (apdu_enum_reader): New.
591         
592         * apdu.c (lock_slot, trylock_slot, unlock_slot): New helpers.
593         (new_reader_slot) [USE_GNU_PTH]: Init mutex.
594         (apdu_reset, apdu_get_status, apdu_send_le): Run functions
595         in locked mode.
596
597         * command.c (scd_update_reader_status_file): New.
598         * scdaemon.c (handle_tick): Call it.
599
600 2004-04-13  Werner Koch  <wk@gnupg.org>
601
602         * scdaemon.c: Convert to a Pth application.
603         (handle_signal, ticker_thread, handle_tick): New.
604         (main): Fire up the ticker thread in server mode.
605
606 2004-03-23  Werner Koch  <wk@gnupg.org>
607
608         * scdaemon.c (main) <gpgconf_list>: Fixed output for pcsc_driver.
609
610 2004-03-17  Werner Koch  <wk@gnupg.org>
611
612         * tlv.c (parse_ber_header): Do not check for tag overflow - it
613         does not make sense.  Simplified the check for length overflow.
614
615         * scdaemon.c (main) <gpgconf>: Fixed default value quoting.
616
617 2004-03-16  Werner Koch  <wk@gnupg.org>
618
619         * app-dinsig.c: Implemented. Based on app-nks.c and card-dinsig.c
620         * app-nks.c (get_length_of_cert): Removed.
621         * app-help.c: New.
622         (app_help_read_length_of_cert): New.  Code taken from above.  New
623         optional arg R_CERTOFF.
624
625         * card-dinsig.c: Removed.
626         * card.c (card_get_serial_and_stamp): Do not bind to the old and
627         never finsiged card-dinsig.c.
628
629         * iso7816.c (iso7816_read_binary): Allow for an NMAX > 254.
630
631 2004-03-11  Werner Koch  <wk@gnupg.org>
632
633         * scdaemon.h (out_of_core): Removed.  Replaced callers by standard
634         gpg_error function.
635
636         * apdu.c, iso7816.c, ccid-driver.c [GNUPG_SCD_MAIN_HEADER]: Allow
637         to include a header defined by the compiler.  This helps us to
638         reuse the source in other software.
639
640 2004-03-10  Werner Koch  <wk@gnupg.org>
641
642         * iso7816.c (iso7816_read_record): New arg SHORT_EF.  Changed all
643         callers.
644
645 2004-02-18  Werner Koch  <wk@gnupg.org>
646
647         * sc-investigate.c (main): Setup the used character set.
648         * scdaemon.c (main): Ditto.
649
650         * scdaemon.c (set_debug): New.  Add option --debug-level.
651         (main): Add option --gpgconf-list.
652
653 2004-02-12  Werner Koch  <wk@gnupg.org>
654
655         * Makefile.am: Include cmacros.am for common flags.
656
657 2004-01-29  Werner Koch  <wk@gnupg.org>
658
659         * command.c (reset_notify): Release the application context and
660         close the reader.
661
662 2004-01-28  Werner Koch  <wk@gnupg.org>
663
664         * iso7816.c (iso7816_manage_security_env): New.
665         (iso7816_decipher): Add PADIND argument.
666
667 2004-01-27  Werner Koch  <wk@gnupg.org>
668
669         * command.c (cmd_readcert, cmd_readkey): Work on a copy of LINE.
670
671         * app-common.h (app_ctx_s): Added readcert field.
672         * app.c (app_readcert): New.
673         * tlv.c (parse_ber_header): Added; taken from libksba.
674
675 2004-01-26  Werner Koch  <wk@gnupg.org>
676
677         * card.c (map_sc_err): Use SCD as the error source.
678
679         * command.c (open_card): ADD arg NAME to allow requesting a
680         specific application.  Changed all callers.
681         (cmd_serialno): Allow optional argument to select the desired
682         application.
683
684         * app-nks.c: New. 
685
686         * scdaemon.h (opt): Add READER_PORT.
687         * scdaemon.c (main): Set it here.
688         * app.c (app_set_default_reader_port): Removed.
689         (select_application): Add NAME arg and figure out a
690         default serial number from the GDO. Add SLOT arg and remove all
691         reader management.
692         (release_application): New.
693         (app_write_learn_status): Output an APPTYPE status line.
694         * command.c (open_card): Adapt for select_application change.
695         * app-openpgp.c (app_select_openpgp): Removed SN and SNLEN args
696         and set it directly.  Changed all callers.
697
698 2004-01-25  Werner Koch  <wk@gnupg.org>
699
700         * iso7816.c (iso7816_select_application): P1 kludge for OpenPGP
701         card.
702         * app-openpgp.c (find_tlv): Factor out this function to ..
703         * tlv.c, tlv.h: .. new.
704
705         * scdaemon.h: Introduced app_t and ctrl_t as the new types for APP
706         and CTRL.
707
708 2004-01-21  Werner Koch  <wk@gnupg.org>
709
710         * apdu.c (apdu_send_le): Treat SW_EOF_REACHED as a warning.
711
712 2004-01-20  Werner Koch  <wk@gnupg.org>
713
714         * iso7816.c (iso7816_read_binary): New.
715         (iso7816_select_file): New.
716         (iso7816_list_directory): New.
717
718         * sc-investigate.c: Add option -i.
719         (select_app, read_line, interactive_shell): New.
720
721 2004-01-16  Werner Koch  <wk@gnupg.org>
722
723         * apdu.h: Add SW_FILE_NOT_FOUND.
724         * iso7816.c (map_sw): Map it to GPG_ERR_ENOENT.
725         * iso7816.c (iso7816_select_file): New.
726
727         * app-dinsig.c: New file w/o any real code yet.
728         * Makefile.am (scdaemon_SOURCES,sc_investigate_SOURCES): Add file.
729
730         * sc-investigate.c: Add option --disable-ccid.
731
732 2003-12-19  Werner Koch  <wk@gnupg.org>
733
734         * apdu.c (apdu_send_le): Send a get_response with the indicated
735         length and not the 64 bytes we used for testing.
736
737         * app-openpgp.c (verify_chv2, verify_chv3, do_sign): Check the
738         minimum length of the passphrase, so that we don't need to
739         decrement the retry counter.
740
741 2003-12-17  Werner Koch  <wk@gnupg.org>
742
743         * card-p15.c (p15_enum_keypairs): Replaced KRC by RC.
744         * card-dinsig.c (dinsig_enum_keypairs): Ditto.
745
746 2003-12-16  Werner Koch  <wk@gnupg.org>
747
748         * scdaemon.c (main): Set the prefixes for assuan logging.
749
750 2003-11-17  Werner Koch  <wk@gnupg.org>
751
752         * scdaemon.c, scdaemon.h: New options --allow-admin and --deny-admin.
753         * app-openpgp.c (verify_chv3): Check it here.
754
755 2003-11-12  Werner Koch  <wk@gnupg.org>
756
757         Adjusted for API changes in Libksba.
758
759 2003-10-30  Werner Koch  <wk@gnupg.org>
760
761         * apdu.c (close_ct_reader, close_pcsc_reader): Implemented.
762         (get_ccid_error_string): New.  Not very useful messages, though.
763
764 2003-10-25  Werner Koch  <wk@gnupg.org>
765
766         * ccid-driver.c (ccid_open_reader): Return an error if no USB
767         devices are found.
768
769         * command.c (cmd_genkey, cmd_passwd): Fixed faulty use of
770         !spacep().
771
772         * apdu.c (apdu_open_reader): Hacks for PC/SC under Windows.
773
774 2003-10-20  Werner Koch  <wk@gnupg.org>
775
776         * command.c (cmd_checkpin): New.
777         (register_commands): Add command CHECKPIN.
778         * app.c (app_check_pin): New.
779         * app-openpgp.c (check_against_given_fingerprint): New. Factored
780         out that code elsewhere.
781         (do_check_pin): New.
782
783 2003-10-10  Werner Koch  <wk@gnupg.org>
784
785         * ccid-driver.c (ccid_close_reader): New.
786
787         * apdu.c (close_ccid_reader, close_ct_reader, close_csc_reader)
788         (close_osc_reader, apdu_close_reader): New.  Not all are properly
789         implemented yet.
790
791 2003-10-09  Werner Koch  <wk@gnupg.org>
792
793         * ccid-driver.c (ccid_transceive): Add T=1 chaining for sending.
794
795 2003-10-08  Werner Koch  <wk@gnupg.org>
796
797         * app-openpgp.c (do_getattr): Support SERIALNO and AID.
798
799 2003-10-01  Werner Koch  <wk@gnupg.org>
800
801         * ccid-driver.c: Detect GnuPG 1.3 and include appropriate files.
802         * apdu.c: Ditto.
803         * app-openpgp.c: Ditto.
804         * iso7816.c: Ditto.
805         (generate_keypair): Renamed to ..
806         (do_generate_keypair): .. this.
807         * app-common.h [GNUPG_MAJOR_VERSION]: New.
808         * iso7816.h [GNUPG_MAJOR_VERSION]: Include cardglue.h
809
810 2003-09-30  Werner Koch  <wk@gnupg.org>
811
812         * command.c (cmd_getattr): New command GETATTR.
813         * app.c (app_setattr): New.
814         (do_getattr): New.
815         (do_learn_status): Reimplemented in terms of do_getattr.
816
817         * app-openpgp.c (do_change_pin): Make sure CVH1 and CHV2 are
818         always synced.
819         (verify_chv2, verify_chv3): New. Factored out common code.
820         (do_setattr, do_sign, do_auth, do_decipher): Change the names of
821         the prompts to match that we have only 2 different PINs.
822         (app_select_openpgp): Check whether the card enforced CHV1.
823         (convert_sig_counter_value): New. Factor out code from
824         get_sig_counter.
825
826 2003-09-28  Werner Koch  <wk@gnupg.org>
827
828         * app-openpgp.c (dump_all_do): Use gpg_err_code and not gpg_error.
829
830 2003-09-19  Werner Koch  <wk@gnupg.org>
831
832         * ccid-driver.c (parse_ccid_descriptor): New.
833         (read_device_info): New.
834         (ccid_open_reader): Check that the device has all required features.
835
836 2003-09-06  Werner Koch  <wk@gnupg.org>
837
838         * scdaemon.c (main): --pcsc-driver again defaults to pcsclite.
839         David Corcoran was so kind to remove the GPL incompatible
840         advertisng clause from pcsclite.
841         * apdu.c (apdu_open_reader): Actually make pcsc-driver option work.
842
843 2003-09-05  Werner Koch  <wk@gnupg.org>
844
845         * ccid-driver.c: More work, data can now actually be retrieved.
846         * ccid-driver.c, ccid-driver.h: Alternativley allow use under BSD
847         conditions.
848
849 2003-09-02  Werner Koch  <wk@gnupg.org>
850
851         * scdaemon.c, scdaemon.h: New option --pcsc-ccid.
852         * ccid-driver.c, ccid-driver.h: New but far from being useful.
853         * Makefile.am: Add above.
854         * apdu.c: Add support for that ccid driver.
855         
856 2003-08-26  Timo Schulz  <twoaday@freakmail.de>
857
858         * apdu.c (new_reader_slot): Only set 'is_osc' when OpenSC
859         is used.
860         
861 2003-08-25  Werner Koch  <wk@gnupg.org>
862
863         * command.c (cmd_setattr): Use a copy of LINE.
864         (cmd_genkey): Use a copy of KEYNO.
865         (cmd_passwd): Use a copy of CHVNOSTR.
866         (cmd_pksign, cmd_pkauth, cmd_pkdecrypt): s/strdup/xtrystrdup/.
867
868 2003-08-19  Werner Koch  <wk@gnupg.org>
869
870         * scdaemon.c, scdaemon.h: New option --pcsc-driver.
871         * apdu.c (apdu_open_reader): Use that option here instead of a
872         hardcoded one.
873
874 2003-08-18  Werner Koch  <wk@gnupg.org>
875
876         * Makefile.am: Add OPENSC_LIBS to all programs. 
877
878         * scdaemon.c, scdaemon.h: New option --disable-opensc.
879         * card.c (card_open): Implement it.
880         * apdu.c (open_osc_reader, osc_send_apdu): New.
881         (apdu_open_reader) [HAVE_OPENSC]: Use the opensc driver if not
882         disabled.
883         (error_string) [HAVE_OPENSC]: Use sc_strerror.
884         (send_apdu) [HAVE_OPENSC]: Call osc_apdu_send.
885
886         * card-p15.c (p15_enum_keypairs, p15_prepare_key): Adjusted for
887         libgpg-error.
888
889 2003-08-14  Timo Schulz  <twoaday@freakmail.de>
890
891         * apdu.c (ct_activate_card): Change the code a little to avoid
892         problems with other readers.
893         * Always use 'dynload.h' instead of 'dlfcn.h'.
894
895 2003-08-05  Werner Koch  <wk@gnupg.org>
896
897         * app-openpgp.c (dump_all_do): Don't analyze constructed DOs after
898         an error.
899
900 2003-08-04  Werner Koch  <wk@gnupg.org>
901
902         * app.c (app_set_default_reader_port): New.
903         (select_application): Use it here.
904         * scdaemon.c (main): and here.
905         * sc-copykeys.c: --reader-port does now take a string.
906         * sc-investigate.c, scdaemon.c: Ditto.
907         * apdu.c (apdu_open_reader): Ditto.  Load pcsclite if no ctapi
908         driver is configured.  Always include code for ctapi.
909         (new_reader_slot): Don't test for already used ports and remove
910         port arg.
911         (open_pcsc_reader, pcsc_send_apdu, pcsc_error_string): New.
912         (apdu_send_le): Changed RC to long to cope with PC/SC.
913
914         * scdaemon.c, scdaemon.h: New option --ctapi-driver.
915         * sc-investigate.c, sc-copykeys.c: Ditto.
916         
917 2003-07-31  Werner Koch  <wk@gnupg.org>
918
919         * Makefile.am (scdaemon_LDADD): Added INTLLIBS.
920
921 2003-07-28  Werner Koch  <wk@gnupg.org>
922
923         * app-openpgp.c (do_setattr): Change implementation.  Allow all
924         useful DOs.
925
926 2003-07-27  Werner Koch  <wk@gnupg.org>
927
928         Adjusted for gcry_mpi_print and gcry_mpi_scan API change.
929
930 2003-07-24  Werner Koch  <wk@gnupg.org>
931
932         * app-openpgp.c (do_learn_status): Print more status information.
933         (app_select_openpgp): Store the card version.
934         (store_fpr): Add argument card_version and fix DOs for old cards.
935         (app_openpgp_storekey): Likewise.
936
937 2003-07-23  Werner Koch  <wk@gnupg.org>
938
939         * command.c (cmd_pkauth): New.
940         (cmd_setdata): Check whether data was given at all to avoid
941         passing 0 to malloc.
942
943         * app.c (app_auth): New.
944         * app-openpgp.c (do_auth): New.
945
946 2003-07-22  Werner Koch  <wk@gnupg.org>
947
948         * command.c (cmd_passwd): New.
949         * app.c (app_change_pin): New.
950         * app-openpgp.c (do_change_pin): New.
951         * iso7816.c (iso7816_reset_retry_counter): Implemented.
952
953         * sc-investigate.c (main): New option --gen-random.
954         * iso7816.c (iso7816_get_challenge): Don't create APDUs with a
955         length larger than 255.
956
957 2003-07-17  Werner Koch  <wk@gnupg.org>
958
959         * command.c (cmd_random): New command RANDOM.
960
961         * iso7816.c (map_sw): New. Use it in this file to return
962         meaningful error messages.  Changed all public fucntions to return
963         a gpg_error_t.
964         (iso7816_change_reference_data): New.
965         * apdu.c (apdu_open_reader): Use faked status words for soem
966         system errors.
967
968 2003-07-16  Werner Koch  <wk@gnupg.org>
969
970         * apdu.c (apdu_send_simple): Use apdu_send_le so that we can
971         specify not to send Le as it should be.
972
973 2003-07-15  Werner Koch  <wk@gnupg.org>
974
975         * Makefile.am: Add sc-copykeys program.
976         * sc-copykeys.c: New.
977         * app-openpgp.c (app_openpgp_storekey): New.
978         (app_openpgp_cardinfo): New.
979         (count_bits): New.
980         (store_fpr): And use it here to get the actual length in bit.
981
982 2003-07-03  Werner Koch  <wk@gnupg.org>
983
984         * app-openpgp.c (do_setattr): Add setting of the URL.
985         (app_select_openpgp): Dump card data only in very verbose mode.
986         (do_decipher): New.
987
988 2003-07-02  Werner Koch  <wk@gnupg.org>
989
990         * app-openpgp.c (get_sig_counter): New.
991         (do_sign): Print the signature counter and enable the PIN callback.
992         (do_genkey): Implement the PIN callback. 
993
994 2003-07-01  Werner Koch  <wk@gnupg.org>
995
996         * app-openpgp.c (store_fpr): Fixed fingerprint calculation.
997
998 2003-06-26  Werner Koch  <wk@gnupg.org>
999
1000         * app-openpgp.c (find_tlv): Fixed length header parsing.
1001
1002         * app.c (app_genkey): New.
1003         * command.c (cmd_genkey): New.
1004
1005 2003-06-25  Werner Koch  <wk@gnupg.org>
1006
1007         * command.c (percent_plus_unescape): New.
1008         (cmd_setattr): New.
1009
1010 2003-06-24  Werner Koch  <wk@gnupg.org>
1011
1012         * command.c (send_status_info): New.
1013
1014         * app-openpgp.c (app_select_openpgp): Replace SLOT arg by APP arg
1015         and setup the function pointers in APP on success. Changed callers.
1016         * app.c: New.
1017         * app-common.h: New.
1018         * scdaemon.h (APP): New type to handle applications.
1019         (server_control_s): Add an APP context field.
1020
1021         * command.c (cmd_serialno): Handle applications.
1022         (cmd_pksign): Ditto.
1023         (cmd_pkdecrypt): Ditto.
1024         (reset_notify): Ditto.
1025         (cmd_learn): For now return error for application contexts.
1026         (cmd_readcert): Ditto.
1027         (cmd_readkey): Ditto.
1028
1029 2003-06-04  Werner Koch  <wk@gnupg.org>
1030
1031         * card.c (map_sc_err): Renamed gpg_make_err to gpg_err_make.
1032
1033         Renamed error codes from INVALID to INV and removed _ERROR suffixes.
1034
1035 2003-06-03  Werner Koch  <wk@gnupg.org>
1036
1037         Changed all error codes in all files to the new libgpg-error scheme.
1038
1039         * scdaemon.h: Include gpg-error.h and errno.h
1040         * card.c (map_sc_err): Use unknown for the error source.
1041         * Makefile.am: Link with libgpg-error
1042
1043 2003-05-14  Werner Koch  <wk@gnupg.org>
1044
1045         * atr.c, atr.h: New.
1046         * sc-investigate.c: Dump the ATR in a human readable format.
1047
1048 2003-05-08  Werner Koch  <wk@gnupg.org>
1049
1050         * scdaemon.h (DBG_CARD_IO_VALUE): New.
1051
1052         * sc-investigate.c: New.
1053         * scdaemon.c (main): Removed --print-atr option.
1054
1055         * iso7816.c, iso7816.h, app-openpgp.c: New.
1056
1057 2003-04-29  Werner Koch  <wk@gnupg.org>
1058
1059         * scdaemon.c: New options --print-atr and --reader-port
1060         * apdu.c, apdu.h: New
1061
1062         * card.c, card-p15.c, card-dinsig.c: Allow build without OpenSC.
1063         
1064         * Makefile.am (LDFLAGS): Removed.
1065
1066         * command.c (register_commands): Adjusted for new Assuan semantics.
1067
1068 2002-08-21  Werner Koch  <wk@gnupg.org>
1069
1070         * scdaemon.c (main): New option --daemon so that the program is
1071         not accidently started in the background.
1072
1073 2002-08-16  Werner Koch  <wk@gnupg.org>
1074
1075         * scdaemon.c: Include i18n.h.
1076
1077         * card-common.h (struct p15_private_s): Forward declaration.  Add
1078         it to card_ctx_s.
1079         * card.c (card_close): Make sure private data is released.
1080         (card_enum_certs): New.
1081         * card-p15.c (p15_release_private_data): New.
1082         (init_private_data): New to work around an OpenSC weirdness.
1083         (p15_enum_keypairs): Do an OpenSC get_objects only once.
1084         (p15_enum_certs): New.
1085         (card_p15_bind): Bind new function.
1086         * command.c (cmd_learn): Return information about the certificates.
1087
1088 2002-08-09  Werner Koch  <wk@gnupg.org>
1089
1090         * card.c (card_get_serial_and_stamp): Use the tokeinfo serial
1091         number as a fallback. Add a special prefix for serial numbers.
1092
1093 2002-07-30  Werner Koch  <wk@gnupg.org>
1094
1095         Changes to cope with OpenSC 0.7.0:
1096         
1097         * card.c: Removed the check for the packed opensc version.
1098         Changed include file names of opensc.
1099         (map_sc_err): Adjusted error codes for new opensc version.
1100         * card-p15.c: Changed include filename of opensc.
1101         * card-dinsig.c: Ditto.
1102
1103         * card-p15.c (p15_decipher): Add flags argument to OpenSC call.
1104         
1105 2002-07-24  Werner Koch  <wk@gnupg.org>
1106
1107         * card.c (find_simple_tlv, find_iccsn): New.
1108         (card_get_serial_and_stamp): Improved serial number parser.
1109
1110 2002-06-27  Werner Koch  <wk@gnupg.org>
1111
1112         * scdaemon.c (main): Use GNUPG_DEFAULT_HOMEDIR constant.
1113
1114 2002-06-15  Werner Koch  <wk@gnupg.org>
1115
1116         * card-dinsig.c: Documented some stuff from the DIN norm.
1117
1118 2002-04-15  Werner Koch  <wk@gnupg.org>
1119
1120         * command.c (cmd_pksign, cmd_pkdecrypt): Use a copy of the key ID.
1121
1122 2002-04-12  Werner Koch  <wk@gnupg.org>
1123
1124         * scdaemon.c: New option --debug-sc N.
1125         * card.c (card_open): set it here.
1126
1127         * card-p15.c (p15_prepare_key): Factored out common code from ...
1128         (p15_sign, p15_decipher): here and made the decryption work the
1129         regular way.
1130
1131 2002-04-10  Werner Koch  <wk@gnupg.org>
1132
1133         * card.c (card_open): Return immediately when no reader is available.
1134
1135 2002-03-27  Werner Koch  <wk@gnupg.org>
1136
1137         * card.c (card_open, card_close): Adjusted for changes in OpenSC.
1138
1139 2002-03-10  Werner Koch  <wk@gnupg.org>
1140
1141         * card-p15.c, card-dinsig.c, card-common.h: New.
1142         * card.c: Factored most code out to the new modules, so that we
1143         can better support different types of card applications.
1144
1145 2002-01-26  Werner Koch  <wk@gnupg.org>
1146
1147         * scdaemon.c scdaemon.h, command.c: New. Based on the code from
1148         the gpg-agent.
1149
1150         
1151  Copyright 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
1152
1153  This file is free software; as a special exception the author gives
1154  unlimited permission to copy and/or distribute it, with or without
1155  modifications, as long as this notice is preserved.
1156
1157  This file is distributed in the hope that it will be useful, but
1158  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
1159  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.