44497364d4edc83e4e49a148a83df93ca73a0d2f
[gnupg.git] / scd / ChangeLog
1 2010-03-10  Werner Koch  <wk@g10code.com>
2
3         * Makefile.am (scdaemon_LDADD): Remove libjnlib.a.
4
5 2009-12-15  Werner Koch  <wk@g10code.com>
6
7         * iso7816.c (do_generate_keypair): s/readonly/read_only/ because
8         the first is a keyword in VMS C.
9
10 2009-12-03  Werner Koch  <wk@g10code.com>
11
12         * scdaemon.c (set_debug): Allow for numerical debug leveles.  Print
13         active debug flags.
14
15 2009-11-25  Marcus Brinkmann  <marcus@g10code.de>
16
17         * command.c (scd_command_handler): Use assuan_fd_t and
18         assuan_fdopen on fds.
19
20 2009-11-05  Marcus Brinkmann  <marcus@g10code.de>
21
22         * command.c (scd_command_handler): Call assuan_init_socket_server,
23         not assuan_init_socket_server_ext.
24
25 2009-11-04  Werner Koch  <wk@g10code.com>
26
27         * command.c (register_commands): Add help arg to
28         assuan_register_command.  Add help strings to all commands.
29
30 2009-11-02  Marcus Brinkmann  <marcus@g10code.de>
31
32         * command.c (reset_notify): Take LINE arg and return error.
33         (register_commands): Use assuan_handler_t type.
34
35 2009-10-25  Werner Koch  <wk@g10code.com>
36
37         * scdaemon.c (scd_deinit_default_ctrl): Release IN_DATA.
38         * command.c (cmd_setdata): Release IN_DATA.  Reported by Klaus
39         Flittner.
40
41 2009-10-16  Marcus Brinkmann  <marcus@g10code.com>
42
43         * AM_CFLAGS, scdaemon_LDADD: Use libassuan instead of libassuan-pth.
44         * scdaemon.c: Invoke ASSUAN_SYSTEM_PTH_IMPL.
45         (main): Call assuan_set_system_hooks and assuan_sock_init.
46
47 2009-09-23  Marcus Brinkmann  <marcus@g10code.de>
48
49         * command.c: Include "scdaemon.h" before <assuan.h> because of
50         GPG_ERR_SOURCE_DEFAULT check.
51         (option_handler, open_card, cmd_serialno, cmd_lean, cmd_readcert)
52         (cmd_readkey, cmd_setdata, cmd_pksign, cmd_pkauth, cmd_pkdecrypt)
53         (cmd_getattr, cmd_setattr, cmd_writecert, cmd_writekey)
54         (cmd_genkey, cmd_random, cmd_passwd, cmd_checkpin, cmd_lock)
55         (cmd_unlock, cmd_getinfo, cmd_restart, cmd_disconnect, cmd_apdu)
56         (cmd_killscd): Return gpg_error_t instead of int.
57         (scd_command_handler): Allocate assuan context before starting server.
58         * scdaemon.c (main): Update to new Assuan API.
59
60 2009-09-03  Werner Koch  <wk@g10code.com>
61
62         * app-openpgp.c (do_decipher): Compute required Le.
63         * iso7816.c (iso7816_decipher): Add new arg LE.
64         * app-nks.c (do_decipher): Adjust for change.
65
66         * iso7816.c (iso7816_put_data, iso7816_put_data_odd): Turn DATA
67         into a void ptr.
68
69 2009-08-05  Werner Koch  <wk@g10code.com>
70
71         * app-openpgp.c (change_keyattr_from_string): New.
72         (do_setattr): Support KEY-ATTR.
73
74 2009-07-29  Marcus Brinkmann  <marcus@g10code.com>
75
76         * ccid-driver.c (print_pr_data): Fix 64 bit compat problem.
77
78 2009-07-24  Werner Koch  <wk@g10code.com>
79
80         * ccid-driver.c (parse_ccid_descriptor): Enable hack for SCR 3320.
81
82 2009-07-21  Werner Koch  <wk@g10code.com>
83
84         * ccid-driver.c [HAVE_PTH]: Include pth.h.
85         (my_sleep): New.
86         (bulk_in): s/gnupg_sleep/my_sleep/.
87
88 2009-07-20  Werner Koch  <wk@g10code.com>
89
90         * apdu.c [GNUPG_MAJOR_VERSION==1]: Include dynload.h.
91
92 2009-07-16  Werner Koch  <wk@g10code.com>
93
94         * command.c (update_reader_status_file): Test for unplugged reader.
95         (TEST_CARD_REMOVAL): Ditto.
96         * app.c (select_application): Ditto.
97         * ccid-driver.c (bulk_out): Return CCID_DRIVER_ERR_NO_READER if a
98         reader was unplugged.
99         (struct ccid_driver_s): Turn nonnull_nad into an unsigned char.
100         Turn apdu_level, auto_ifsd, powered_off, has_pinpad into
101         bitfields. Add enodev_seen.
102         * apdu.c (apdu_prepare_exit): New.
103         (get_status_ccid): Return the status word and nut just -1.
104         * scdaemon.c (scd_exit): Call it.
105
106 2009-07-13  Werner Koch  <wk@g10code.com>
107
108         * ccid-driver.c (struct ccid_driver_s): Add fields last_progress,
109         progress_cb and progress_cb_arg.
110         (ccid_set_progress_cb): New.
111         (print_progress): New.
112         (ccid_transceive): Call print_progress for wait time extensions.
113         * apdu.c (struct reader_table_s): Add field set_progress_cb.
114         (new_reader_slot): Clear that field.
115         (open_ccid_reader): Set it to ..
116         (set_progress_cb_ccid_reader): ... new fucntion.
117         * app.c (print_progress_line): New.
118         (lock_reader): Add arg CTRL to set a progress callback and
119         change all callers to provide it.
120         (unlock_reader): Remove the progress callback.
121
122 2009-07-10  Werner Koch  <wk@g10code.com>
123
124         * iso7816.c (iso7816_compute_ds): Add args EXTENDED_MODE and LE.
125         Change all callers to use 0.
126         (iso7816_internal_authenticate): Add args EXTENDED_MODE and LE.
127         * app-openpgp.c (do_sign): Take exmode and Le from card
128         capabilities and pass them to iso7816_compute_ds.
129         (do_auth): Ditto for iso7816_internal_authenticate.
130         (change_keyattr): Reset CHV verification status.
131
132 2009-07-09  Werner Koch  <wk@g10code.com>
133
134         * app-openpgp.c (change_keyattr): New.
135         (do_writekey): Call it.
136         
137         * app-openpgp.c (does_key_exist): Add arg GENERATING.  Change
138         callers.
139
140 2009-06-30  Werner Koch  <wk@g10code.com>
141
142         * ccid-driver.c (ccid_transceive): Set RESYNCING flag.
143
144 2009-06-29  Werner Koch  <wk@g10code.com>
145
146         * ccid-driver.c (ccid_transceive): Add a hack to support extended
147         length for Omnikey readers.
148         (is_exlen_apdu): New.
149         (parse_ccid_descriptor): Track short+extended apdu exchange level.
150
151 2009-06-18  Werner Koch  <wk@g10code.com>
152
153         * app-openpgp.c (verify_chv2): Remove special case for v2 cards.
154         (get_public_key): Use extended mode.
155
156 2009-06-17  Werner Koch  <wk@g10code.com>
157
158         * iso7816.c (iso7816_get_data): Add arg EXTENDED_MODE.  Change all
159         callers.
160         * app-openpgp.c (data_objects): Use bit flags.  Add flag
161         TRY_EXTLENGTH.
162         (get_cached_data): Add arg TRY_EXTLEN and use it for iso7816_get_data.
163         (get_one_do): Use extended length APDU if necessary.
164
165 2009-06-10  Werner Koch  <wk@g10code.com>
166
167         * app-openpgp.c (store_fpr): Change first arg to app_t; adjust
168         callers.  Flush the cache.
169
170 2009-06-09  Werner Koch  <wk@g10code.com>
171
172         * app-openpgp.c (do_readcert): Return NOT_FOUND if the retrieved
173         data has a length of zero.
174         (do_getattr): Add EXTCAP subkey "sm".
175
176 2009-05-20  Werner Koch  <wk@g10code.com>
177
178         * app-openpgp.c (verify_chv2): Add case for v2 cards.
179         (verify_chv3): Factor some code out to ..
180         (build_enter_admin_pin_prompt): .. new.
181         (do_change_pin): Properly handle v2 cards.
182
183 2009-05-19  Werner Koch  <wk@g10code.com>
184
185         * scdaemon.c (create_server_socket): Use SUN_LEN.
186         (JNLIB_NEED_AFLOCAL): Define.
187
188 2009-05-13  Werner Koch  <wk@g10code.com>
189
190         * ccid-driver.c (abort_cmd): Add arg SEQNO and change callers.
191         (bulk_in): Retry on seqno mismatch.
192
193         * apdu.c (send_le): Release result_buffer.
194         (apdu_send_direct): Implemend extended length.
195         * command.c (cmd_apdu): Add option "--exlen".
196
197 2009-05-11  Werner Koch  <wk@g10code.com>
198
199         * apdu.c (send_le): Replace log_error by log_info.
200
201 2009-05-08  Werner Koch  <wk@g10code.com>
202
203         * app-openpgp.c (do_genkey): Allow larger key sizes.
204         (do_decipher): Ditto.
205         * iso7816.c (do_generate_keypair): Add arg EXTENDED_MODE an LE.
206         (iso7816_generate_keypair, iso7816_read_public_key): Ditto.
207         Changed all callers.
208         * apdu.c (send_le): Implement extended length return values.
209
210         * ccid-driver.c (bulk_in): Retry on EAGAIN.
211         (abort_cmd): Change seqno handling.
212
213 2009-04-28  Werner Koch  <wk@g10code.com>
214
215         * app-help.c (app_help_count_bits): New.
216
217         * app-nks.c (switch_application): Detect mass signature cards.
218         Take care of new NEED_APP_SELECT flag.
219         (do_sign): Don't allow mass signature cards.
220         (all_zero_p): New.
221         (do_readkey): New.
222         (app_select_nks): Register do_readkey.
223
224 2009-04-01  Werner Koch  <wk@g10code.com>
225
226         * app-openpgp.c (do_setattr, do_writekey): Prepare for extended
227         length cards.
228
229 2009-03-31  Werner Koch  <wk@g10code.com>
230
231         * command.c (percent_plus_unescape): Remove.
232         (cmd_setattr): Use percent_plus_unescape_inplace.
233
234 2009-03-30  Werner Koch  <wk@g10code.com>
235
236         * app-nks.c (do_decipher): Make it work for TCOS 3.
237         * iso7816.c (iso7816_decipher): Add arg EXTENDED_MODE.
238         * apdu.c (apdu_send): Add arg EXTENDED_MODE and change all callers.
239         (apdu_send_le):  Ditto. 
240         (apdu_send_direct): Ditto, but not yet functional.
241         (send_le): Fix command chaining.  Implement extended length option.
242         * ccid-driver.c (ccid_transceive): Remove restriction on apdu length.
243         (struct ccid_driver_s): Add field IFSC.
244         (ccid_get_atr): Set IFSC.
245         (ccid_transceive): Use negotiated IFSC and support S(IFS) command.
246
247 2009-03-26  Werner Koch  <wk@g10code.com>
248
249         * command.c (cmd_pksign): Allow more hash algorithms.
250
251         * scdaemon.h (MAX_DIGEST_LEN): Change to 64.
252
253         * apdu.c (open_ccid_reader): Clear the is_to flag.
254
255         * app-nks.c (filelist): Add field KID.
256         (do_getattr): Change standard authentication key.
257         (do_sign): Setup a security environment for TCOS 3 cards and support
258         all SHA-2 algorithms.
259
260 2009-03-24  Werner Koch  <wk@g10code.com>
261
262         * command.c (struct server_local_s): Add flag
263         APP_CTX_MARKED_FOR_RELEASE.
264         (do_reset): Set the flag.
265         (open_card): Act on this flag.
266         * app-common.h (struct app_ctx_s): Add flag NO_REUSE.
267         (application_notify_card_reset): Set the flag.
268         * app.c (select_application, release_application): Take care of
269         that flag.
270
271 2009-03-20  Werner Koch  <wk@g10code.com>
272
273         * app-nks.c (keygripstr_from_pk_file): Fix for TCOS 3 cards.
274
275 2009-03-18  Werner Koch  <wk@g10code.com>
276
277         * apdu.c (open_pcsc_reader_wrapped): Use close_all_fds.
278
279         * command.c (cmd_learn): Add option --keypairinfo.
280         * app.c (app_write_learn_status): Add arg FLAGS.
281         * app-common.h (struct app_ctx_s): Add arg FLAGS to LEARN_STATUS.
282         Change all implementors.
283         * app-p15.c (do_learn_status): Take care of flag bit 0.
284         * app-nks.c (do_learn_status, do_learn_status_core): Ditto.
285
286 2009-03-10  Werner Koch  <wk@g10code.com>
287
288         * app-openpgp.c (send_key_attr): New.
289         (do_getattr): New attribute KEY_ATTR.
290         * command.c (send_status_direct): New.
291
292 2009-03-06  Werner Koch  <wk@g10code.com>
293
294         * app-nks.c (do_learn_status): Factor code out to..
295         (do_learn_status_core): .. new.
296         (do_readcert, do_sign, do_decipher): Switch to SigG if needed.
297         (verify_pin): Use DESC also for keypad based verify.
298
299 2009-03-05  Werner Koch  <wk@g10code.com>
300
301         * app-openpgp.c (verify_a_chv): Remove special case for keypads.
302         (verify_chv3): Ditto.
303
304         * app-nks.c (get_chv_status): New.
305         (parse_pwidstr): New.
306         (verify_pin): Add args PWID and DESC and use them.  Remove the
307         CHV1 caching.
308         (do_change_pin): Allow PIN selection and add reset mode.
309         (do_learn_status): Use NKS-NKS3 tag for TCOS 3 cards.
310         (do_readcert, do_sign): Allow NKS-NKS3 tag.
311
312 2009-03-04  Werner Koch  <wk@g10code.com>
313
314         * app-nks.c (do_getattr): New.
315         (app_select_nks): Register it.
316         (verify_pin): Factor some code out to...
317         (basic_pin_checks): New.
318         (do_change_pin): Call the basic check.
319         (app_select_nks): Move AID to ..
320         (aid_nks): .. new.
321         (aid_sigg): New.
322         (switch_application): New.
323         (do_getattr, do_learn_status, do_readcert, do_sign, do_decipher) 
324         (do_change_pin, do_check_pin): Make sure we are in NKS mode.
325
326 2009-03-03  Werner Koch  <wk@g10code.com>
327
328         * command.c (scd_command_handler): Remove dereference of STOPME
329         after free.
330
331 2009-02-27  Werner Koch  <wk@g10code.com>
332
333         * app.c (get_supported_applications): New.
334         * command.c (cmd_getinfo): New subcommand "app_list"
335         (cmd_killscd): New.
336         (register_commands): Register command KILLSCD.
337         (struct server_local_s): Add field STOPME.
338         (scd_command_handler): Act upon this.
339
340 2009-02-25  Werner Koch  <wk@g10code.com>
341
342         * apdu.c (apdu_get_status): Factor all code out to ...
343         (apdu_private_get_status): .. new.  Add arg NO_ATR_RESET.
344         (apdu_connect): Call new function.
345
346         * scdaemon.c: New option --debug-log-tid.
347         (tid_log_callback): New.
348         (main): Move debug-wait code after debug stream init.
349
350 2009-02-24  Werner Koch  <wk@g10code.com>
351
352         * ccid-driver.c (ccid_get_atr): Move debug output to ..
353         (print_r2p_parameters): .. new.
354         (print_r2p_header, print_pr_data, print_r2p_unknown)
355         (print_r2p_datablock, print_r2p_slotstatus, print_r2p_escape) 
356         (print_r2p_datarate): New.
357         (bulk_in): Call parameter printing.
358         (ccid_set_debug_level): Add debug level 3.
359         (convert_le_u16): New.
360         (print_p2r_header, print_p2r_iccpoweron, print_p2r_iccpoweroff) 
361         (print_p2r_getslotstatus, print_p2r_xfrblock) 
362         (print_p2r_getparameters, print_p2r_resetparameters) 
363         (print_p2r_setparameters, print_p2r_escape, print_p2r_iccclock) 
364         (print_p2r_to0apdu, print_p2r_secure, print_p2r_mechanical) 
365         (print_p2r_abort, print_p2r_setdatarate, print_r2p_unknown): New.
366         (bulk_out): Add arg NO_DEBUG and change all callers to pass 0.
367         Call parameter printing.
368         (ccid_slot_status): Call with NO_DEBUG set.
369         (abort_cmd, send_escape_cmd, ccid_get_atr, ccid_get_atr) 
370         (ccid_transceive_apdu_level, ccid_transceive) 
371         (ccid_transceive_secure): Remove old debug print code.
372
373 2009-02-12  Werner Koch  <wk@g10code.com>
374
375         * command.c (cmd_getinfo): Add new subcommand "deny_admin".
376
377 2009-01-28  Werner Koch  <wk@g10code.com>
378
379         * scdaemon.c (main): Make --allow-admin the default and make the
380         option a dummy.
381
382 2009-01-27  Werner Koch  <wk@g10code.com>
383
384         * app-geldkarte.c: Changed to use an AID.
385
386         * app.c (app_munge_serialno): Add case for no serialno.
387         (app_get_serial_and_stamp): Ditto.
388
389 2009-01-26  Werner Koch  <wk@g10code.com>
390
391         * app-geldkarte.c: New.
392         * Makefile.am (card_apps): Add new file.
393         * app.c (select_application): Test for geldkarte.
394
395 2009-01-12  Werner Koch  <wk@g10code.com>
396
397         * command.c (send_client_notifications) [HAVE_W32_SYSTEM]: Fix
398         brackets.
399
400 2009-01-08  Werner Koch  <wk@g10code.com>
401
402         * iso7816.c (iso7816_read_record, iso7816_read_binary): Pass 0 for
403         L_e because the problem with the CCID driver has gone.
404         (iso7816_apdu_direct): New.
405
406         * app-nks.c (filelist): Add NKS_VER field.  Add NKS 3 specific
407         entries.
408         (app_local_s, do_deinit): New.
409         (get_nks_version): New.
410         (app_select_nks): Setup local data.
411         (keygripstr_from_pk_file): Replace SLOT by APP and take care of
412         NKS version > 2.
413         (do_learn_status): Take care of NKS version.
414
415 2009-01-05  Werner Koch  <wk@g10code.com>
416
417         * apdu.c (apdu_get_status): Save the last status.
418
419 2008-12-18  Werner Koch  <wk@g10code.com>
420
421         * ccid-driver.c (abort_cmd): New. 
422         (bulk_in): Call abort_cmd after severe errors.
423
424         * apdu.c (reader_table_s): Add field ANY_STATUS.
425         (new_reader_slot): Clear it.
426         (apdu_get_status): Use ANY_STATUS to update the change counter.
427         Remove the use of the flag bit from LAST_STATUS everywhere.
428         * command.c (update_reader_status_file): Factor code out to ...
429         (send_client_notifications): New.  Track signals already sent.
430         (update_reader_status_file): Shutdown the reader  after a failed
431         apdu_get_status.
432
433 2008-12-09  Werner Koch  <wk@g10code.com>
434
435         * scdaemon.c (main): Call i18n_init before init_common_subsystems.
436
437 2008-12-08  Werner Koch  <wk@g10code.com>
438
439         * scdaemon.c (handle_connections): Sync ticker to the next full
440         interval.
441         (TIMERTICK_INTERVAL_USEC): Change to 500ms.
442
443 2008-12-05  Werner Koch  <wk@g10code.com>
444
445         * app-openpgp.c (app_local_s): Add field ALGO_ATTR_CHANGE.
446         (app_select_openpgp): Parse new capability.
447         (show_caps): Show new capability.
448
449 2008-12-03  Werner Koch  <wk@g10code.com>
450
451         * scdaemon.c (opts): Use ARGPARSE_ macros.  Add option
452         --card-timeout.
453         * command.c (update_reader_status_file): Implement it.
454
455 2008-11-18  Werner Koch  <wk@g10code.com>
456
457         * scdaemon.c (make_libversion): New.
458         (my_strusage): Print libgcrypt and libksba version.
459
460 2008-11-03  Werner Koch  <wk@g10code.com>
461
462         * command.c (server_local_s): Add field DISCONNECT_ALLOWED.
463         (cmd_disconnect): Implement command.
464         (open_card): Reset disconnect flag.
465         (update_reader_status_file): Disconnect if allowed.
466
467         * app-common.h (app_ctx_s): Remove INITIALIZED.  Make REF_COUNT
468         unsigned. 
469         * app.c (select_application): Remove INITIALIZED.
470         (app_write_learn_status, app_readcert, app_readkey, app_getattr)
471         (app_setattr, app_sign, app_decipher, app_writecert)
472         (app_writekey, app_get_challenge, app_change_pin, app_check_pin):
473         Replace INITIALIZED by REF_COUNT check.
474         (application_notify_card_removed): Rename to ..
475         (application_notify_card_reset): .. this.  Change all callers.
476         * command.c (do_reset): Call application_notify_card_reset after
477         sending a reset.
478         (update_reader_status_file): Add arg SET_CARD_REMOVED.
479         (scd_update_reader_status_file): Pass true for new flag.
480         (do_reset): Pass false for new flag.
481
482         * app.c (app_get_serial_and_stamp): Use bin2hex.
483         * app-help.c (app_help_get_keygrip_string): Ditto.
484         * app-p15.c (send_certinfo, send_keypairinfo, do_getattr): Ditto.
485         * app-openpgp.c (send_fpr_if_not_null, send_key_data) 
486         (retrieve_fpr_from_card, send_keypair_info): Ditto.
487         * app-nks.c (keygripstr_from_pk_file): Ditto.
488         * command.c (cmd_apdu): Ditto.
489
490 2008-10-21  Marcus Brinkmann  <marcus@g10code.com>
491
492         * command.c (open_card): If connect error is SW_HOST_NO_CARD,
493         return a more descriptive error.
494
495 2008-10-20  Werner Koch  <wk@g10code.com>
496
497         * pcsc-wrapper.c (read_32): Use provided arg and not stdin.  Is
498         called with stdin, though.
499         (handle_close): Mark unused arg.
500         (handle_status, handle_reset): Ditto.
501
502         * ccid-driver.c (ccid_check_card_presence): Mark not yet used arg.
503
504         * scdaemon.c (scd_deinit_default_ctrl): Mark unused arg.
505         * command.c (cmd_unlock, cmd_restart, cmd_disconnect): Ditto.
506         * apdu.c (ct_get_status): Ditto.
507         (ct_send_apdu, pcsc_send_apdu_wrapped)
508         (apdu_open_remote_reader): Ditto.
509         * app.c (select_application): Ditto.
510         * app-openpgp.c (do_writecert, do_change_pin, do_writekey): Ditto.
511         * app-nks.c (do_change_pin, do_check_pin): Ditto.
512
513 2008-10-16  Werner Koch  <wk@g10code.com>
514
515         * command.c (cmd_disconnect): New dummy command.
516         (register_commands): Register command.
517
518 2008-10-15  Werner Koch  <wk@g10code.com>
519
520         * command.c (scd_command_handler): Return true if there is no more
521         active session.
522         * scdaemon.c (start_connection_thread): Set shutdown flag if
523         requested by command handler.
524         (main): Make PIPE_SERVER module global.
525         (handle_connections): Disable listen_fd if a shutdown is pending.
526
527 2008-10-14  Werner Koch  <wk@g10code.com>
528
529         * apdu.c (reader_table_s): Add fields connect_card and
530         disconnect_card.
531         (new_reader_slot): Set them to NULL.
532         (apdu_connect, apdu_disconnect): New.
533         (apdu_close_reader, apdu_shutdown_reader): Call apdu_disconnect.
534         (connect_pcsc_card, disconnect_pcsc_card): new.
535         (reset_pcsc_reader_direct): Implement in terms of
536         disconnect_pcsc_card and connect_pcsc_card.
537         (apdu_get_atr): Return NULL if there is no ATR.
538         * sc-copykeys.c (main): Add call to apdu_connect.
539         * command.c (open_card): Ditto.
540
541         * apdu.h (SW_HOST_ALREADY_CONNECTED): New.
542         (APDU_CARD_USABLE, APDU_CARD_PRESENT, APDU_CARD_ACTIVE): New.
543         * apdu.c: Replace constants by the new macros.
544         (open_pcsc_reader): Factor  code out to ...
545         (open_pcsc_reader_direct, open_pcsc_reader_wrapped): New.
546         (reset_pcsc_reader): Factor code out to ...
547         (reset_pcsc_reader_direct, reset_pcsc_reader_wrapped): New.
548         (pcsc_get_status): Factor code out to ...
549         (pcsc_get_status_direct, pcsc_get_status_wrapped): New.
550         (pcsc_send_apdu): Factor code out to ...
551         (pcsc_send_apdu_direct, pcsc_send_apdu_wrapped): New.
552         (close_pcsc_reader): Factor code out to ...
553         (close_pcsc_reader_direct, close_pcsc_reader_wrapped): New.
554
555         * command.c (update_reader_status_file): Open the reader if not
556         yet done.
557
558         * scdaemon.c (TIMERTICK_INTERVAL_SEC, TIMERTICK_INTERVAL_USEC):
559         New to replace TIMERTICK_INTERVAL.  Chnage from 2s (4 under W32)
560         to 250ms.
561
562 2008-10-13  Werner Koch  <wk@g10code.com>
563
564         * command.c (option_handler) [W32]: Use strtoul with base 16.
565         (update_reader_status_file) [W32]: Set Event.
566         (scd_command_handler): Use INT2FD to silent warning.
567
568 2008-09-29  Werner Koch  <wk@g10code.com>
569
570         * scdaemon.h (GCRY_MD_USER): Rename to GCRY_MODULE_ID_USER.
571         (GCRY_MD_USER_TLS_MD5SHA1): Rename to MD_USER_TLS_MD5SHA1 and
572         change all users.
573
574 2008-09-28  Marcus Brinkmann  <marcus@g10code.com>
575
576         * apdu.c (pcsc_get_status): Fix last change.
577
578 2008-09-25  Werner Koch  <wk@g10code.com>
579
580         * app-openpgp.c (do_setattr): Do not allow setting of the reset
581         code.
582         (do_change_pin): Allow setting of the reset code.
583
584 2008-09-24  Werner Koch  <wk@g10code.com>
585
586         * app-openpgp.c (verify_chv3): Set the did_chv3 flag which was
587         accidently removed on 2008-03-26.
588         (verify_chv2): Revert last change.
589         (do_change_pin): Do not change CHV2. Add reset code logic for v2
590         cards.
591         * iso7816.c (iso7816_reset_retry_counter_with_rc): New.
592         
593         * app-openpgp.c (add_tlv, build_privkey_template): New.
594         (do_writekey): Support v2 keys and other key lengths than 1024.
595         * iso7816.c (iso7816_put_data_odd): New.
596
597 2008-09-23  Werner Koch  <wk@g10code.com>
598
599         * app-openpgp.c (do_sign): Support SHA-2 digests.
600         (verify_chv2): No CHV auto-sync for v2 cards.
601         (do_auth): Allow 2048 bit keys.
602         (parse_algorithm_attribute): New.
603         (rsa_key_format_t): New.
604         (struct app_local_s): Add struct KEYATTR.
605
606 2008-09-23  Marcus Brinkmann  <marcus@g10code.com>
607
608         * apdu.c (pcsc_get_status): Be more relaxed with the usable flag
609         under Windows.
610
611 2008-09-23  Werner Koch  <wk@g10code.com>
612
613         * app-openpgp.c (do_setattr): Use command chaining for long
614         values.
615         * iso7816.c (iso7816_put_data): Add arg EXTENDED_MODE. Change all
616         callers.
617         * apdu.c (apdu_send_simple): Add arg EXTENDED_MODE. Change all
618         callers.
619         (send_le): Implement command chaining.
620         * ccid-driver.c (ccid_transceive_apdu_level): Increase allowed
621         APDU size.
622         (ccid_transceive): Alow for APDUS of up to 259 bytes.
623         * apdu.h: Add new SW_ codes.
624
625 2008-09-16  Werner Koch  <wk@g10code.com>
626
627         * command.c (cmd_writecert): New.
628         (register_commands): Register it.
629         * app-common.h (app_ctx_s): Add member WRITECERT.
630         * app.c (app_writecert): New.
631         * app-openpgp.c (do_writecert): New.
632         (parse_historical): New.
633         (show_extcap): New.
634         (dump_all_do): Print only the length of longs DOs.
635         * command.c (cmd_writekey, cmd_apdu, cmd_pksign)
636         (cmd_passwd): Replace open coding by skip_options.
637
638 2008-08-30  Moritz  <moritz@gnu.org>
639
640         * scdaemon.c (main): Use estream_asprintf instead of asprintf.
641         * command.c (update_reader_status_file): Likewise.
642         (cmd_serialno): Use estream_asprintf instead of asprintf
643         and xfree instead of free to release memory allocated
644         through (estream_)asprintf.
645         (cmd_learn): Likewise.
646         (pin_cb): Likewise.
647         * app-openpgp.c (get_public_key): Likewise.
648
649 2008-08-18  Werner Koch  <wk@g10code.com>
650
651         * app-openpgp.c (do_setattr): Fix test for v2 cards.
652
653 2008-08-11  Werner Koch  <wk@g10code.com>
654
655         * apdu.c (reset_pcsc_reader, open_pcsc_reader)
656         (reset_rapdu_reader, open_rapdu_reader): Allow ATRs of up to 33
657         bytes.  Provide maximum size of ATR buffer using DIM.  Such long
658         ATR are never seen in reality but the PC/SC library of MAC OS X is
659         just too buggy.  Reported by Ludovic Rousseau.  Fixes bug #948.
660
661 2008-07-30  Werner Koch  <wk@g10code.com>
662
663         * app-openpgp.c (verify_a_chv): Use xtrymalloc and make the prompt
664         for CHV2 more user friendly.
665
666 2008-07-03  Werner Koch  <wk@g10code.com>
667
668         * app-openpgp.c (do_readcert): New.
669         (app_local_s): Add fields IS_V2 and MAX_CERTLEN_3.
670         (app_select_openpgp): Set them and register do_readcert.
671         (do_setattr): Allow storing of the certificate.
672
673 2008-06-25  Werner Koch  <wk@g10code.com>
674
675         * app-dinsig.c (do_sign): Allow for SHA256.
676
677 2008-06-24  Werner Koch  <wk@g10code.com>
678
679         * app-common.h (app_ctx_s): Renamed reset_mode parameter of
680         change_pin to mode_Flags and make it an unsigned int.
681         (APP_CHANGE_FLAG_RESET, APP_CHANGE_FLAG_NULLPIN): New.
682         * app-openpgp.c (do_change_pin): Adjust for that.
683
684         * command.c (cmd_passwd): Add option --nullpin.
685         * app-nks.c (do_check_pin, do_change_pin): New.
686         (app_select_nks): Register new functions.
687
688 2008-04-21  Moritz Schulte  <mo@g10code.com>  (wk)
689
690         * app-openpgp.c (verify_a_chv): Make use of the default CHV flag.
691
692 2008-03-26  Werner Koch  <wk@g10code.com>
693
694         * app-openpgp.c (verify_chv3): Support the keypad.
695
696 2008-02-09  Marcus Brinkmann  <marcus@g10code.de>
697
698         * scdaemon.c (main): Use CONFIG_FILENAME as filename if it is set
699         in gpgconf-list output.
700
701 2007-12-10  Werner Koch  <wk@g10code.com>
702
703         * app-openpgp.c (do_decipher): Take care of cryptograms shorter
704         that 128 bytes.  Fixes bug#851.
705
706 2007-11-14  Werner Koch  <wk@g10code.com>
707
708         * scdaemon.c (main): Pass STANDARD_SOCKET flag to
709         create_server_socket.
710         
711 2007-11-13  Werner Koch  <wk@g10code.com>
712
713         * scdaemon.c (start_connection_thread): Do not call
714         assuan_sock_check_nonce if we are running in --server mode.
715
716 2007-11-07  Werner Koch  <wk@g10code.com>
717
718         * scdaemon.h: Remove errors.h.
719
720 2007-10-02  Werner Koch  <wk@g10code.com>
721
722         * command.c (cmd_getinfo): Add "pid" subcommand.
723
724 2007-10-01  Werner Koch  <wk@g10code.com>
725
726         * scdaemon.c (create_server_socket): Use Assuan socket wrappers
727         and remove Windows specific code.
728         (socket_nonce): New.
729         (start_connection_thread): Check nonce.
730
731 2007-09-14  Marcus Brinkmann  <marcus@g10code.de>
732
733         * scdaemon.c (main): New variable STANDARD_SOCKET, which is 1 for
734         W32 targets.  Use it for create_socket_name.
735
736 2007-08-07  Werner Koch  <wk@g10code.com>
737
738         * tlv.c, tlv.h:  Move to ../common/.
739
740 2007-08-02  Werner Koch  <wk@g10code.com>
741
742         * scdaemon.c: Include gc-opt-flags.h and remove their definition
743         here.
744
745 2007-08-01  Werner Koch  <wk@g10code.com>
746
747         * apdu.c (send_le): Implement exact length hack.  Suggested by
748         Sten Lindgren.
749
750 2007-07-05  Werner Koch  <wk@g10code.com>
751
752         * command.c (has_option_name, skip_options): New.
753         (cmd_genkey): Add option --timestamp.
754         (cmd_writekey): Enter confidential mode while inquiring the key data.
755
756         * app.c (app_genkey): Add arg CREATETIME.
757         * app-common.h (app_ctx_s): Likewise
758         * app-openpgp.c (do_genkey): Ditto.  Use it.
759
760
761 2007-07-04  Werner Koch  <wk@g10code.com>
762
763         * command.c (cmd_getinfo): New subcommand "version".
764
765         * scdaemon.c (TIMERTICK_INTERVAL): New.
766         (handle_connections) [W32]: Enable a dummy sigs event.
767         (handle_connections): Use a proper count for select and not
768         FD_SETSIZE.
769         (fixed_gcry_pth_init, main): Kludge to fix pth initialization.
770
771 2007-06-21  Werner Koch  <wk@g10code.com>
772
773         * scdaemon.h (ctrl_t): Remove.  It is now declared in ../common/util.h.
774
775 2007-06-18  Marcus Brinkmann  <marcus@g10code.de>
776
777         * scdaemon.c (main): Percent escape output of --gpgconf-list.
778
779 2007-06-12  Werner Koch  <wk@g10code.com>
780
781         * scdaemon.c (main): Replace some calls by init_common_subsystems.
782
783 2007-06-11  Werner Koch  <wk@g10code.com>
784
785         * Makefile.am (scdaemon_LDADD): Use libcommonpth macro.
786
787         * command.c (initialize_module_command): New.
788         * scdaemon.c (main) [W32]: Do not use sigpipe code.
789         (main): Call initialize_module_command.
790
791 2007-06-06  Werner Koch  <wk@g10code.com>
792
793         * app-openpgp.c (do_sign): Fix arithmetic on void*.
794
795         * app.c (dump_mutex_state) [W32]: Handle the W32Pth case.
796
797         * apdu.c: Remove dynload.h.
798
799         * scdaemon.c (i18n_init): Remove.
800
801 2007-04-20  Werner Koch  <wk@g10code.com>
802
803         * sc-copykeys.c (my_gcry_logger): Removed.
804         (main): Call setup_libgcrypt_logging helper.
805         * scdaemon.c (my_gcry_logger): Removed.
806         (main): Call setup_libgcrypt_logging helper.
807
808 2007-04-03  Werner Koch  <wk@g10code.com>
809
810         * command.c (cmd_getinfo): New subcommand "reader_list".
811         * ccid-driver.c (scan_or_find_devices): Ignore EBUSY in scan mode
812         for special transports.
813
814 2007-03-07  Werner Koch  <wk@g10code.com>
815
816         * app-dinsig.c: Include i18n.h.
817         (verify_pin): Support PIN pads.
818         * app-nks.c (verify_pin): Ditto.
819
820         * ccid-driver.c (bulk_in): Handle time extension before checking
821         the message type.
822         (ccid_transceive_secure): Support the Cherry XX44 keyboard.
823         Kudos to the nice folks at Cherry for helping with that.
824
825 2007-02-18  Werner Koch  <wk@g10code.com>
826
827         * scdaemon.c (DEFAULT_PCSC_DRIVER): Add a default for OS X.
828
829 2007-01-25  Werner Koch  <wk@g10code.com>
830
831         * Makefile.am (scdaemon_LDADD): Added LIBICONV.  Noted by Billy
832         Halsey.
833
834 2006-12-21  Werner Koch  <wk@g10code.com>
835
836         * app-openpgp.c (verify_chv2): Factored most code out into...
837         (verify_a_chv): ... new.
838         (do_sign): Factored verification code out to new function and
839         take care of a keypad entered PIN.
840         (compare_fingerprint): Print an additional diagnostic.
841
842 2006-11-28  Werner Koch  <wk@g10code.com>
843
844         * apdu.c (send_le, apdu_send_direct): Increase RESULTLEN to 258 to
845         allow for full 256 byte and the status word.  This might break
846         some old PC/SC drivers or cards, but we will see.  Suggested by
847         Kenneth Wang.
848
849 2006-11-23  Werner Koch  <wk@g10code.com>
850
851         * command.c (scd_command_handler): Fixed use of CTRL.
852
853 2006-11-21  Werner Koch  <wk@g10code.com>
854
855         * Makefile.am (libexec_PROGRAMS): Put pscs-wrapper into libexec.
856         Renamed to gnupg-pcsc-wrapper.
857         * apdu.c (open_pcsc_reader): Use GNUPG_LIBEXECDIR to accces the
858         wrapper.  Suggested by Eric Dorland.
859
860 2006-11-20  Werner Koch  <wk@g10code.com>
861
862         * app-openpgp.c (verify_chv2): Support for keypads (only CHV2).
863
864         * ccid-driver.c (ccid_transceive_secure): Made it work for Kaan
865         and SCM.
866
867 2006-11-17  Werner Koch  <wk@g10code.com>
868
869         * ccid-driver.c (scan_or_find_devices): Use DEBUGOUT_2 instead of
870         log_debug.  Removed few other log_debug.
871
872         * iso7816.c (iso7816_check_keypad): Allow for a SW of 0.
873
874         * command.c (pin_cb): New mode to prompt for a keypad entry.
875
876         * scdaemon.c (main) <gpgconf-list>: Add disable-keypad.
877
878 2006-11-15  Werner Koch  <wk@g10code.com>
879
880         * app-p15.c (read_ef_odf): Cast one printf arg.
881
882         * scdaemon.h (struct server_control_s): Add field THREAD_STARTUP.
883         * command.c (scd_command_handler): Add new arg CTRL.
884         * scdaemon.c (scd_init_default_ctrl): Made static.
885         (scd_deinit_default_ctrl): New.
886         (start_connection_thread): Call init/deinit of ctrl.
887         (handle_connections): Allocate CTRL.
888
889         * apdu.c (PCSC_ERR_MASK): New.
890         (reset_pcsc_reader, pcsc_get_status, pcsc_send_apdu)
891         (close_pcsc_reader, open_pcsc_reader): Use it after shifting error
892         values.  Reported by Henrik Nordstrom.  Fixes bug #724.
893
894 2006-10-24  Werner Koch  <wk@g10code.com>
895
896         * scdaemon.h (GCRY_MD_USER_TLS_MD5SHA1): New.
897         (MAX_DIGEST_LEN): Increased to 36.
898         * app-p15.c (do_sign): Support for TLS_MD5SHA1.
899         (do_auth): Detect TLS_MD5SHA1.
900         (do_sign): Tweaks for that digest.
901
902 2006-10-23  Werner Koch  <wk@g10code.com>
903
904         * scdaemon.c (main): New command --gpgconf-test.
905
906 2006-10-17  Werner Koch  <wk@g10code.com>
907
908         * Makefile.am (scdaemon_LDADD): Link against libcommonpth.
909
910 2006-10-12  Werner Koch  <wk@g10code.com>
911
912         * apdu.c: Include pth.h after unistd.h for the sake of newer Pth
913         versions.
914
915 2006-10-11  Werner Koch  <wk@g10code.com>
916
917         * app-openpgp.c (do_sign): Redirect to do_auth for OpenPGP.3.
918
919 2006-10-06  Werner Koch  <wk@g10code.com>
920
921         * Makefile.am (AM_CFLAGS): Use PTH version of libassuan.
922         (scdaemon_LDADD): Ditto.
923
924         * scdaemon.h (send_status_info): Mark with sentinel attribute.
925
926 2006-10-02  Marcus Brinkmann  <marcus@g10code.de>
927
928         * command.c (update_reader_status_file): Increase buffer of
929         NUMBUF2 (fixing typo).
930
931 2006-09-24  Marcus Brinkmann  <marcus@g10code.de>
932
933         * app-openpgp.c (do_sign): Advance INDATA by the SHA1 resp. RMD160
934         prefix length.
935
936 2006-09-14  Werner Koch  <wk@g10code.com>
937
938         Replaced all call gpg_error_from_errno(errno) by
939         gpg_error_from_syserror().
940
941         * command.c (scd_command_handler): Replaced
942         init_connected_socket_server by init_socket_server_ext.
943
944 2006-09-07  Werner Koch  <wk@g10code.com>
945
946         * command.c (update_reader_status_file): Execute an event handler
947         if available.
948
949 2006-09-06  Werner Koch  <wk@g10code.com>
950
951         * apdu.c (pcsc_end_transaction): 
952         * pcsc-wrapper.c (pcsc_end_transaction: Fixed dclaration.
953         Reported by Bob Dunlop.
954
955         * scdaemon.h (CTRL,APP): Removed and changed everywhere to
956         ctrl_t/app_t.
957
958         Replaced all Assuan error codes by libgpg-error codes.  Removed
959         all map_to_assuan_status and map_assuan_err.
960         
961         * scdaemon.c (main): Call assuan_set_assuan_err_source to have Assuan
962         switch to gpg-error codes.
963         * command.c (set_error): Adjusted.
964
965 2006-09-02  Marcus Brinkmann  <marcus@g10code.de>
966
967         * command.c (get_reader_slot): Return the slot_table index, not
968         the APDU slot number.
969         (update_reader_status_file): Use the slot_table index in the
970         update_card_removed invocation.
971
972 2006-09-01  Marcus Brinkmann  <marcus@g10code.de>
973
974         * command.c (cmd_getinfo): Handle status command.
975
976 2006-08-30  Marcus Brinkmann  <marcus@g10code.de>
977
978         * command.c (do_reset): Delay resetting CTRL->reader_slot until
979         after update_card_removed invocation.
980
981 2006-08-28  Marcus Brinkmann  <marcus@g10code.de>
982
983         * app-openpgp.c (do_decipher, do_sign): Allow "OPENPGP.2"
984         resp. "OPENPGP.1" for KEYIDSTR.
985
986 2006-08-21  Werner Koch  <wk@g10code.com>
987
988         * pcsc-wrapper.c (handle_open, handle_close): Reset card and
989         protocol on error/close.
990         (handle_status): Don't set the state if the state is unknown.
991         (handle_reset): Ignore an error if already disconnected.  May
992         happen due to system wake-up after hibernation.  Suggested by Bob
993         Dunlop.
994
995 2006-06-28  Werner Koch  <wk@g10code.com>
996
997         * app-openpgp.c (do_writekey): Fixed computation of memmove
998         length.  This led to garbled keys if E was larger than one byte.
999         Thanks to Achim Pietig for hinting at the garbled E.
1000
1001 2006-06-09  Marcus Brinkmann  <marcus@g10code.de>
1002
1003         * Makefile.am (scdaemon_LDADD): Add $(NETLIBS).
1004
1005 2006-04-14  Marcus Brinkmann  <marcus@g10code.de>
1006
1007         * app.c (select_application): Cover up a slot mismatch error in
1008         case it happens (it shouldn't happen).
1009         (release_application): Use APP->slot.  Lock the reader.
1010         (application_notify_card_removed): Lock the reader.
1011
1012 2006-04-11  Werner Koch  <wk@g10code.com>
1013
1014         * command.c (hex_to_buffer): New.
1015         (cmd_apdu): New.
1016
1017 2006-04-03  Werner Koch  <wk@g10code.com>
1018
1019         * scdaemon.c [__GLIBC__]: Default to libpcsclite.so.1.
1020
1021 2006-03-21  Werner Koch  <wk@g10code.com>
1022
1023         * command.c (cmd_pksign): Add --hash option.
1024
1025 2006-03-01  Werner Koch  <wk@g10code.com>
1026
1027         * command.c (status_file_update_lock): New.
1028         (scd_update_reader_status_file): Use lock and factor existing code
1029         out to ..
1030         (update_reader_status_file): .. this.
1031         (do_reset): Use the lock and call update_reader_status_file.
1032
1033 2006-02-20  Werner Koch  <wk@g10code.com>
1034
1035         * apdu.c (open_pcsc_reader): Fixed double free.  Thanks to Moritz.
1036
1037 2006-02-09  Werner Koch  <wk@g10code.com>
1038
1039         * command.c (get_reader_slot, do_reset) 
1040         (scd_update_reader_status_file): Rewrote.
1041
1042         * app.c (release_application): Factored code out to ..
1043         (deallocate_app): new function.
1044         (select_application): Introduce new saved application stuff.
1045         (application_notify_card_removed): New.
1046         * command.c (update_card_removed): Call it here.
1047         (do_reset): And here.
1048
1049         * app.c (check_application_conflict): New.
1050         * command.c (open_card): Use it here.
1051         (cmd_restart): New command.
1052
1053         * command.c (cmd_lock): Fixed --wait option to actually terminate.
1054
1055 2006-02-08  Werner Koch  <wk@g10code.com>
1056
1057         * ccid-driver.c (ccid_get_atr): Read Parameter and select T=1
1058         using these parameters.
1059         (scan_or_find_devices): Check for NULL r_fd.
1060
1061 2006-02-02  Werner Koch  <wk@g10code.com>
1062
1063         * ccid-driver.c (special_transport): New
1064         (ccid_open_reader, do_close_reader, ccid_shutdown_reader)
1065         (bulk_out, bulk_in): Add support for CardMan 4040 reader.
1066
1067         * ccid-driver.c (scan_or_find_devices): Factored most code out to
1068         (scan_or_find_usb_device): .. new.
1069         (make_reader_id): Fixed vendor mask.
1070
1071 2006-01-01  Werner Koch  <wk@g10code.com>
1072
1073         * app-openpgp.c (do_sign): Give user error if hash algorithm is
1074         not supported by the card.
1075
1076 2005-12-06  Werner Koch  <wk@g10code.com>
1077
1078         * apdu.c (open_pcsc_reader): Check that pcsc-wrapper is actually
1079         installed.
1080
1081 2005-11-23  Werner Koch  <wk@g10code.com>
1082
1083         * app-nks.c (verify_pin): Give a special error message for a Nullpin.
1084
1085 2005-10-29  Werner Koch  <wk@g10code.com>
1086
1087         * ccid-driver.c (send_escape_cmd): New args RESULT, RESULTLEN and
1088         RESULTMAX.  Changed all callers.
1089         (ccid_transceive_escape): New.
1090
1091 2005-10-27  Werner Koch  <wk@g10code.com>
1092
1093         * apdu.c [__CYGWIN__]: Make cygwin environment similar to _WIN32.
1094         Suggested by John P. Clizbe.
1095         * scdaemon.c [__CYGWIN__]: Set default PC/SC driver to winscard.dll.
1096
1097 2005-10-19  Werner Koch  <wk@g10code.com>
1098
1099         * ccid-driver.h (CCID_DRIVER_ERR_NO_KEYPAD): New.
1100         * apdu.h (SW_HOST_NO_KEYPAD): New.
1101         * iso7816.h (struct iso7816_pininfo_s): New.
1102         * iso7816.c (map_sw): Support new code.
1103         (iso7816_check_keypad): New.
1104         (iso7816_verify_kp, iso7816_change_reference_data_kp) 
1105         (iso7816_reset_retry_counter_kp): New.  Extended versions of the
1106         original functions.
1107         * apdu.c (host_sw_string): Support new code. 
1108         (reader_table_s): New field CHECK_KEYPAD.
1109         (new_reader_slot, open_ct_reader, open_pcsc_reader) 
1110         (open_ccid_reader, open_rapdu_reader): Initialize it.
1111         (check_ccid_keypad): New.
1112         (apdu_check_keypad): New.
1113         (apdu_send_le): Factored all code out to ...
1114         (send_le): .. new.  Takes an additional arg; changed all callers
1115         of the orginal function to use this one with a NULL for the new
1116         arg.
1117         (apdu_send_simple_kp): New.
1118         (ct_send_apdu, pcsc_send_apdu, my_rapdu_send_apdu) 
1119         (send_apdu_ccid): New arg PININFO.
1120         (send_apdu_ccid): Use the new arg.
1121
1122         * scdaemon.c: New option --disable-keypad.
1123
1124 2005-10-08  Marcus Brinkmann  <marcus@g10code.de>
1125
1126         * Makefile.am (scdaemon_LDADD): Add ../gl/libgnu.a after
1127         ../common/libcommon.a.
1128
1129 2005-09-20  Werner Koch  <wk@g10code.com>
1130
1131         * app-dinsig.c (verify_pin): Try ISO 9564 BCD encoding.
1132
1133         * iso7816.c (iso7816_select_application): Add arg FLAGS.  Changed
1134         all callers to pass 0.
1135         * app-openpgp.c (app_select_openpgp): But this one requires a
1136         special flag.
1137
1138         * app-p15.c (app_select_p15): Don't use select application for the
1139         BELPIC.
1140
1141 2005-09-09  Werner Koch  <wk@g10code.com>
1142
1143         * pcsc-wrapper.c (main): Removed bogus free.
1144
1145         * app-p15.c (do_auth): New.
1146         (do_getattr): New attribs $AUTHKEYID and $DISPSERIALNO.
1147         * app-openpgp.c (do_getattr): Ditto.
1148
1149 2005-09-08  Werner Koch  <wk@g10code.com>
1150
1151         * app-openpgp.c (do_getattr): New key $AUTHKEYID.
1152
1153 2005-09-06  Werner Koch  <wk@g10code.com>
1154
1155         * app-p15.c (do_sign): Tweaked for BELPIC cards.
1156         (read_home_df): New arg R_BELPIC.
1157         (app_select_p15): Set card type for BELPIC.
1158
1159 2005-09-05  Werner Koch  <wk@g10code.com>
1160
1161         * iso7816.c (iso7816_select_path): New.
1162         * app-p15.c (select_ef_by_path): Allow for direct path selection.
1163         (app_select_p15): Try using the Belgian variant of pkcs#15.
1164         (read_home_df): New.
1165         (read_ef_odf): Generalized.
1166         (read_ef_tokeninfo): New.
1167         (read_p15_info): Set serialnumber from TokenInfo.
1168         (app_select_p15): Don't munge serialNumber - that must be done
1169         only once.
1170
1171         * iso7816.c (iso7816_read_binary): Use Le=0 when reading all
1172         data.  Handle 6C00 error and take 6B00 as indication for EOF.
1173         * apdu.h (SW_EXACT_LENGTH_P): New.
1174         * apdu.c (new_reader_slot, reset_pcsc_reader, pcsc_get_status) 
1175         (open_pcsc_reader): Set new reader state IS_T0.
1176         (apdu_send_le): When doing T=0 make sure not to send Lc and Le.
1177         Problem reported by Carl Meijer.
1178         (apdu_send_direct): Initialize RESULTLEN.
1179         * pcsc-wrapper.c (handle_status): Return the current protocol as
1180         a new third word.
1181
1182 2005-08-05  Werner Koch  <wk@g10code.com>
1183
1184         * apdu.c (open_rapdu_reader): Set the reader number.
1185
1186 2005-07-05  Werner Koch  <wk@g10code.com>
1187
1188         * app-openpgp.c (do_readkey): Return a mallcoed copy of the key as
1189         required by the description.  Thanks to Moritz for tracking this
1190         problem down.
1191
1192 2005-06-21  Werner Koch  <wk@g10code.com>
1193
1194         * scdaemon.c (main): ifdef call to ccid_set_debug_level.
1195
1196         * apdu.c (reset_pcsc_reader, open_pcsc_reader): Cast size_t to
1197         ulong for printf.
1198
1199 2005-06-06  Werner Koch  <wk@g10code.com>
1200
1201         * scdaemon.c (main): New option --debug-allow-core-dump. 
1202
1203 2005-06-03  Werner Koch  <wk@g10code.com>
1204
1205         * scdaemon.c (handle_connections): Make sure that the signals we
1206         are handling are not blocked.Block signals while creating new
1207         threads.
1208         (handle_connections): Include the file descriptor into the name of
1209         the thread.
1210
1211 2005-06-02  Werner Koch  <wk@g10code.com>
1212
1213         * app.c (app_dump_state, dump_mutex_state): New.
1214         * scdaemon.c (handle_signal): Print it on SIGUSR1.
1215
1216         * app-openpgp.c (do_writekey): Typo fix.
1217
1218         * command.c (open_card): Check for locked state even if an
1219         application context is available.
1220
1221         * app-common.h: Add REF_COUNT field.
1222         * app.c (release_application, select_application): Implement
1223         reference counting to share the context beween connections.
1224
1225         * app.c (lock_reader, unlock_reader): Take SLOT instead of APP as
1226         argument.  Changed all callers.
1227         (select_application): Unlock the reader on error.  This should fix
1228         the hangs I noticed last week.
1229
1230         * scdaemon.h: Removed card_ctx_t cruft.
1231
1232 2005-06-01  Werner Koch  <wk@g10code.com>
1233
1234         * scdaemon.c: Include mkdtemp.h.
1235
1236 2005-05-31  Werner Koch  <wk@g10code.com>
1237
1238         * tlv.c [GNUPG_MAJOR_VERSION==1]: Define constants instead of
1239         including a gnupg 1.4 header.
1240
1241 2005-05-30  Werner Koch  <wk@g10code.com>
1242
1243         * tlv.c: Add hack to compile without gpg-error.h when used with
1244         GnuPG 1.4.
1245
1246 2005-05-23  Werner Koch  <wk@g10code.com>
1247
1248         * Makefile.am: Do not build sc-copykeys anymore.
1249
1250         * app-openpgp.c (app_openpgp_storekey, app_openpgp_readkey)
1251         (app_openpgp_cardinfo): Removed.
1252
1253         * ccid-driver.c (parse_ccid_descriptor): SCR335 FW version 5.14 is
1254         good.
1255         (do_close_reader): Never do a reset. The caller should instead
1256         make sure that the reader has been closed properly.  The new retry
1257         code in ccid_slot_status will make sure that the readersatrts up
1258         fine even if the last process didn't closed the USB connection
1259         properly.
1260         (ccid_get_atr): For certain readers try switching to ISO mode.
1261         Thanks to Ludovic Rousseau for this hint and the magic numbers.
1262         (print_command_failed): New.
1263         (bulk_in): Use it here. Add new arg NO_DEBUG.
1264         (ccid_slot_status): Disabled debugging.
1265
1266 2005-05-21  Werner Koch  <wk@g10code.com>
1267
1268         * scdaemon.c (handle_signal): Print thread info on SIGUSR1.
1269
1270 2005-05-20  Werner Koch  <wk@g10code.com>
1271
1272         * ccid-driver.c: Replaced macro DEBUG_T1 by a new debug level.
1273         (parse_ccid_descriptor): Mark SCR335 firmware version 5.18 good.
1274         (ccid_transceive): Arghhh.  The seqno is another bit in the
1275         R-block than in the I block, this was wrong at one place.
1276
1277         * scdaemon.c: New options --debug-ccid-driver and
1278         --debug-disable-ticker.
1279
1280         * app-openpgp.c (do_genkey, do_writekey): Factored code to check
1281         for existing key out into ..
1282         (does_key_exist): .. New function.
1283
1284 2005-05-19  Werner Koch  <wk@g10code.com>
1285
1286         * tlv.c (parse_sexp): New.
1287
1288         * command.c (cmd_writekey): New.
1289         * app.c (app_writekey): New.
1290         * app-common.c (app_t): Add function ptr WRITEKEY.
1291         * app-openpgp.c (do_writekey): New.
1292
1293         * app-openpgp.c (do_readkey) [GNUPG_MAJOR_VERSION==1]: Return error.
1294         * app-common.h (app_t) [GNUPG_MAJOR_VERSION==1]: Add a field to
1295         store the Assuan context.
1296
1297 2005-05-17  Werner Koch  <wk@g10code.com>
1298
1299         * scdaemon.c: Removed non-pth code paths.
1300         (create_socket_name, create_server_socket): New.  Taken from
1301         ../agent/gpg-agent.
1302         (cleanup): Changed to adjust for SOCKET_NAME now being malloced.
1303         (ticker_thread): Always use pth_event_occurred; it is again
1304         defined for all decent PTH versions.
1305         (handle_connections): New. Based on the gpg-agent code.
1306         (start_connection_thread): Ditto.
1307         (ticker_thread): Removed.
1308         (cleanup_sh): Removed.
1309         (main): Run the handler for the pipe server in a separate
1310         thread.  This replaces the old ticker thread.
1311         (scd_get_socket_name): New.
1312         * command.c (cmd_getinfo): New command GETINFO.
1313         (scd_command_handler): Renamed argument and changed code to use an
1314         already connected FD.
1315
1316 2005-05-15  Werner Koch  <wk@g10code.com>
1317
1318         * app.c, app-common.h, app-nks.c, app-p15.c, app-dinsig.c
1319         * app-openpgp.c: Change most function return types from int to
1320         gpg_error_t.
1321         * command.c (pin_cb): Ditto.
1322         * sc-copykeys.c (pincb): Ditto.
1323
1324         * app.c (lock_reader, unlock_reader): New.  Changed call handler
1325         wrappers to make use of these functions.
1326
1327 2005-05-07  Werner Koch  <wk@g10code.com>
1328
1329         * ccid-driver.c (do_close_reader): Don't do a reset before close.
1330         Some folks reported that it makes the SCR335 hang less often.
1331         Look at the source on how to re-enable it.
1332
1333 2005-04-27  Werner Koch  <wk@g10code.com>
1334
1335         * app-p15.c (micardo_mse): New.
1336         (do_sign): Call it.
1337         * iso7816.c (iso7816_manage_security_env): Allow passing DATA as
1338         NULL to indicate an empty Lc.
1339         * tlv.c (find_tlv): Check that a found object fits into the
1340         buffer.
1341         (find_tlv_unchecked): New as replacement for the old non-checking
1342         variant.
1343         * app.c (select_application): Keep on using the non-checking
1344         variant.
1345         * app-openpgp.c (get_one_do, dump_all_do): Ditto.
1346
1347         
1348         Removal of the old OpenSC based code.
1349         
1350         * app-p15.c: New.  Basic support for pkcs15 cards without OpenSC.
1351         There are quite a couple of things missing but at least I can use
1352         my old TCOS cards from the Aegypten-1 development for signing.
1353         * app.c (select_application): Detect pkcs15 applications.
1354         * Makefile.am (scdaemon_SOURCES): Removed card.c, card-common.h
1355         and card-p15.c because they are now obsolete. Added app-p15.c.
1356         Removed all OpenSC stuff.
1357         * command.c (do_reset, open_card, cmd_serialno, cmd_learn) 
1358         (cmd_readcert, cmd_readkey, cmd_pksign, cmd_pkdecrypt): Removed
1359         all special cases for the old card.c based mechanisms.
1360         * scdaemon.c, apdu.c: Removed all special cases for OpenSC.
1361
1362 2005-04-20  Werner Koch  <wk@g10code.com>
1363
1364         * command.c: Use GPG_ERR_LOCKED instead of EBUSY.
1365
1366 2005-04-14  Werner Koch  <wk@g10code.com>
1367
1368         * app-openpgp.c (retrieve_key_material): Rewritten.  Return a
1369         proper error code.
1370         (retrieve_next_token): Removed.
1371         (retrieve_fpr_from_card): Rewritten to make use of DO caching and
1372         to take the KEYNO as arg.
1373         (get_public_key): Renamed variable for clarity.
1374
1375 2005-04-12  Werner Koch  <wk@g10code.com>
1376
1377         Basic support for several sessions.
1378         
1379         * command.c (scd_command_handler): Replace the primary_connection
1380         stuff by a real connection list.  Release the local context on
1381         exit.
1382         (scd_update_reader_status_file): Update accordingly.  Send signal
1383         to all connections who registered an event signal.
1384         (cmd_lock, cmd_unlock, register_commands): New commands LOCK and
1385         UNLOCK.
1386         (cmd_setdata, cmd_pksign, cmd_pkauth, cmd_pkdecrypt, cmd_setattr) 
1387         (cmd_genkey, cmd_passwd, cmd_checkpin): Return an error if reader
1388         is locked.
1389         (do_reset): Handle locking.
1390         (open_card): Ditto.  Share the reader slot with other sessions.
1391         (get_reader_slot): New.
1392         (update_card_removed): New.  Use it in the TEST_CARD_REMOVAL macro.
1393
1394 2005-04-07  Werner Koch  <wk@g10code.com>
1395
1396         * app-openpgp.c (do_check_pin): Add hack to allow verification of
1397         CHV3.
1398         (get_public_key): Don't use gcry functions to create S-expressions.
1399         (do_deinit, do_readkey, do_genkey, send_keypair_info): Adjust for
1400         above change.
1401
1402 2005-03-29  Moritz Schulte  <moritz@g10code.com>
1403
1404         * app-openpgp.c (retrieve_fpr_from_card): New function.
1405         (retrieve_next_token): New function.
1406         (retrieve_key_material): New function.
1407         (get_public_key): Implement retrival of key through expernal
1408         helper (gpg) in case the openpgp card is not cooperative enough.
1409
1410 2005-03-16  Werner Koch  <wk@g10code.com>
1411
1412         * ccid-driver.c (parse_ccid_descriptor): Make SCM workaround
1413         reader type specific.
1414         (scan_or_find_devices): Do not check the interface subclass in the
1415         SPR532 kludge, as this depends on the firmware version.
1416         (ccid_get_atr): Get the Slot status first.  This solves the
1417         problem with readers hanging on recent Linux 2.6.x.
1418         (bulk_in): Add argument TIMEOUT and changed all callers to pass an
1419         appropriate one.  Change the standard timeout from 10 to 5 seconds.
1420         (ccid_slot_status): Add a retry code with an initial short timeout.
1421         (do_close_reader): Do an usb_reset before closing the reader.
1422
1423 2005-02-25  Werner Koch  <wk@g10code.com>
1424
1425         * app-openpgp.c (get_public_key): Make sure not to return negative
1426         numbers.
1427         (do_sign): Allow passing of indata with algorithm prefix.
1428         (do_auth): Allow OPENPGP.3 as an alternative ID.
1429
1430         * app.c (app_getattr): Return just the S/N but not the timestamp.
1431
1432 2005-02-24  Werner Koch  <wk@g10code.com>
1433
1434         * app.c (app_getattr): Return APPTYPE or SERIALNO type even if the
1435         application does dot support the getattr call.
1436
1437         * app-openpgp.c (get_one_do): Never try to get a non cacheable
1438         object from the cache.
1439         (get_one_do): Add new arg to return an error code.  Changed all
1440         callers.
1441         (do_getattr): Let it return a proper error code.
1442
1443         * app.c (select_application): Return an error code and the
1444         application context in an new arg.
1445         * command.c (open_card): Adjusted for that.  Don't use the
1446         fallback if no card is present.  Return an error if the card has
1447         been removed without a reset.
1448         (do_reset, cmd_serialno): Clear that error flag.
1449         (TEST_CARD_REMOVAL): New. Use it with all command handlers.
1450         (scd_update_reader_status_file): Set the error flag on all changes.
1451
1452         * scdaemon.c (ticker_thread): Termintate if a shutdown is pending.
1453
1454         * apdu.c: Added some PCSC error codes.
1455         (pcsc_error_to_sw): New.
1456         (reset_pcsc_reader, pcsc_get_status, pcsc_send_apdu) 
1457         (open_pcsc_reader): Do proper error code mapping.
1458
1459 2005-03-16  Werner Koch  <wk@g10code.com>
1460
1461         * ccid-driver.c (parse_ccid_descriptor): Make SCM workaround
1462         reader type specific.
1463         (scan_or_find_devices): Do not check the interface subclass in the
1464         SPR532 kludge, as this depends on the firmware version.
1465         (ccid_get_atr): Get the Slot status first.  This solves the
1466         problem with readers hanging on recent Linux 2.6.x.
1467
1468 2005-02-22  Werner Koch  <wk@g10code.com>
1469
1470         * app-openpgp.c (app_local_s): New field PK.
1471         (do_deinit, do_genkey, app_openpgp_storekey): Clear it.
1472         (get_public_key, send_keypair_info): New.
1473         (do_learn_status): Send KEYPAIR info
1474
1475         * app-common.h (app_ctx_t): Add function pointer READKEY.
1476         * app.c (app_readkey): New.
1477         * command.c (cmd_readkey): Use READKEY function if possible.
1478
1479 2005-01-26  Werner Koch  <wk@g10code.com>
1480
1481         * ccid-driver.c (parse_ccid_descriptor): Need the CSM workaround
1482         also for newer firmware versions.  Need to get a list of fixed
1483         firmware versions and use that.
1484
1485 2005-01-25  Werner Koch  <wk@g10code.com>
1486
1487         * apdu.c (apdu_send_le, apdu_send_direct): Fix some compiler
1488         warnings.
1489
1490         * app-openpgp.c (get_cached_data): New arg GET_IMMEDIATE to bypass
1491         the cache.  Changed all callers.
1492         (get_one_do): Bypass the cache if the value would have been read
1493         directly for v1.1 cards.It makes things a bit slower but obnly for
1494         1.0 cards and there are not that many cards out in the wild.  This
1495         is required to fix a caching bug when generating new keys; as a
1496         side effect of the retrieval of the the C4 DO from the 6E DO the
1497         cached fingerprint will get updated to the old value and later
1498         when signing the generated key the checking of the fingerprint
1499         fails because it won't match the new one.  Thanks to Moritz for
1500         analyzing this problem.
1501         (verify_chv3): Removed the CHV status reread logic because we
1502         won't cache the C4 DO anymore.
1503
1504 2004-12-28  Werner Koch  <wk@g10code.com>
1505
1506         * ccid-driver.c (find_endpoint): New.
1507         (scan_or_find_devices): Add new args to return endpoint info and
1508         interface number.
1509         (ccid_open_reader, ccid_shutdown_reader): Take care of these new
1510         args.
1511         (bulk_in, bulk_out): Use the correct endpoints.
1512         (ccid_transceive_apdu_level): New.
1513         (ccid_transceive): Divert to above.
1514         (parse_ccid_descriptor): Allow APDU level exchange mode.
1515         (do_close_reader): Pass the interface number to usb_release_interface.
1516
1517 2004-12-21  Werner Koch  <wk@g10code.com>
1518
1519         * scdaemon.c (main): Use default_homedir().
1520
1521 2004-12-18  Werner Koch  <wk@g10code.com>
1522
1523         * scdaemon.c (main) [W32]: Remove special Pth initialize..
1524
1525         * scdaemon.h (map_assuan_err): Define in terms of
1526         map_assuan_err_with_source.
1527
1528 2004-12-15  Werner Koch  <wk@g10code.com>
1529
1530         * scdaemon.c [W32]: Various hacks to make it run under W32.
1531
1532         * command.c (scd_update_reader_status_file) [W32]: Don't use kill.
1533
1534         * apdu.c [W32]: Disable use of pcsc_wrapper.
1535
1536         * Makefile.am (scdaemon_LDADD): Reorder libs.
1537         (sc_copykeys_LDADD): Add libassuan because it is needed for W32. 
1538
1539 2004-12-06  Werner Koch  <wk@g10code.com>
1540
1541         * Makefile.am (pkglib_PROGRAMS): Build only for W32.
1542
1543 2004-10-22  Werner Koch  <wk@g10code.com>
1544
1545         * app-openpgp.c (verify_chv3): The minium length for CHV3 is
1546         8. Changed string to match the other ones.
1547
1548 2004-10-21  Werner Koch  <wk@g10code.com>
1549
1550         * app-openpgp.c (do_sign): Replace asprintf by direct allocation.
1551         This avoids problems with missing vasprintf implementations in
1552         gnupg 1.4.
1553
1554         * app-common.h (app_openpgp_storekey: Add prototype. 
1555
1556 2004-10-20  Werner Koch  <wk@g10code.com>
1557
1558         * sc-investigate: Removed.
1559         * Makefile.am (sc_investigate): Removed.
1560         
1561         * pcsc-wrapper.c (load_pcsc_driver): Load get_status_change func.
1562         (handle_open): Succeed even without a present card.
1563         (handle_status, handle_reset): New.
1564         
1565         * apdu.c (apdu_open_reader): Load pcsc_get_status_change fucntion.
1566         (pcsc_get_status): Implemented.
1567         (reset_pcsc_reader): Implemented.
1568         (open_pcsc_reader): Succeed even with no card inserted.
1569         (open_ccid_reader): Set LAST_STATUS.
1570
1571         * iso7816.c (iso7816_select_application): Always use 0 for P1.
1572
1573 2004-10-18  Werner Koch  <wk@g10code.com>
1574
1575         * ccid-driver.c (ccid_get_atr): Reset T=1 state info.
1576
1577 2004-10-14  Werner Koch  <wk@g10code.com>
1578
1579         * app-openpgp.c (parse_login_data): New. 
1580         (app_select_openpgp): Call it.
1581         (do_setattr): Reparse it after change.
1582
1583 2004-10-06  Werner Koch  <wk@g10code.de>
1584
1585         * ccid-driver.c (ccid_open_reader): Store the vendor ID.
1586         (ccid_transceive_secure): New.
1587         (parse_ccid_descriptor): Workaround for an SCM reader problem.
1588
1589 2004-10-04  Werner Koch  <wk@g10code.de>
1590
1591         * ccid-driver.c (send_escape_cmd): New.
1592
1593 2004-09-30  Werner Koch  <wk@g10code.com>
1594
1595         * Makefile.am: Adjusted for gettext 0.14.
1596
1597         * app-openpgp.c (do_sign): Add the error string to the verify
1598         failed messages.
1599
1600 2004-09-27  Werner Koch  <wk@g10code.com>
1601
1602         From gnupg 1.3
1603
1604         * app-openpgp.c: Made all strings translatable.
1605         (verify_chv3) [GNUPG_MAJOR_VERSION]: Make opt.allow_admin
1606         available for use in gnupg 2. 
1607         (verify_chv3): Reimplemented countdown showing to use only
1608         functions from this module.  Flush the CVH status cache on a
1609         successful read.
1610         (get_one_do): Hack to bypass the cache for cards versions > 1.0.
1611         (store_fpr): Store the creation date for card version > 1.0.
1612
1613         * app-openpgp.c (app_openpgp_storekey): Call flush_cache.
1614         (get_cached_data): Move local data initialization to ..
1615         (app_select_openpgp): .. here. Read some flags for later use.
1616         (do_getattr): New read-only attribute EXTCAP.
1617         
1618         * apdu.c (open_pcsc_reader): Do not print empty reader string.
1619
1620         * ccid-driver.c (do_close_reader): Factored some code out from ...
1621         (ccid_close_reader): ..here.
1622         (ccid_shutdown_reader): New.
1623
1624         * apdu.c (apdu_shutdown_reader): New.
1625         (shutdown_ccid_reader): New.
1626
1627         * apdu.c (open_ccid_reader): New arg PORTSTR.  Pass it to
1628         ccid_open_reader.
1629         (apdu_open_reader): Pass portstr to open_ccid_reader.
1630         (apdu_open_reader): No fallback if a full CCID reader id has been
1631         given.
1632
1633         * ccid-driver.c (ccid_get_reader_list): New.
1634         (ccid_open_reader): Changed API to take a string for the reader.
1635         Removed al the cruft for the libusb development vesion which seems
1636         not to be maintained anymore and there are no packages anyway.
1637         The stable library works just fine.
1638         (struct ccid_reader_id_s): Deleted and replaced everywhere by a
1639         simple string.
1640         (usb_get_string_simple): Removed.
1641         (bulk_in): Do valgrind hack here and not just everywhere.
1642
1643         * ccid-driver.c (read_device_info): Removed.
1644         (make_reader_id, scan_or_find_devices): New.
1645         (ccid_open_reader): Simplified by make use of the new functions.
1646         (ccid_set_debug_level): New.  Changed the macros to make use of
1647         it.  It has turned out that it is often useful to enable debugging
1648         at runtime so I added this option.
1649
1650         From gnupg 1.3 - David Shaw  <dshaw@jabberwocky.com>
1651
1652         * app-openpgp.c (verify_chv3): Show a countdown of how many wrong
1653         admin PINs can be entered before the card is locked.
1654
1655         * app-openpgp.c (get_cached_data): Avoid mallocing zero since it
1656         breaks us when using --enable-m-guard.
1657
1658         * ccid-driver.c (usb_get_string_simple): Replacement function to
1659         work with older libusb.
1660
1661         * ccid-driver.c (read_device_info): Fix segfault when usb device
1662         is not accessible.
1663         (ccid_open_reader): Allow working with an even older version of
1664         libusb (usb_busses global instead of usb_get_busses()).
1665
1666 2004-09-11  Werner Koch  <wk@g10code.com>
1667
1668         * app-openpgp.c (app_select_openpgp): Its app_munge_serialno and
1669         not app_number_serialno.
1670
1671 2004-08-20  Werner Koch  <wk@g10code.de>
1672
1673         * app.c (select_application): Fixed serial number extraction and
1674         added the BMI card workaround.
1675         (app_munge_serialno): New.
1676         * app-openpgp.c (app_select_openpgp): Try munging serialno.
1677
1678 2004-08-05  Werner Koch  <wk@g10code.de>
1679
1680         * scdaemon.c (main): New option --disable-application.
1681         * app.c (is_app_allowed): New.
1682         (select_application): Use it to check for disabled applications.
1683
1684         * ccid-driver.h (CCID_DRIVER_ERR_ABORTED): New.
1685         * ccid-driver.c (ccid_open_reader): Support the stable 0.1 version
1686         of libusb.
1687         (ccid_get_atr): Handle short messages.
1688
1689         * apdu.c (my_rapdu_get_status): Implemented.
1690
1691 2004-07-27  Moritz Schulte  <moritz@g10code.com>
1692
1693         * apdu.c: Include <signal.h>.
1694
1695         * Makefile.am: Use @DL_LIBS@ instead of -ldl.
1696
1697 2004-07-22  Werner Koch  <wk@g10code.de>
1698
1699         * Makefile.am: Make OpenSC lib link after libgcrypt. Do not link
1700         to pth.
1701         * apdu.c: Don't use Pth if we use OpenSC.
1702         * sc-investigate.c, scdaemon.c: Disable use of pth if OpenSC is used. 
1703
1704         * scdaemon.c (main): Bumbed thread stack size up to 512k.
1705
1706 2004-07-16  Werner Koch  <wk@gnupg.org>
1707
1708         * apdu.c (reader_table_s):  Add function pointers for the backends.
1709         (apdu_close_reader, apdu_get_status, apdu_activate) 
1710         (send_apdu): Make use of them.
1711         (new_reader_slot): Intialize them to NULL.
1712         (dump_ccid_reader_status, ct_dump_reader_status): New.
1713         (dump_pcsc_reader_status): New.
1714         (open_ct_reader, open_pcsc_reader, open_ccid_reader) 
1715         (open_osc_reader, open_rapdu_reader): Intialize function pointers.
1716         (ct_activate_card, ct_send_apdu, pcsc_send_apdu, osc_send_apdu) 
1717         (error_string): Removed.  Replaced by apdu_strerror.
1718         (get_ccid_error_string): Removed.
1719         (ct_activate_card): Remove the unused loop.
1720         (reset_ct_reader): Implemented.
1721         (ct_send_apdu): Activate the card if not yet done.
1722         (pcsc_send_apdu): Ditto.
1723
1724 2004-07-15  Werner Koch  <wk@gnupg.org>
1725
1726         * ccid-driver.h: Add error codes.
1727         * ccid-driver.c: Implement more or less proper error codes all
1728         over the place.
1729
1730         * apdu.c (apdu_send_direct): New.
1731         (get_ccid_error_string): Add some error code mappings.
1732         (send_apdu): Pass error codes along for drivers already supporting
1733         them.
1734         (host_sw_string): New.
1735         (get_ccid_error_string): Use above.
1736         (send_apdu_ccid): Reset the reader if it has not yet been done.
1737         (open_ccid_reader): Don't care if the ATR can't be read.
1738         (apdu_activate_card): New.
1739         (apdu_strerror): New.
1740         (dump_reader_status): Only enable it with opt.VERBOSE.
1741         * iso7816.c (map_sw): Add mappings for the new error codes.
1742
1743 2004-07-02  Werner Koch  <wk@gnupg.org>
1744
1745         * apdu.c (open_ct_reader, open_pcsc_reader, open_ccid_reader)
1746         (reset_ccid_reader, open_osc_reader): Call dump_reader_status only
1747         in verbose mode.
1748
1749 2004-07-01  Werner Koch  <wk@gnupg.org>
1750
1751         * sc-investigate.c: Initialize Pth which is now required.
1752         (interactive_shell): New command "readpk".
1753
1754         * app-openpgp.c (do_getattr): Fix for sending CA-FPR.
1755
1756 2004-06-30  Werner Koch  <wk@gnupg.org>
1757
1758         * app-openpgp.c (app_openpgp_readkey): Fixed check for valid
1759         exponent.
1760
1761 2004-06-18  Werner Koch  <wk@g10code.com>
1762
1763         * sc-investigate.c (my_read_line): Renamed from read_line.
1764
1765 2004-06-16  Werner Koch  <wk@gnupg.org>
1766
1767         * apdu.c (osc_get_status): Fixed type in function name. Noted by
1768         Axel Thimm.  Yes, I didn't tested it with OpenSC :-(.
1769
1770 2004-04-28  Werner Koch  <wk@gnupg.org>
1771
1772         * app-openpgp.c (do_setattr): Sync FORCE_CHV1.
1773
1774 2004-04-27  Werner Koch  <wk@gnupg.org>
1775
1776         * app-common.h: Do not include ksba.h for gnupg 1.
1777
1778 2004-04-26  Werner Koch  <wk@gnupg.org>
1779
1780         * app-common.h: New members FNC.DEINIT and APP_LOCAL.
1781         * app.c (release_application): Call new deconstructor.
1782         * app-openpgp.c (do_deinit): New.
1783         (get_cached_data, flush_cache_item, flush_cache_after_error)
1784         (flush_cache): New.
1785         (get_one_do): Replaced arg SLOT by APP.  Make used of cached data.
1786         (verify_chv2, verify_chv3): Flush some cache item after error.
1787         (do_change_pin): Ditto.
1788         (do_sign): Ditto.
1789         (do_setattr): Flush cache item.
1790         (do_genkey): Flush the entire cache.
1791         (compare_fingerprint): Use cached data.
1792
1793         * scdaemon.c (main): Do the last change the usual way. This is so
1794         that we can easily test for versioned config files above.
1795
1796 2004-04-26  Marcus Brinkmann  <marcus@g10code.de>
1797
1798         * scdaemon.c (main): For now, always print default filename for
1799         --gpgconf-list, and never /dev/null.
1800
1801 2004-04-21  Werner Koch  <wk@gnupg.org>
1802
1803         * command.c (scd_update_reader_status_file): Send a signal back to
1804         the client.
1805         (option_handler): Parse the new event-signal option.
1806
1807         * scdaemon.c (handle_signal): Do not use SIGUSR{1,2} anymore for
1808         changing the verbosity.
1809
1810 2004-04-20  Werner Koch  <wk@gnupg.org>
1811
1812         * command.c (scd_update_reader_status_file): Write status files.
1813
1814         * app-help.c (app_help_read_length_of_cert): Fixed calculation of
1815         R_CERTOFF.
1816
1817         * pcsc-wrapper.c: New.
1818         * Makefile.am (pkglib_PROGRAMS): Install it here.
1819         * apdu.c (writen, readn): New.
1820         (open_pcsc_reader, pcsc_send_apdu, close_pcsc_reader): Use the
1821         pcsc-wrapper if we are using Pth.
1822         (apdu_send_le): Reinitialize RESULTLEN.  Handle SW_EOF_REACHED
1823         like SW_SUCCESS.
1824
1825 2004-04-19  Werner Koch  <wk@gnupg.org>
1826
1827         * ccid-driver.c (parse_ccid_descriptor): Store some of the reader
1828         features away.  New arg HANDLE
1829         (read_device_info): New arg HANDLE. Changed caller.
1830         (bulk_in): Handle time extension requests.
1831         (ccid_get_atr): Setup parameters and the IFSD.
1832         (compute_edc): New. Factored out code.
1833         (ccid_transceive): Use default NADs when required.
1834
1835 2004-04-14  Werner Koch  <wk@gnupg.org>
1836
1837         * scdaemon.h (server_control_s): Add member READER_SLOT.
1838         * scdaemon.c (scd_init_default_ctrl): Initialize READER_SLOT to -1.
1839         * command.c (open_card): Reuse an open slot.
1840         (reset_notify): Just reset the slot if supported by the reader.
1841         (do_reset): Factored code from above out.
1842         (scd_command_handler): Use it for cleanup.
1843
1844         * apdu.h: New pseudo stati SW_HOST_NOT_SUPPORTED,
1845         SW_HOST_LOCKING_FAILED and SW_HOST_BUSY.
1846         * iso7816.c (map_sw): Map it.
1847         
1848         * ccid-driver.c (ccid_slot_status): Add arg STATUSBITS.
1849         * apdu.c (apdu_get_status): New.
1850         (ct_get_status, pcsc_get_status, ocsc_get_status): New stubs.
1851         (get_status_ccid): New.
1852         (apdu_reset): New.
1853         (reset_ct_reader, reset_pcsc_reader, reset_osc_reader): New stubs.
1854         (reset_ccid_reader): New.
1855         (apdu_enum_reader): New.
1856         
1857         * apdu.c (lock_slot, trylock_slot, unlock_slot): New helpers.
1858         (new_reader_slot) [USE_GNU_PTH]: Init mutex.
1859         (apdu_reset, apdu_get_status, apdu_send_le): Run functions
1860         in locked mode.
1861
1862         * command.c (scd_update_reader_status_file): New.
1863         * scdaemon.c (handle_tick): Call it.
1864
1865 2004-04-13  Werner Koch  <wk@gnupg.org>
1866
1867         * scdaemon.c: Convert to a Pth application.
1868         (handle_signal, ticker_thread, handle_tick): New.
1869         (main): Fire up the ticker thread in server mode.
1870
1871 2004-03-23  Werner Koch  <wk@gnupg.org>
1872
1873         * scdaemon.c (main) <gpgconf_list>: Fixed output for pcsc_driver.
1874
1875 2004-03-17  Werner Koch  <wk@gnupg.org>
1876
1877         * tlv.c (parse_ber_header): Do not check for tag overflow - it
1878         does not make sense.  Simplified the check for length overflow.
1879
1880         * scdaemon.c (main) <gpgconf>: Fixed default value quoting.
1881
1882 2004-03-16  Werner Koch  <wk@gnupg.org>
1883
1884         * app-dinsig.c: Implemented. Based on app-nks.c and card-dinsig.c
1885         * app-nks.c (get_length_of_cert): Removed.
1886         * app-help.c: New.
1887         (app_help_read_length_of_cert): New.  Code taken from above.  New
1888         optional arg R_CERTOFF.
1889
1890         * card-dinsig.c: Removed.
1891         * card.c (card_get_serial_and_stamp): Do not bind to the old and
1892         never finsiged card-dinsig.c.
1893
1894         * iso7816.c (iso7816_read_binary): Allow for an NMAX > 254.
1895
1896 2004-03-11  Werner Koch  <wk@gnupg.org>
1897
1898         * scdaemon.h (out_of_core): Removed.  Replaced callers by standard
1899         gpg_error function.
1900
1901         * apdu.c, iso7816.c, ccid-driver.c [GNUPG_SCD_MAIN_HEADER]: Allow
1902         to include a header defined by the compiler.  This helps us to
1903         reuse the source in other software.
1904
1905 2004-03-10  Werner Koch  <wk@gnupg.org>
1906
1907         * iso7816.c (iso7816_read_record): New arg SHORT_EF.  Changed all
1908         callers.
1909
1910 2004-02-18  Werner Koch  <wk@gnupg.org>
1911
1912         * sc-investigate.c (main): Setup the used character set.
1913         * scdaemon.c (main): Ditto.
1914
1915         * scdaemon.c (set_debug): New.  Add option --debug-level.
1916         (main): Add option --gpgconf-list.
1917
1918 2004-02-12  Werner Koch  <wk@gnupg.org>
1919
1920         * Makefile.am: Include cmacros.am for common flags.
1921
1922 2004-01-29  Werner Koch  <wk@gnupg.org>
1923
1924         * command.c (reset_notify): Release the application context and
1925         close the reader.
1926
1927 2004-01-28  Werner Koch  <wk@gnupg.org>
1928
1929         * iso7816.c (iso7816_manage_security_env): New.
1930         (iso7816_decipher): Add PADIND argument.
1931
1932 2004-01-27  Werner Koch  <wk@gnupg.org>
1933
1934         * command.c (cmd_readcert, cmd_readkey): Work on a copy of LINE.
1935
1936         * app-common.h (app_ctx_s): Added readcert field.
1937         * app.c (app_readcert): New.
1938         * tlv.c (parse_ber_header): Added; taken from libksba.
1939
1940 2004-01-26  Werner Koch  <wk@gnupg.org>
1941
1942         * card.c (map_sc_err): Use SCD as the error source.
1943
1944         * command.c (open_card): ADD arg NAME to allow requesting a
1945         specific application.  Changed all callers.
1946         (cmd_serialno): Allow optional argument to select the desired
1947         application.
1948
1949         * app-nks.c: New. 
1950
1951         * scdaemon.h (opt): Add READER_PORT.
1952         * scdaemon.c (main): Set it here.
1953         * app.c (app_set_default_reader_port): Removed.
1954         (select_application): Add NAME arg and figure out a
1955         default serial number from the GDO. Add SLOT arg and remove all
1956         reader management.
1957         (release_application): New.
1958         (app_write_learn_status): Output an APPTYPE status line.
1959         * command.c (open_card): Adapt for select_application change.
1960         * app-openpgp.c (app_select_openpgp): Removed SN and SNLEN args
1961         and set it directly.  Changed all callers.
1962
1963 2004-01-25  Werner Koch  <wk@gnupg.org>
1964
1965         * iso7816.c (iso7816_select_application): P1 kludge for OpenPGP
1966         card.
1967         * app-openpgp.c (find_tlv): Factor out this function to ..
1968         * tlv.c, tlv.h: .. new.
1969
1970         * scdaemon.h: Introduced app_t and ctrl_t as the new types for APP
1971         and CTRL.
1972
1973 2004-01-21  Werner Koch  <wk@gnupg.org>
1974
1975         * apdu.c (apdu_send_le): Treat SW_EOF_REACHED as a warning.
1976
1977 2004-01-20  Werner Koch  <wk@gnupg.org>
1978
1979         * iso7816.c (iso7816_read_binary): New.
1980         (iso7816_select_file): New.
1981         (iso7816_list_directory): New.
1982
1983         * sc-investigate.c: Add option -i.
1984         (select_app, read_line, interactive_shell): New.
1985
1986 2004-01-16  Werner Koch  <wk@gnupg.org>
1987
1988         * apdu.h: Add SW_FILE_NOT_FOUND.
1989         * iso7816.c (map_sw): Map it to GPG_ERR_ENOENT.
1990         * iso7816.c (iso7816_select_file): New.
1991
1992         * app-dinsig.c: New file w/o any real code yet.
1993         * Makefile.am (scdaemon_SOURCES,sc_investigate_SOURCES): Add file.
1994
1995         * sc-investigate.c: Add option --disable-ccid.
1996
1997 2003-12-19  Werner Koch  <wk@gnupg.org>
1998
1999         * apdu.c (apdu_send_le): Send a get_response with the indicated
2000         length and not the 64 bytes we used for testing.
2001
2002         * app-openpgp.c (verify_chv2, verify_chv3, do_sign): Check the
2003         minimum length of the passphrase, so that we don't need to
2004         decrement the retry counter.
2005
2006 2003-12-17  Werner Koch  <wk@gnupg.org>
2007
2008         * card-p15.c (p15_enum_keypairs): Replaced KRC by RC.
2009         * card-dinsig.c (dinsig_enum_keypairs): Ditto.
2010
2011 2003-12-16  Werner Koch  <wk@gnupg.org>
2012
2013         * scdaemon.c (main): Set the prefixes for assuan logging.
2014
2015 2003-11-17  Werner Koch  <wk@gnupg.org>
2016
2017         * scdaemon.c, scdaemon.h: New options --allow-admin and --deny-admin.
2018         * app-openpgp.c (verify_chv3): Check it here.
2019
2020 2003-11-12  Werner Koch  <wk@gnupg.org>
2021
2022         Adjusted for API changes in Libksba.
2023
2024 2003-10-30  Werner Koch  <wk@gnupg.org>
2025
2026         * apdu.c (close_ct_reader, close_pcsc_reader): Implemented.
2027         (get_ccid_error_string): New.  Not very useful messages, though.
2028
2029 2003-10-25  Werner Koch  <wk@gnupg.org>
2030
2031         * ccid-driver.c (ccid_open_reader): Return an error if no USB
2032         devices are found.
2033
2034         * command.c (cmd_genkey, cmd_passwd): Fixed faulty use of
2035         !spacep().
2036
2037         * apdu.c (apdu_open_reader): Hacks for PC/SC under Windows.
2038
2039 2003-10-20  Werner Koch  <wk@gnupg.org>
2040
2041         * command.c (cmd_checkpin): New.
2042         (register_commands): Add command CHECKPIN.
2043         * app.c (app_check_pin): New.
2044         * app-openpgp.c (check_against_given_fingerprint): New. Factored
2045         out that code elsewhere.
2046         (do_check_pin): New.
2047
2048 2003-10-10  Werner Koch  <wk@gnupg.org>
2049
2050         * ccid-driver.c (ccid_close_reader): New.
2051
2052         * apdu.c (close_ccid_reader, close_ct_reader, close_csc_reader)
2053         (close_osc_reader, apdu_close_reader): New.  Not all are properly
2054         implemented yet.
2055
2056 2003-10-09  Werner Koch  <wk@gnupg.org>
2057
2058         * ccid-driver.c (ccid_transceive): Add T=1 chaining for sending.
2059
2060 2003-10-08  Werner Koch  <wk@gnupg.org>
2061
2062         * app-openpgp.c (do_getattr): Support SERIALNO and AID.
2063
2064 2003-10-01  Werner Koch  <wk@gnupg.org>
2065
2066         * ccid-driver.c: Detect GnuPG 1.3 and include appropriate files.
2067         * apdu.c: Ditto.
2068         * app-openpgp.c: Ditto.
2069         * iso7816.c: Ditto.
2070         (generate_keypair): Renamed to ..
2071         (do_generate_keypair): .. this.
2072         * app-common.h [GNUPG_MAJOR_VERSION]: New.
2073         * iso7816.h [GNUPG_MAJOR_VERSION]: Include cardglue.h
2074
2075 2003-09-30  Werner Koch  <wk@gnupg.org>
2076
2077         * command.c (cmd_getattr): New command GETATTR.
2078         * app.c (app_setattr): New.
2079         (do_getattr): New.
2080         (do_learn_status): Reimplemented in terms of do_getattr.
2081
2082         * app-openpgp.c (do_change_pin): Make sure CVH1 and CHV2 are
2083         always synced.
2084         (verify_chv2, verify_chv3): New. Factored out common code.
2085         (do_setattr, do_sign, do_auth, do_decipher): Change the names of
2086         the prompts to match that we have only 2 different PINs.
2087         (app_select_openpgp): Check whether the card enforced CHV1.
2088         (convert_sig_counter_value): New. Factor out code from
2089         get_sig_counter.
2090
2091 2003-09-28  Werner Koch  <wk@gnupg.org>
2092
2093         * app-openpgp.c (dump_all_do): Use gpg_err_code and not gpg_error.
2094
2095 2003-09-19  Werner Koch  <wk@gnupg.org>
2096
2097         * ccid-driver.c (parse_ccid_descriptor): New.
2098         (read_device_info): New.
2099         (ccid_open_reader): Check that the device has all required features.
2100
2101 2003-09-06  Werner Koch  <wk@gnupg.org>
2102
2103         * scdaemon.c (main): --pcsc-driver again defaults to pcsclite.
2104         David Corcoran was so kind to remove the GPL incompatible
2105         advertisng clause from pcsclite.
2106         * apdu.c (apdu_open_reader): Actually make pcsc-driver option work.
2107
2108 2003-09-05  Werner Koch  <wk@gnupg.org>
2109
2110         * ccid-driver.c: More work, data can now actually be retrieved.
2111         * ccid-driver.c, ccid-driver.h: Alternativley allow use under BSD
2112         conditions.
2113
2114 2003-09-02  Werner Koch  <wk@gnupg.org>
2115
2116         * scdaemon.c, scdaemon.h: New option --pcsc-ccid.
2117         * ccid-driver.c, ccid-driver.h: New but far from being useful.
2118         * Makefile.am: Add above.
2119         * apdu.c: Add support for that ccid driver.
2120         
2121 2003-08-26  Timo Schulz  <twoaday@freakmail.de>
2122
2123         * apdu.c (new_reader_slot): Only set 'is_osc' when OpenSC
2124         is used.
2125         
2126 2003-08-25  Werner Koch  <wk@gnupg.org>
2127
2128         * command.c (cmd_setattr): Use a copy of LINE.
2129         (cmd_genkey): Use a copy of KEYNO.
2130         (cmd_passwd): Use a copy of CHVNOSTR.
2131         (cmd_pksign, cmd_pkauth, cmd_pkdecrypt): s/strdup/xtrystrdup/.
2132
2133 2003-08-19  Werner Koch  <wk@gnupg.org>
2134
2135         * scdaemon.c, scdaemon.h: New option --pcsc-driver.
2136         * apdu.c (apdu_open_reader): Use that option here instead of a
2137         hardcoded one.
2138
2139 2003-08-18  Werner Koch  <wk@gnupg.org>
2140
2141         * Makefile.am: Add OPENSC_LIBS to all programs. 
2142
2143         * scdaemon.c, scdaemon.h: New option --disable-opensc.
2144         * card.c (card_open): Implement it.
2145         * apdu.c (open_osc_reader, osc_send_apdu): New.
2146         (apdu_open_reader) [HAVE_OPENSC]: Use the opensc driver if not
2147         disabled.
2148         (error_string) [HAVE_OPENSC]: Use sc_strerror.
2149         (send_apdu) [HAVE_OPENSC]: Call osc_apdu_send.
2150
2151         * card-p15.c (p15_enum_keypairs, p15_prepare_key): Adjusted for
2152         libgpg-error.
2153
2154 2003-08-14  Timo Schulz  <twoaday@freakmail.de>
2155
2156         * apdu.c (ct_activate_card): Change the code a little to avoid
2157         problems with other readers.
2158         * Always use 'dynload.h' instead of 'dlfcn.h'.
2159
2160 2003-08-05  Werner Koch  <wk@gnupg.org>
2161
2162         * app-openpgp.c (dump_all_do): Don't analyze constructed DOs after
2163         an error.
2164
2165 2003-08-04  Werner Koch  <wk@gnupg.org>
2166
2167         * app.c (app_set_default_reader_port): New.
2168         (select_application): Use it here.
2169         * scdaemon.c (main): and here.
2170         * sc-copykeys.c: --reader-port does now take a string.
2171         * sc-investigate.c, scdaemon.c: Ditto.
2172         * apdu.c (apdu_open_reader): Ditto.  Load pcsclite if no ctapi
2173         driver is configured.  Always include code for ctapi.
2174         (new_reader_slot): Don't test for already used ports and remove
2175         port arg.
2176         (open_pcsc_reader, pcsc_send_apdu, pcsc_error_string): New.
2177         (apdu_send_le): Changed RC to long to cope with PC/SC.
2178
2179         * scdaemon.c, scdaemon.h: New option --ctapi-driver.
2180         * sc-investigate.c, sc-copykeys.c: Ditto.
2181         
2182 2003-07-31  Werner Koch  <wk@gnupg.org>
2183
2184         * Makefile.am (scdaemon_LDADD): Added INTLLIBS.
2185
2186 2003-07-28  Werner Koch  <wk@gnupg.org>
2187
2188         * app-openpgp.c (do_setattr): Change implementation.  Allow all
2189         useful DOs.
2190
2191 2003-07-27  Werner Koch  <wk@gnupg.org>
2192
2193         Adjusted for gcry_mpi_print and gcry_mpi_scan API change.
2194
2195 2003-07-24  Werner Koch  <wk@gnupg.org>
2196
2197         * app-openpgp.c (do_learn_status): Print more status information.
2198         (app_select_openpgp): Store the card version.
2199         (store_fpr): Add argument card_version and fix DOs for old cards.
2200         (app_openpgp_storekey): Likewise.
2201
2202 2003-07-23  Werner Koch  <wk@gnupg.org>
2203
2204         * command.c (cmd_pkauth): New.
2205         (cmd_setdata): Check whether data was given at all to avoid
2206         passing 0 to malloc.
2207
2208         * app.c (app_auth): New.
2209         * app-openpgp.c (do_auth): New.
2210
2211 2003-07-22  Werner Koch  <wk@gnupg.org>
2212
2213         * command.c (cmd_passwd): New.
2214         * app.c (app_change_pin): New.
2215         * app-openpgp.c (do_change_pin): New.
2216         * iso7816.c (iso7816_reset_retry_counter): Implemented.
2217
2218         * sc-investigate.c (main): New option --gen-random.
2219         * iso7816.c (iso7816_get_challenge): Don't create APDUs with a
2220         length larger than 255.
2221
2222 2003-07-17  Werner Koch  <wk@gnupg.org>
2223
2224         * command.c (cmd_random): New command RANDOM.
2225
2226         * iso7816.c (map_sw): New. Use it in this file to return
2227         meaningful error messages.  Changed all public fucntions to return
2228         a gpg_error_t.
2229         (iso7816_change_reference_data): New.
2230         * apdu.c (apdu_open_reader): Use faked status words for soem
2231         system errors.
2232
2233 2003-07-16  Werner Koch  <wk@gnupg.org>
2234
2235         * apdu.c (apdu_send_simple): Use apdu_send_le so that we can
2236         specify not to send Le as it should be.
2237
2238 2003-07-15  Werner Koch  <wk@gnupg.org>
2239
2240         * Makefile.am: Add sc-copykeys program.
2241         * sc-copykeys.c: New.
2242         * app-openpgp.c (app_openpgp_storekey): New.
2243         (app_openpgp_cardinfo): New.
2244         (count_bits): New.
2245         (store_fpr): And use it here to get the actual length in bit.
2246
2247 2003-07-03  Werner Koch  <wk@gnupg.org>
2248
2249         * app-openpgp.c (do_setattr): Add setting of the URL.
2250         (app_select_openpgp): Dump card data only in very verbose mode.
2251         (do_decipher): New.
2252
2253 2003-07-02  Werner Koch  <wk@gnupg.org>
2254
2255         * app-openpgp.c (get_sig_counter): New.
2256         (do_sign): Print the signature counter and enable the PIN callback.
2257         (do_genkey): Implement the PIN callback. 
2258
2259 2003-07-01  Werner Koch  <wk@gnupg.org>
2260
2261         * app-openpgp.c (store_fpr): Fixed fingerprint calculation.
2262
2263 2003-06-26  Werner Koch  <wk@gnupg.org>
2264
2265         * app-openpgp.c (find_tlv): Fixed length header parsing.
2266
2267         * app.c (app_genkey): New.
2268         * command.c (cmd_genkey): New.
2269
2270 2003-06-25  Werner Koch  <wk@gnupg.org>
2271
2272         * command.c (percent_plus_unescape): New.
2273         (cmd_setattr): New.
2274
2275 2003-06-24  Werner Koch  <wk@gnupg.org>
2276
2277         * command.c (send_status_info): New.
2278
2279         * app-openpgp.c (app_select_openpgp): Replace SLOT arg by APP arg
2280         and setup the function pointers in APP on success. Changed callers.
2281         * app.c: New.
2282         * app-common.h: New.
2283         * scdaemon.h (APP): New type to handle applications.
2284         (server_control_s): Add an APP context field.
2285
2286         * command.c (cmd_serialno): Handle applications.
2287         (cmd_pksign): Ditto.
2288         (cmd_pkdecrypt): Ditto.
2289         (reset_notify): Ditto.
2290         (cmd_learn): For now return error for application contexts.
2291         (cmd_readcert): Ditto.
2292         (cmd_readkey): Ditto.
2293
2294 2003-06-04  Werner Koch  <wk@gnupg.org>
2295
2296         * card.c (map_sc_err): Renamed gpg_make_err to gpg_err_make.
2297
2298         Renamed error codes from INVALID to INV and removed _ERROR suffixes.
2299
2300 2003-06-03  Werner Koch  <wk@gnupg.org>
2301
2302         Changed all error codes in all files to the new libgpg-error scheme.
2303
2304         * scdaemon.h: Include gpg-error.h and errno.h
2305         * card.c (map_sc_err): Use unknown for the error source.
2306         * Makefile.am: Link with libgpg-error
2307
2308 2003-05-14  Werner Koch  <wk@gnupg.org>
2309
2310         * atr.c, atr.h: New.
2311         * sc-investigate.c: Dump the ATR in a human readable format.
2312
2313 2003-05-08  Werner Koch  <wk@gnupg.org>
2314
2315         * scdaemon.h (DBG_CARD_IO_VALUE): New.
2316
2317         * sc-investigate.c: New.
2318         * scdaemon.c (main): Removed --print-atr option.
2319
2320         * iso7816.c, iso7816.h, app-openpgp.c: New.
2321
2322 2003-04-29  Werner Koch  <wk@gnupg.org>
2323
2324         * scdaemon.c: New options --print-atr and --reader-port
2325         * apdu.c, apdu.h: New
2326
2327         * card.c, card-p15.c, card-dinsig.c: Allow build without OpenSC.
2328         
2329         * Makefile.am (LDFLAGS): Removed.
2330
2331         * command.c (register_commands): Adjusted for new Assuan semantics.
2332
2333 2002-08-21  Werner Koch  <wk@gnupg.org>
2334
2335         * scdaemon.c (main): New option --daemon so that the program is
2336         not accidently started in the background.
2337
2338 2002-08-16  Werner Koch  <wk@gnupg.org>
2339
2340         * scdaemon.c: Include i18n.h.
2341
2342         * card-common.h (struct p15_private_s): Forward declaration.  Add
2343         it to card_ctx_s.
2344         * card.c (card_close): Make sure private data is released.
2345         (card_enum_certs): New.
2346         * card-p15.c (p15_release_private_data): New.
2347         (init_private_data): New to work around an OpenSC weirdness.
2348         (p15_enum_keypairs): Do an OpenSC get_objects only once.
2349         (p15_enum_certs): New.
2350         (card_p15_bind): Bind new function.
2351         * command.c (cmd_learn): Return information about the certificates.
2352
2353 2002-08-09  Werner Koch  <wk@gnupg.org>
2354
2355         * card.c (card_get_serial_and_stamp): Use the tokeinfo serial
2356         number as a fallback. Add a special prefix for serial numbers.
2357
2358 2002-07-30  Werner Koch  <wk@gnupg.org>
2359
2360         Changes to cope with OpenSC 0.7.0:
2361         
2362         * card.c: Removed the check for the packed opensc version.
2363         Changed include file names of opensc.
2364         (map_sc_err): Adjusted error codes for new opensc version.
2365         * card-p15.c: Changed include filename of opensc.
2366         * card-dinsig.c: Ditto.
2367
2368         * card-p15.c (p15_decipher): Add flags argument to OpenSC call.
2369         
2370 2002-07-24  Werner Koch  <wk@gnupg.org>
2371
2372         * card.c (find_simple_tlv, find_iccsn): New.
2373         (card_get_serial_and_stamp): Improved serial number parser.
2374
2375 2002-06-27  Werner Koch  <wk@gnupg.org>
2376
2377         * scdaemon.c (main): Use GNUPG_DEFAULT_HOMEDIR constant.
2378
2379 2002-06-15  Werner Koch  <wk@gnupg.org>
2380
2381         * card-dinsig.c: Documented some stuff from the DIN norm.
2382
2383 2002-04-15  Werner Koch  <wk@gnupg.org>
2384
2385         * command.c (cmd_pksign, cmd_pkdecrypt): Use a copy of the key ID.
2386
2387 2002-04-12  Werner Koch  <wk@gnupg.org>
2388
2389         * scdaemon.c: New option --debug-sc N.
2390         * card.c (card_open): set it here.
2391
2392         * card-p15.c (p15_prepare_key): Factored out common code from ...
2393         (p15_sign, p15_decipher): here and made the decryption work the
2394         regular way.
2395
2396 2002-04-10  Werner Koch  <wk@gnupg.org>
2397
2398         * card.c (card_open): Return immediately when no reader is available.
2399
2400 2002-03-27  Werner Koch  <wk@gnupg.org>
2401
2402         * card.c (card_open, card_close): Adjusted for changes in OpenSC.
2403
2404 2002-03-10  Werner Koch  <wk@gnupg.org>
2405
2406         * card-p15.c, card-dinsig.c, card-common.h: New.
2407         * card.c: Factored most code out to the new modules, so that we
2408         can better support different types of card applications.
2409
2410 2002-01-26  Werner Koch  <wk@gnupg.org>
2411
2412         * scdaemon.c scdaemon.h, command.c: New. Based on the code from
2413         the gpg-agent.
2414
2415         
2416  Copyright 2002, 2003, 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
2417
2418  This file is free software; as a special exception the author gives
2419  unlimited permission to copy and/or distribute it, with or without
2420  modifications, as long as this notice is preserved.
2421
2422  This file is distributed in the hope that it will be useful, but
2423  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
2424  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.