mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
scd: Rename 'keypad' to 'pinpad'.
* NEWS: Mention scd changes. * agent/divert-scd.c (getpin_cb): Change message. * agent/call-scd.c (inq_needpin): Change the protocol to POPUPPINPADPROMPT and DISMISSPINPADPROMPT. * scd/command.c (pin_cb): Likewise. * scd/apdu.c (struct reader_table_s): Rename member functions. (check_pcsc_pinpad, pcsc_pinpad_verify, pcsc_pinpad_modify, check_ccid_pinpad, ccid_pinpad_operation, apdu_check_pinpad apdu_pinpad_verify, apdu_pinpad_modify): Rename. * scd/apdu.h (SW_HOST_NO_PINPAD, apdu_check_pinpad) (apdu_pinpad_verify, apdu_pinpad_modify): Rename. * scd/iso7816.h (iso7816_check_pinpad): Rename. * scd/iso7816.c (map_sw): Use SW_HOST_NO_PINPAD. (iso7816_check_pinpad): Rename. (iso7816_verify_kp, iso7816_change_reference_data_kp): Follow the change. * scd/ccid-driver.h (CCID_DRIVER_ERR_NO_PINPAD): Rename. * scd/ccid-driver.c (ccid_transceive_secure): Use it. * scd/app-dinsig.c (verify_pin): Follow the change. * scd/app-nks.c (verify_pin): Follow the change. * scd/app-openpgp.c (check_pinpad_request): Rename. (parse_login_data, verify_a_chv, verify_chv3, do_change_pin): Follow the change. * scd/scdaemon.c (oDisablePinpad, oEnablePinpadVarlen): Rename. * scd/scdaemon.h (opt): Rename to disable_pinpad, enable_pinpad_varlen. * tools/gpgconf-comp.c (gc_options_scdaemon): Rename to disable-pinpad.
This commit is contained in:
parent
9fec82a30b
commit
c2744e97c8
17 changed files with 149 additions and 129 deletions
|
@ -191,13 +191,13 @@ struct app_local_s {
|
|||
unsigned int def_chv2:1; /* Use 123456 for CHV2. */
|
||||
} flags;
|
||||
|
||||
/* Keypad request specified on card. */
|
||||
/* Pinpad request specified on card. */
|
||||
struct
|
||||
{
|
||||
unsigned int specified:1;
|
||||
int fixedlen_user;
|
||||
int fixedlen_admin;
|
||||
} keypad;
|
||||
} pinpad;
|
||||
|
||||
struct
|
||||
{
|
||||
|
@ -600,11 +600,11 @@ count_bits (const unsigned char *a, size_t len)
|
|||
Bit 1 = CHV2 has been been set to the default PIN of "123456"
|
||||
(this implies that bit 0 is also set).
|
||||
|
||||
P=<keypad-request>
|
||||
P=<pinpad-request>
|
||||
|
||||
Where KEYPAD_REQUEST is in the format of: <n> or <n>,<m>.
|
||||
Where PINPAD_REQUEST is in the format of: <n> or <n>,<m>.
|
||||
N for user PIN, M for admin PIN. If M is missing it means M=N.
|
||||
0 means to force not to use keypad.
|
||||
0 means to force not to use pinpad.
|
||||
|
||||
*/
|
||||
static void
|
||||
|
@ -617,9 +617,9 @@ parse_login_data (app_t app)
|
|||
/* Set defaults. */
|
||||
app->app_local->flags.no_sync = 0;
|
||||
app->app_local->flags.def_chv2 = 0;
|
||||
app->app_local->keypad.specified = 0;
|
||||
app->app_local->keypad.fixedlen_user = -1;
|
||||
app->app_local->keypad.fixedlen_admin = -1;
|
||||
app->app_local->pinpad.specified = 0;
|
||||
app->app_local->pinpad.fixedlen_user = -1;
|
||||
app->app_local->pinpad.fixedlen_admin = -1;
|
||||
|
||||
/* Read the DO. */
|
||||
relptr = get_one_do (app, 0x005E, &buffer, &buflen, NULL);
|
||||
|
@ -654,7 +654,7 @@ parse_login_data (app_t app)
|
|||
}
|
||||
else if (buflen > 1 && *buffer == 'P' && buffer[1] == '=')
|
||||
{
|
||||
/* Keypad request control sequence found. */
|
||||
/* Pinpad request control sequence found. */
|
||||
buffer += 2;
|
||||
buflen -= 2;
|
||||
|
||||
|
@ -687,9 +687,9 @@ parse_login_data (app_t app)
|
|||
|
||||
if (buflen && !(*buffer == '\n' || *buffer == '\x18'))
|
||||
goto next;
|
||||
app->app_local->keypad.specified = 1;
|
||||
app->app_local->keypad.fixedlen_user = n;
|
||||
app->app_local->keypad.fixedlen_admin = m;
|
||||
app->app_local->pinpad.specified = 1;
|
||||
app->app_local->pinpad.fixedlen_user = n;
|
||||
app->app_local->pinpad.fixedlen_admin = m;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1530,14 +1530,14 @@ do_readcert (app_t app, const char *certid,
|
|||
}
|
||||
|
||||
|
||||
/* Decide if we use the keypad of the reader for PIN input according
|
||||
/* Decide if we use the pinpad of the reader for PIN input according
|
||||
to the user preference on the card, and the capability of the
|
||||
reader. This routine is only called when the reader has keypad.
|
||||
Returns 0 if we use keypad, 1 otherwise. */
|
||||
reader. This routine is only called when the reader has pinpad.
|
||||
Returns 0 if we use pinpad, 1 otherwise. */
|
||||
static int
|
||||
check_keypad_request (app_t app, pininfo_t *pininfo, int admin_pin)
|
||||
check_pinpad_request (app_t app, pininfo_t *pininfo, int admin_pin)
|
||||
{
|
||||
if (app->app_local->keypad.specified == 0) /* No preference on card. */
|
||||
if (app->app_local->pinpad.specified == 0) /* No preference on card. */
|
||||
{
|
||||
if (pininfo->fixedlen == 0) /* Reader has varlen capability. */
|
||||
return 0; /* Then, use pinpad. */
|
||||
|
@ -1550,9 +1550,9 @@ check_keypad_request (app_t app, pininfo_t *pininfo, int admin_pin)
|
|||
}
|
||||
|
||||
if (admin_pin)
|
||||
pininfo->fixedlen = app->app_local->keypad.fixedlen_admin;
|
||||
pininfo->fixedlen = app->app_local->pinpad.fixedlen_admin;
|
||||
else
|
||||
pininfo->fixedlen = app->app_local->keypad.fixedlen_user;
|
||||
pininfo->fixedlen = app->app_local->pinpad.fixedlen_user;
|
||||
|
||||
if (pininfo->fixedlen == 0 /* User requests disable pinpad. */
|
||||
|| pininfo->fixedlen < pininfo->minlen
|
||||
|
@ -1566,14 +1566,14 @@ check_keypad_request (app_t app, pininfo_t *pininfo, int admin_pin)
|
|||
|
||||
|
||||
/* Verify a CHV either using using the pinentry or if possibile by
|
||||
using a keypad. PINCB and PINCB_ARG describe the usual callback
|
||||
using a pinpad. PINCB and PINCB_ARG describe the usual callback
|
||||
for the pinentry. CHVNO must be either 1 or 2. SIGCOUNT is only
|
||||
used with CHV1. PINVALUE is the address of a pointer which will
|
||||
receive a newly allocated block with the actual PIN (this is useful
|
||||
in case that PIN shall be used for another verify operation). The
|
||||
caller needs to free this value. If the function returns with
|
||||
success and NULL is stored at PINVALUE, the caller should take this
|
||||
as an indication that the keypad has been used.
|
||||
as an indication that the pinpad has been used.
|
||||
*/
|
||||
static gpg_error_t
|
||||
verify_a_chv (app_t app,
|
||||
|
@ -1631,13 +1631,13 @@ verify_a_chv (app_t app,
|
|||
prompt = _("||Please enter the PIN");
|
||||
|
||||
|
||||
if (!opt.disable_keypad
|
||||
&& !iso7816_check_keypad (app->slot, ISO7816_VERIFY, &pininfo)
|
||||
&& !check_keypad_request (app, &pininfo, 0))
|
||||
if (!opt.disable_pinpad
|
||||
&& !iso7816_check_pinpad (app->slot, ISO7816_VERIFY, &pininfo)
|
||||
&& !check_pinpad_request (app, &pininfo, 0))
|
||||
{
|
||||
/* The reader supports the verify command through the keypad.
|
||||
/* The reader supports the verify command through the pinpad.
|
||||
Note that the pincb appends a text to the prompt telling the
|
||||
user to use the keypad. */
|
||||
user to use the pinpad. */
|
||||
rc = pincb (pincb_arg, prompt, NULL);
|
||||
prompt = NULL;
|
||||
xfree (prompt_buffer);
|
||||
|
@ -1656,7 +1656,7 @@ verify_a_chv (app_t app,
|
|||
}
|
||||
else
|
||||
{
|
||||
/* The reader has no keypad or we don't want to use it. */
|
||||
/* The reader has no pinpad or we don't want to use it. */
|
||||
rc = pincb (pincb_arg, prompt, pinvalue);
|
||||
prompt = NULL;
|
||||
xfree (prompt_buffer);
|
||||
|
@ -1716,7 +1716,7 @@ verify_chv2 (app_t app,
|
|||
/* For convenience we verify CHV1 here too. We do this only if
|
||||
the card is not configured to require a verification before
|
||||
each CHV1 controlled operation (force_chv1) and if we are not
|
||||
using the keypad (PINVALUE == NULL). */
|
||||
using the pinpad (PINVALUE == NULL). */
|
||||
rc = iso7816_verify (app->slot, 0x81, pinvalue, strlen (pinvalue));
|
||||
if (gpg_err_code (rc) == GPG_ERR_BAD_PIN)
|
||||
rc = gpg_error (GPG_ERR_PIN_NOT_SYNCED);
|
||||
|
@ -1815,11 +1815,11 @@ verify_chv3 (app_t app,
|
|||
if (rc)
|
||||
return rc;
|
||||
|
||||
if (!opt.disable_keypad
|
||||
&& !iso7816_check_keypad (app->slot, ISO7816_VERIFY, &pininfo)
|
||||
&& !check_keypad_request (app, &pininfo, 1))
|
||||
if (!opt.disable_pinpad
|
||||
&& !iso7816_check_pinpad (app->slot, ISO7816_VERIFY, &pininfo)
|
||||
&& !check_pinpad_request (app, &pininfo, 1))
|
||||
{
|
||||
/* The reader supports the verify command through the keypad. */
|
||||
/* The reader supports the verify command through the pinpad. */
|
||||
rc = pincb (pincb_arg, prompt, NULL);
|
||||
xfree (prompt);
|
||||
prompt = NULL;
|
||||
|
@ -2015,7 +2015,7 @@ do_change_pin (app_t app, ctrl_t ctrl, const char *chvnostr,
|
|||
int reset_mode = !!(flags & APP_CHANGE_FLAG_RESET);
|
||||
int set_resetcode = 0;
|
||||
pininfo_t pininfo;
|
||||
int use_keypad = 0;
|
||||
int use_pinpad = 0;
|
||||
int minlen = 6;
|
||||
|
||||
(void)ctrl;
|
||||
|
@ -2065,16 +2065,16 @@ do_change_pin (app_t app, ctrl_t ctrl, const char *chvnostr,
|
|||
{
|
||||
/* Version 2 cards. */
|
||||
|
||||
if (!opt.disable_keypad
|
||||
&& !iso7816_check_keypad (app->slot,
|
||||
if (!opt.disable_pinpad
|
||||
&& !iso7816_check_pinpad (app->slot,
|
||||
ISO7816_CHANGE_REFERENCE_DATA, &pininfo)
|
||||
&& !check_keypad_request (app, &pininfo, chvno == 3))
|
||||
use_keypad = 1;
|
||||
&& !check_pinpad_request (app, &pininfo, chvno == 3))
|
||||
use_pinpad = 1;
|
||||
|
||||
if (reset_mode)
|
||||
{
|
||||
/* To reset a PIN the Admin PIN is required. */
|
||||
use_keypad = 0;
|
||||
use_pinpad = 0;
|
||||
app->did_chv3 = 0;
|
||||
rc = verify_chv3 (app, pincb, pincb_arg);
|
||||
if (rc)
|
||||
|
@ -2085,7 +2085,7 @@ do_change_pin (app_t app, ctrl_t ctrl, const char *chvnostr,
|
|||
}
|
||||
else if (chvno == 1 || chvno == 3)
|
||||
{
|
||||
if (!use_keypad)
|
||||
if (!use_pinpad)
|
||||
{
|
||||
char *promptbuf = NULL;
|
||||
const char *prompt;
|
||||
|
@ -2128,7 +2128,7 @@ do_change_pin (app_t app, ctrl_t ctrl, const char *chvnostr,
|
|||
size_t valuelen;
|
||||
int remaining;
|
||||
|
||||
use_keypad = 0;
|
||||
use_pinpad = 0;
|
||||
minlen = 8;
|
||||
relptr = get_one_do (app, 0x00C4, &value, &valuelen, NULL);
|
||||
if (!relptr || valuelen < 7)
|
||||
|
@ -2176,7 +2176,7 @@ do_change_pin (app_t app, ctrl_t ctrl, const char *chvnostr,
|
|||
else
|
||||
app->did_chv1 = app->did_chv2 = 0;
|
||||
|
||||
if (!use_keypad)
|
||||
if (!use_pinpad)
|
||||
{
|
||||
/* TRANSLATORS: Do not translate the "|*|" prefixes but
|
||||
keep it at the start of the string. We need this elsewhere
|
||||
|
@ -2249,7 +2249,7 @@ do_change_pin (app_t app, ctrl_t ctrl, const char *chvnostr,
|
|||
/* Version 2 cards. */
|
||||
assert (chvno == 1 || chvno == 3);
|
||||
|
||||
if (use_keypad)
|
||||
if (use_pinpad)
|
||||
{
|
||||
rc = pincb (pincb_arg,
|
||||
chvno == 3 ?
|
||||
|
@ -3325,7 +3325,7 @@ do_sign (app_t app, const char *keyidstr, int hashalgo,
|
|||
sync, thus we verify CHV2 here using the given PIN. Cards
|
||||
with version2 to not have the need for a separate CHV2 and
|
||||
internally use just one. Obviously we can't do that if the
|
||||
keypad has been used. */
|
||||
pinpad has been used. */
|
||||
if (!app->did_chv2 && pinvalue && !app->app_local->extcap.is_v2)
|
||||
{
|
||||
rc = iso7816_verify (app->slot, 0x82, pinvalue, strlen (pinvalue));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue