scd: Improve --enable-pinpad-varlen.

* tools/gpgconf-comp.c (gc_options_scdaemon): Add
enable-pinpad-varlen.
* scd/apdu.c (check_pcsc_pinpad): Detect SPRx32 reader.

Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
Werner Koch 2013-08-21 15:44:52 +02:00
parent 50c98c7ed6
commit 7bde2bf3b0
3 changed files with 15 additions and 5 deletions

View File

@ -290,10 +290,10 @@ than 0.
@item --enable-pinpad-varlen
@opindex enable-pinpad-varlen
Please specify this option when the card reader supports variable
length input for pinpad (default is no). For known readers listed in
ccid-driver, this option is not needed. Note that if your card reader
doesn't supports variable length input but you want to use it, you
need to specify your pinpad request on your card.
length input for pinpad (default is no). For known readers (listed in
ccid-driver.c and apdu.c), this option is not needed. Note that if
your card reader doesn't supports variable length input but you want
to use it, you need to specify your pinpad request on your card.
@item --disable-pinpad

View File

@ -2002,7 +2002,13 @@ check_pcsc_pinpad (int slot, int command, pininfo_t *pininfo)
pcsc_dword_t len = 256;
int sw;
(void)pininfo; /* XXX: Identify reader and set pininfo->fixedlen. */
/* Hack to identify the SCM SPR532 and SPR332 readers which support
variable length PIN input.
FIXME: Figure out whether there is a feature attribute for this.
Alternatively use the USB ids to detect known readers. */
if (reader_table[slot].rdrname
&& strstr (reader_table[slot].rdrname, "SPRx32"))
pininfo->fixedlen = 0;
check_again:
if (command == ISO7816_VERIFY)

View File

@ -620,6 +620,10 @@ static gc_option_t gc_options_scdaemon[] =
{ "disable-pinpad", GC_OPT_FLAG_NONE|GC_OPT_FLAG_RUNTIME, GC_LEVEL_BASIC,
"gnupg", "do not use a reader's pinpad",
GC_ARG_TYPE_NONE, GC_BACKEND_SCDAEMON },
{ "enable-pinpad-varlen",
GC_OPT_FLAG_NONE|GC_OPT_FLAG_RUNTIME, GC_LEVEL_BASIC,
"gnupg", "use variable length input for pinpad",
GC_ARG_TYPE_NONE, GC_BACKEND_SCDAEMON },
{ "card-timeout", GC_OPT_FLAG_NONE|GC_OPT_FLAG_RUNTIME, GC_LEVEL_BASIC,
"gnupg", "|N|disconnect the card after N seconds of inactivity",
GC_ARG_TYPE_UINT32, GC_BACKEND_SCDAEMON },