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