pinpad input for reset code
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
|
2011-11-29 Niibe Yutaka <gniibe@fsij.org>
|
||||||
|
|
||||||
|
* src/openpgp.c (cmd_put_data) [PINPAD_SUPPORT]: Support pinpad
|
||||||
|
input (for reset code).
|
||||||
|
|
||||||
2011-11-24 Niibe Yutaka <gniibe@fsij.org>
|
2011-11-24 Niibe Yutaka <gniibe@fsij.org>
|
||||||
|
|
||||||
* Version 0.15.
|
* Version 0.15.
|
||||||
|
|||||||
@@ -572,13 +572,44 @@ cmd_put_data (void)
|
|||||||
GPG_NO_RECORD();
|
GPG_NO_RECORD();
|
||||||
|
|
||||||
tag = ((cmd_APDU[2]<<8) | cmd_APDU[3]);
|
tag = ((cmd_APDU[2]<<8) | cmd_APDU[3]);
|
||||||
len = cmd_APDU_size - 5;
|
|
||||||
data = &cmd_APDU[5];
|
data = &cmd_APDU[5];
|
||||||
if (len >= 256)
|
|
||||||
/* extended Lc */
|
#if defined(PINPAD_SUPPORT)
|
||||||
|
if (cmd_APDU_size == 4) /* For 0xD3: reset code */
|
||||||
{
|
{
|
||||||
data += 2;
|
len = get_pinpad_input (PIN_INPUT_NEW);
|
||||||
len -= 2;
|
if (len < 0)
|
||||||
|
{
|
||||||
|
GPG_ERROR ();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd_APDU[4] = len;
|
||||||
|
memcpy (data, pin_input_buffer, len);
|
||||||
|
|
||||||
|
len = get_pinpad_input (PIN_INPUT_CONFIRM);
|
||||||
|
if (len < 0)
|
||||||
|
{
|
||||||
|
GPG_ERROR ();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (len != cmd_APDU[4] || memcmp (data, pin_input_buffer, len) !=0)
|
||||||
|
{
|
||||||
|
GPG_SECURITY_FAILURE ();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
len = cmd_APDU_size - 5;
|
||||||
|
if (len >= 256)
|
||||||
|
/* extended Lc */
|
||||||
|
{
|
||||||
|
data += 2;
|
||||||
|
len -= 2;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
gpg_do_put_data (tag, data, len);
|
gpg_do_put_data (tag, data, len);
|
||||||
|
|||||||
Reference in New Issue
Block a user