diff options
author | NIIBE Yutaka <[email protected]> | 2013-01-09 07:23:55 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2013-02-05 04:37:06 +0000 |
commit | 40a914a2e3052847b49c4b5e8ac8538e97efd18a (patch) | |
tree | f7387bd04fd0479e37801869f8bd699d44123daa /scd/apdu.c | |
parent | SCD: API cleanup for keypad handling. (diff) | |
download | gnupg-40a914a2e3052847b49c4b5e8ac8538e97efd18a.tar.gz gnupg-40a914a2e3052847b49c4b5e8ac8538e97efd18a.zip |
SCD: Support fixed length PIN input for keypad.
* 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.
Diffstat (limited to 'scd/apdu.c')
-rw-r--r-- | scd/apdu.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/scd/apdu.c b/scd/apdu.c index 5a58cfdf6..a207f9dc3 100644 --- a/scd/apdu.c +++ b/scd/apdu.c @@ -1986,7 +1986,7 @@ check_pcsc_keypad (int slot, int command, pininfo_t *pininfo) size_t len = 256; int sw; - (void)pininfo; + (void)pininfo; /* XXX: Identify reader and set pininfo->fixedlen. */ check_again: if (command == ISO7816_VERIFY) @@ -2050,7 +2050,7 @@ pcsc_keypad_verify (int slot, int class, int ins, int p0, int p1, && (sw = reset_pcsc_reader (slot))) return sw; - if (pininfo->mode != 1) + if (pininfo->fixedlen != 0) return SW_NOT_SUPPORTED; if (!pininfo->minlen) @@ -2131,7 +2131,7 @@ pcsc_keypad_modify (int slot, int class, int ins, int p0, int p1, && (sw = reset_pcsc_reader (slot))) return sw; - if (pininfo->mode != 1) + if (pininfo->fixedlen != 0) return SW_NOT_SUPPORTED; if (!pininfo->minlen) @@ -3397,7 +3397,7 @@ apdu_check_keypad (int slot, int command, pininfo_t *pininfo) return SW_HOST_NO_DRIVER; if (opt.enable_keypad_varlen) - pininfo->mode = 0; + pininfo->fixedlen = 0; if (reader_table[slot].check_keypad) { |