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