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