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