mirror of
git://git.gnupg.org/gnupg.git
synced 2024-12-22 10:19:57 +01:00
SCD: Add option enable-keypad-varlen and support for GEMPC_PINPAD.
* scd/scdaemon.h (opt): Add enable_keypad_varlen. * scd/scdaemon.c (cmd_and_opt_values): Add oEnableKeypadVarlen. (opts, main): Add oEnableKeypadVarlen. * scd/ccid-driver.c (GEMPC_PINPAD): New. (ccid_transceive_secure): Add enable_varlen handling. Enable GEMPC_PINPAD. -- Note that GEMPC_PINPAD doesn't support variable length keypad input. The feature of fixed length keypad input will be added soon.
This commit is contained in:
parent
65eb98966a
commit
d9f6cc7502
@ -220,6 +220,7 @@ enum {
|
||||
#define SCM_SPR532 0xe003
|
||||
#define CHERRY_ST2000 0x003e
|
||||
#define VASCO_920 0x0920
|
||||
#define GEMPC_PINPAD 0x3478
|
||||
|
||||
/* A list and a table with special transport descriptions. */
|
||||
enum {
|
||||
@ -3307,6 +3308,7 @@ ccid_transceive_secure (ccid_driver_t handle,
|
||||
size_t dummy_nresp;
|
||||
int testmode;
|
||||
int cherry_mode = 0;
|
||||
int enable_varlen = opt.enable_keypad_varlen;
|
||||
|
||||
testmode = !resp && !nresp;
|
||||
|
||||
@ -3345,11 +3347,14 @@ ccid_transceive_secure (ccid_driver_t handle,
|
||||
case VENDOR_SCM: /* Tested with SPR 532. */
|
||||
case VENDOR_KAAN: /* Tested with KAAN Advanced (1.02). */
|
||||
case VENDOR_FSIJ: /* Tested with the gnuk code (2011-01-05). */
|
||||
enable_varlen = 1;
|
||||
break;
|
||||
case VENDOR_VASCO: /* Tested with DIGIPASS 920 */
|
||||
enable_varlen = 1;
|
||||
pinlen_max = 15;
|
||||
break;
|
||||
case VENDOR_CHERRY:
|
||||
enable_varlen = 1;
|
||||
/* The CHERRY XX44 keyboard echos an asterisk for each entered
|
||||
character on the keyboard channel. We use a special variant
|
||||
of PC_to_RDR_Secure which directs these characters to the
|
||||
@ -3360,6 +3365,11 @@ ccid_transceive_secure (ccid_driver_t handle,
|
||||
if (handle->id_product != CHERRY_ST2000)
|
||||
cherry_mode = 1;
|
||||
break;
|
||||
case VENDOR_GEMPC:
|
||||
enable_varlen = 0;
|
||||
if (handle->id_product == GEMPC_PINPAD)
|
||||
break;
|
||||
/* fall through */
|
||||
default:
|
||||
return CCID_DRIVER_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
@ -95,6 +95,7 @@ enum cmd_and_opt_values
|
||||
oAllowAdmin,
|
||||
oDenyAdmin,
|
||||
oDisableApplication,
|
||||
oEnableKeypadVarlen,
|
||||
oDebugDisableTicker
|
||||
};
|
||||
|
||||
@ -148,6 +149,8 @@ static ARGPARSE_OPTS opts[] = {
|
||||
ARGPARSE_s_n (oDenyAdmin, "deny-admin",
|
||||
N_("deny the use of admin card commands")),
|
||||
ARGPARSE_s_s (oDisableApplication, "disable-application", "@"),
|
||||
ARGPARSE_s_n (oEnableKeypadVarlen, "enable-keypad-varlen",
|
||||
N_("use variable length input for keypad")),
|
||||
|
||||
ARGPARSE_end ()
|
||||
};
|
||||
@ -587,6 +590,8 @@ main (int argc, char **argv )
|
||||
add_to_strlist (&opt.disabled_applications, pargs.r.ret_str);
|
||||
break;
|
||||
|
||||
case oEnableKeypadVarlen: opt.enable_keypad_varlen = 1; break;
|
||||
|
||||
default:
|
||||
pargs.err = configfp? ARGPARSE_PRINT_WARNING:ARGPARSE_PRINT_ERROR;
|
||||
break;
|
||||
|
@ -57,6 +57,7 @@ struct
|
||||
const char *reader_port; /* NULL or reder port to use. */
|
||||
int disable_ccid; /* Disable the use of the internal CCID driver. */
|
||||
int disable_keypad; /* Do not use a keypad. */
|
||||
int enable_keypad_varlen; /* Use variable length input for keypad. */
|
||||
int allow_admin; /* Allow the use of admin commands for certain
|
||||
cards. */
|
||||
strlist_t disabled_applications; /* Card applications we do not
|
||||
|
Loading…
x
Reference in New Issue
Block a user