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