mirror of
git://git.gnupg.org/gnupg.git
synced 2025-01-08 12:44:23 +01:00
scd: pinpad workaround for PC/SC implementations.
* scd/adpu.c (pcsc_pinpad_verify, pcsc_pinpad_modify): Bigger buffer for TPDU card reader. -- GnuPG-bug-id: 2003, 2004 This is needed for PC/SC on Debian Jessie. Note that it's not only for Cherry ST-2000, but also, for any TPDU card readers.
This commit is contained in:
parent
4698e5b203
commit
5e1d2fe655
16
scd/apdu.c
16
scd/apdu.c
@ -2290,8 +2290,16 @@ pcsc_pinpad_verify (int slot, int class, int ins, int p0, int p1,
|
|||||||
int sw;
|
int sw;
|
||||||
unsigned char *pin_verify;
|
unsigned char *pin_verify;
|
||||||
int len = PIN_VERIFY_STRUCTURE_SIZE + pininfo->fixedlen;
|
int len = PIN_VERIFY_STRUCTURE_SIZE + pininfo->fixedlen;
|
||||||
unsigned char result[2];
|
/*
|
||||||
pcsc_dword_t resultlen = 2;
|
* The result buffer is only expected to have two-byte result on
|
||||||
|
* return. However, some implementation uses this buffer for lower
|
||||||
|
* layer too and it assumes that there is enough space for lower
|
||||||
|
* layer communication. Such an implementation fails for TPDU
|
||||||
|
* readers with "insufficient buffer", as it needs header and
|
||||||
|
* trailer. Six is the number for header + result + trailer (TPDU).
|
||||||
|
*/
|
||||||
|
unsigned char result[6];
|
||||||
|
pcsc_dword_t resultlen = 6;
|
||||||
int no_lc;
|
int no_lc;
|
||||||
|
|
||||||
if (!reader_table[slot].atrlen
|
if (!reader_table[slot].atrlen
|
||||||
@ -2365,8 +2373,8 @@ pcsc_pinpad_modify (int slot, int class, int ins, int p0, int p1,
|
|||||||
int sw;
|
int sw;
|
||||||
unsigned char *pin_modify;
|
unsigned char *pin_modify;
|
||||||
int len = PIN_MODIFY_STRUCTURE_SIZE + 2 * pininfo->fixedlen;
|
int len = PIN_MODIFY_STRUCTURE_SIZE + 2 * pininfo->fixedlen;
|
||||||
unsigned char result[2];
|
unsigned char result[6]; /* See the comment at pinpad_verify. */
|
||||||
pcsc_dword_t resultlen = 2;
|
pcsc_dword_t resultlen = 6;
|
||||||
int no_lc;
|
int no_lc;
|
||||||
|
|
||||||
if (!reader_table[slot].atrlen
|
if (!reader_table[slot].atrlen
|
||||||
|
Loading…
x
Reference in New Issue
Block a user