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