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