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