aboutsummaryrefslogtreecommitdiffstats
path: root/scd/apdu.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* SCD: Better interoperability.NIIBE Yutaka2013-01-111-2/+2
| | | | | | * scd/apdu.c: Fill bTeoPrologue[2] field. -- ccid-1.4.5 or older requires this field is filled by application.
* Merge branch 'scd-serialize-bugfix' into scd-workNIIBE Yutaka2013-01-111-4/+31
|\ | | | | | | | | Conflicts: scd/apdu.c
| * SCD: Hold lock for pinpad input.NIIBE Yutaka2013-01-111-3/+30
| | | | | | | | | | * scd/apdu.c (apdu_check_keypad, apdu_keypad_verify) (apdu_keypad_modify): Hold lock to serialize communication.
* | SCD: Support fixed length PIN input for keypad (PC/SC).NIIBE Yutaka2013-01-091-11/+15
| | | | | | | | | | | | | | * scd/apdu.c (pcsc_keypad_verify): SUpport fixed length PIN input for keypad. (pcsc_keypad_modify): Likewise. * scd/ccid-driver.c (ccid_transceive_secure): Clean up.
* | SCD: Support fixed length PIN input for keypad.NIIBE Yutaka2013-01-091-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * scd/iso7816.h (struct pininfo_s): Remove MODE and add FIXEDLEN. * scd/app-dinsig.c (verify_pin): Initialize FIXEDLEN to unknown. * scd/app-nks.c (verify_pin): Likewise. * scd/app-openpgp.c (verify_a_chv, verify_chv3, do_change_pin): Likewise. * scd/apdu.c (check_pcsc_keypad): Add comment. (pcsc_keypad_verify, pcsc_keypad_modify): PC/SC driver only support readers with the feature of variable length input (yet). (apdu_check_keypad): Set FIXEDLEN. * scd/ccid-driver.c (ccid_transceive_secure): Add GEMPC_PINPAD specific settings. Support fixed length PIN input for keypad.
* | SCD: API cleanup for keypad handling.NIIBE Yutaka2013-01-091-62/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * scd/iso7816.h (struct pininfo_s): Rename from iso7816_pininfo_s. Change meaning of MODE. (pininfo_t): Rename from iso7816_pininfo_t. * scd/sc-copykeys.c: Include "iso7816.h". * scd/scdaemon.c, scd/command.c: Likewise. * scd/ccid-driver.c: Include "scdaemon.h" and "iso7816.h". (ccid_transceive_secure): Follow the change of PININFO_T. * scd/app.c: Include "apdu.h" after "iso7816.h". * scd/iso7816.c (iso7816_check_keypad, iso7816_verify_kp) (iso7816_change_reference_data_kp): Follow the change of API. * scd/apdu.c (struct reader_table_s): Change API of CHECK_KEYPAD, KEYPAD_VERIFY, KEYPAD_MODIFY to have arg of PININFO_T. (check_pcsc_keypad, check_ccid_keypad): Likewise. (apdu_check_keypad, apdu_keypad_verify, apdu_keypad_modify): Likewise. (pcsc_keypad_verify, pcsc_keypad_modify, ct_send_apdu) (pcsc_send_apdu_direct, pcsc_send_apdu_wrapped, pcsc_send_apdu) (send_apdu_ccid, ccid_keypad_operation, my_rapdu_send_apdu, send_apdu) (send_le): Follow the change of API. * scd/apdu.h (apdu_check_keypad, apdu_keypad_verify) (apdu_keypad_modify): Change the API. * scd/app-dinsig.c, scd/app-nks.c, scd/app-openpgp.c: Follow the change.
* | SCD: Clean up. Remove PADLEN for keypad input.NIIBE Yutaka2013-01-091-30/+10
|/ | | | | | | | | | | | | | | | | | | | | | | | | | * scd/apdu.c (struct pininfo_s): Use iso7816_pininfo_s. (struct reader_table_s): Remove last arg from check_keypad method. (check_pcsc_keypad, check_pcsc_keypad): Remove PIN_PADLEN. (pcsc_keypad_verify, pcsc_keypad_modify): Don't check PIN_PADLEN. (send_apdu_ccid, ccid_keypad_operation): Remove PIN_PADLEN. (apdu_check_keypad, apdu_keypad_verify, apdu_keypad_modify): Likewise. * scd/apdu.h (apdu_check_keypad, apdu_keypad_verify) (apdu_keypad_modify): Remove PIN_PADLEN. * scd/ccid-driver.c (ccid_transceive_secure): Remove PIN_PADLEN. * scd/ccid-driver.h (ccid_transceive_secure): Remove PIN_PADLEN. * scd/iso7816.c (iso7816_check_keypad, iso7816_verify_kp) (iso7816_change_reference_data_kp): Remove PADLEN. * scd/iso7816.h (struct iso7816_pininfo_s): Remove PADLEN, PADCHAR. -- In the OpenPGPcard specification, password comes with no padding. In GnuPG, we support keypad input for OpenPGPcard only. Thus, it is useless to try to support padding for keypad input.
* Revert SCD changes of 2010-05-03.NIIBE Yutaka2012-12-041-19/+1
| | | | | | | | | | | | | | | | * scd/apdu.c (pcsc_no_service): Remove. (open_pcsc_reader_direct, open_pcsc_reader_wrapped): Remove pcsc_no_service support. (apdu_open_reader): Remove R_NO_SERVICE. * scd/apdu.h (apdu_open_reader): Remove R_NO_SERVICE. * scd/command.c (reader_disabled): Remove. (get_current_reader): Follow the change of R_NO_SERVICE. (open_card, cmd_serialno, scd_command_handler): Remove reader_disabled support. * scd/sc-copykeys.c (main): Follow the change of R_NO_SERVICE. -- Daemon should handle all possible cases. Even if such a difficult case like reader_disabled, it should not exit.
* SCD: Upon error, open_pcsc_reader_wrapped does same as _direct.NIIBE Yutaka2012-10-311-1/+10
| | | | | | * scd/apdu.c (PCSC_E_NO_SERVICE): New. (open_pcsc_reader_direct): Use PCSC_E_NO_SERVICE. (open_pcsc_reader_wrapped): Set pcsc_no_service.
* scd: handle reader/token removal.NIIBE Yutaka2012-06-251-0/+1
| | | | | * scd/apdu.c (pcsc_error_to_sw): PCSC_E_UNKNOWN_READER means SW_HOST_NO_READER.
* Change all quotes in strings and comments to the new GNU standard.Werner Koch2012-06-051-4/+4
| | | | | | | | | | | | | | | | | | | The asymmetric quotes used by GNU in the past (`...') don't render nicely on modern systems. We now use two \x27 characters ('...'). The proper solution would be to use the correct Unicode symmetric quotes here. However this has the disadvantage that the system requires Unicode support. We don't want that today. If Unicode is available a generated po file can be used to output proper quotes. A simple sed script like the one used for en@quote is sufficient to change them. The changes have been done by applying sed -i "s/\`\([^'\`]*\)'/'\1'/g" to most files and fixing obvious problems by hand. The msgid strings in the po files were fixed with a similar command.
* Fix killing PID -1.Ben Kibbey2012-04-101-6/+12
| | | | | | When the KILLSCD command had been sent a race condition would occur causing PID -1 getting killed, which on Linux seems to terminate all applications for the current user.
* Port to npth.Marcus Brinkmann2012-01-251-30/+43
| | | | | | | | | | | | | | | | | | | | | * configure.ac: Don't check for PTH but for NPTH. (AH_BOTTOM): Remove PTH_SYSCALL_SOFT. (have_pth): Rename to ... (have_npth): ... this. (USE_GNU_NPTH): Rename to ... (USE_GNU_PTH): ... this. * m4/npth.m4: New file. * agent/Makefile.am, agent/cache.c, agent/call-pinentry.c, agent/call-scd.c, agent/findkey.c, agent/gpg-agent.c, agent/trustlist.c, common/Makefile.am, common/estream.c, common/exechelp-posix.c, common/exechelp-w32.c, common/exechelp-w32ce.c, common/http.c, common/init.c, common/sysutils.c, dirmngr/Makefile.am, dirmngr/crlfetch.c, dirmngr/dirmngr.c, dirmngr/dirmngr_ldap.c, dirmngr/ldap-wrapper-ce.c, dirmngr/ldap-wrapper.c, dirmngr/ldap.c, g13/Makefile.am, g13/call-gpg.c, g13/g13.c, g13/runner.c, scd/Makefile.am, scd/apdu.c, scd/app.c, scd/ccid-driver.c, scd/command.c, scd/scdaemon.c, tools/Makefile.am: Port to npth.
* Merge ccid_driver_improvement branch.NIIBE Yutaka2012-01-061-4/+4
| | | | | | | | | | | * scd/apdu.c (ccid_keypad_operation): Rename from ccid_keypad_verify. (open_ccid_reader): Use ccid_keypad_operation for verify and modify. * scd/ccid-driver.c (VENDOR_VASCO, VASCO_920): New. (ccid_transceive_apdu_level): Permit sending packet where apdulen <= 289. Support receiving packets in a chain. (ccid_transceive_secure): Maximum is 15 for VASCO DIGIPASS 920. Support keypad_modify method such as CHANGE_REFERENCE_DATA: 0x24.
* Add error log and debug log for pcsc_keypad_verify and pcsc_keypad_modify.NIIBE Yutaka2011-12-201-4/+22
| | | | | * scd/apdu.c (pcsc_keypad_verify): Add debug log and error log. (pcsc_keypad_modify): Likewise.
* scd: Fix for card change returning GPG_ERR_CARD_RESET.Werner Koch2011-12-191-2/+1
| | | | | | | | | * scd/apdu.c (apdu_connect): Do not test for zero atrlen. -- When gpg-agent prompts for insertion of a card this error would be returned. Co-authored-by: Ben Kibbey <[email protected]>
* scd: Add more status word values for documentation.Werner Koch2011-12-141-2/+5
|
* scd: Add debug option for reader function calls.Werner Koch2011-12-141-65/+140
| | | | | | | | * scd/scdaemon.h (DBG_READER_VALUE, DBG_READER): New. * scd/apdu.c (apdu_open_reader, apdu_close_reader) (apdu_shutdown_reader, apdu_connect, apdu_disconnect) (apdu_reset, apdu_get_atr, apdu_get_status): Add debug code. (apdu_activate): Remove this unused function.
* Fix detection of card removal and insertion.Werner Koch2011-12-121-2/+13
| | | | | | | * scd/apdu.c (apdu_connect): Return status codes for no card available and inactive card. * scd/command.c (TEST_CARD_REMOVAL): Also test for GPG_ERR_CARD_RESET. (open_card): Map apdu_connect status to GPG_ERR_CARD_RESET.
* Fix pinpad input support for passphrase modification.NIIBE Yutaka2011-12-021-31/+13
| | | | | | | | | | | | | | | | | | | | | * apdu.c (pcsc_keypad_verify): Have dummy Lc field with value 0. (pcsc_keypad_modify): Likewise. (pcsc_keypad_modify): It's only for ISO7816_CHANGE_REFERENCE_DATA. bConfirmPIN value is determined by the parameter p0. * app-openpgp.c (do_change_pin): The flag use_keypad should be 0 when reset_mode is on, or resetcode is on. use_keypad only makes sense for iso7816_change_reference_data_kp. * iso7816.h (iso7816_put_data_kp): Remove. (iso7816_reset_retry_counter_kp): Remove. (iso7816_reset_retry_counter_with_rc_kp): Remove. (iso7816_change_reference_data_kp): Add an argument: IS_EXCHANGE. * iso7816.c (iso7816_put_data_kp): Remove. (iso7816_reset_retry_counter_kp): Remove. (iso7816_reset_retry_counter_with_rc_kp): Remove. (iso7816_change_reference_data_kp): Add an argument: IS_EXCHANGE.
* PC/SC pinpad support (pinpad input for modify pass phrase with resetcode, by ↵NIIBE Yutaka2011-11-291-24/+27
| | | | admin).
* PC/SC pinpad support (pinpad input for modify pass phrase).NIIBE Yutaka2011-11-291-0/+111
|
* PC/SC pinpad support.NIIBE Yutaka2011-11-281-3/+359
| | | | | | | | | | | | | | | | | | | | | | | | Before this change, it is layered like following: iso7816_verify iso7816_verify_kp apdu_send_simple, apdu_send_simple_kp ... After this change, it will be layered like: iso7816_verify iso7816_verify_kp apdu_send_simple apdu_keypad_verify ... and apdu_send_simple_kp will be deprecated. For PC/SC API, we use: SCardControl API to compose CCID PC_to_RDR_Secure message SCardTransmit API to compose CCID PC_to_RDR_XfrBlock message Considering the support of PC/SC, we have nothing to share between _kp version of iso7816_* and no _kp version.
* Fixed set but unused variable bugsWerner Koch2011-08-101-2/+1
|
* Lock scdaemon to CCID if once found.Werner Koch2011-02-231-2/+16
| | | | | | | | This solves a problem where ccid was used, the card unplugged and then scdaemon tries to find a new (plugged in) reader and thus will eventually try PC/SC over and over again. Also added an explicit --kill command to gpgconf.
* Nuked almost all trailing white space.post-nuke-of-trailing-wsWerner Koch2011-02-041-25/+25
| | | | | | | | We better do this once and for all instead of cluttering all future commits with diffs of trailing white spaces. In the majority of cases blank or single lines are affected and thus this change won't disturb a git blame too much. For future commits the pre-commit scripts checks that this won't happen again.
* Detect non operational readers.Werner Koch2011-01-251-3/+17
| | | | Backport from 2.0.
* Smartcard related updatesWerner Koch2010-11-171-9/+26
|
* Fix for extended length Le in decipherWerner Koch2009-09-031-2/+0
|
* Make bug reporting address easier changeable.Werner Koch2009-07-211-0/+1
|
* Add code to better handle unplugging of a reader.Werner Koch2009-07-161-1/+28
|
* * ccid-driver.c (struct ccid_driver_s): Add fields last_progress,Werner Koch2009-07-131-1/+36
| | | | | | | | | | | | | | | | progress_cb and progress_cb_arg. (ccid_set_progress_cb): New. (print_progress): New. (ccid_transceive): Call print_progress for wait time extensions. * apdu.c (struct reader_table_s): Add field set_progress_cb. (new_reader_slot): Clear that field. (open_ccid_reader): Set it to .. (set_progress_cb_ccid_reader): ... new fucntion. * app.c (print_progress_line): New. (lock_reader): Add arg CTRL to set a progress callback and change all callers to provide it. (unlock_reader): Remove the progress callback.
* Reworked the estream memory buffer allocation.Werner Koch2009-06-291-0/+3
| | | | | Committed already posted patches for the v2 card.
* Make PIN changing code work for v2 cards.Werner Koch2009-05-201-3/+3
|
* Improved smartcard robustness.Werner Koch2009-05-131-24/+77
|
* Print keyid in gpg --list-packets.Werner Koch2009-05-131-2/+2
| | | | | | Add some not yet code to app-nks.c Changed batch mode expiration time computation
* More support for Netkey cards.Werner Koch2009-05-081-11/+44
| | | | | | Small changes to teh CCID driver. Support 2048 bit OpenPGP cards.
* Implement decryption for TCOS 3 cards.Werner Koch2009-03-301-57/+135
|
* Signing using Netkey 3 cards does now work.Werner Koch2009-03-261-2/+5
|
* Make sure not to leak file descriptors if running gpg-agent with aWerner Koch2009-03-191-11/+2
| | | | | command. Restore the signal mask to solve a problem in Mono.
* Fixed a nasty bug in scdaemon which led to a card reset if the card wasWerner Koch2009-02-251-6/+28
| | | | | | inserted during scdaemon startup and a connection was made before the ticker had a chance to run. Add some stuff for better debugging.
* Add limited support for NetKey 3.0 cards.Werner Koch2009-01-081-6/+6
|
* Fix card change detection.Werner Koch2009-01-051-2/+3
|
* Fixed some card related problems.Werner Koch2008-12-181-16/+12
|
* Marked all unused args on non-W32 platforms.Werner Koch2008-10-201-0/+14
|
* Made scdaemon more robust on Windows.Werner Koch2008-10-151-4/+0
|
* SCD changes for PC/SC under W32.Werner Koch2008-10-141-399/+579
|
* 2008-09-28 Marcus Brinkmann <[email protected]>Marcus Brinkmann2008-09-281-2/+2
| | | | | * apdu.c (pcsc_get_status): Fix last change.
* Marcus Brinkmann <[email protected]>Marcus Brinkmann2008-09-231-0/+7
| | | | | | | | | * apdu.c (pcsc_get_status): Be more relaxed with the usable flag under Windows. M scd/ChangeLog M scd/apdu.c
* Support the Certifciate DO of the v2 OpenPGP cards.Werner Koch2008-09-231-50/+100
|