* Display the default CCID message for PIN verification if the reader has a display
* Part 10 -> PC/SC v2 git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3665 c6295689-39f2-0310-b995-f0e70906c6a9
This commit is contained in:
parent
464a4f6d74
commit
3b0faecbb1
|
@ -1102,8 +1102,9 @@ static int part10_build_verify_pin_block(u8 * buf, size_t * size, struct sc_pin_
|
||||||
|
|
||||||
pin_verify->bEntryValidationCondition = 0x02; /* Keypress only */
|
pin_verify->bEntryValidationCondition = 0x02; /* Keypress only */
|
||||||
|
|
||||||
|
pin_verify->bNumberMessage = 0xFF; /* Default message */
|
||||||
|
|
||||||
/* Ignore language and T=1 parameters. */
|
/* Ignore language and T=1 parameters. */
|
||||||
pin_verify->bNumberMessage = 0x00;
|
|
||||||
pin_verify->wLangId = HOST_TO_CCID_16(0x0000);
|
pin_verify->wLangId = HOST_TO_CCID_16(0x0000);
|
||||||
pin_verify->bMsgIndex = 0x00;
|
pin_verify->bMsgIndex = 0x00;
|
||||||
pin_verify->bTeoPrologue[0] = 0x00;
|
pin_verify->bTeoPrologue[0] = 0x00;
|
||||||
|
@ -1204,7 +1205,7 @@ static int part10_build_modify_pin_block(u8 * buf, size_t * size, struct sc_pin_
|
||||||
pin_modify->bEntryValidationCondition = 0x02; /* bEntryValidationCondition, keypress only */
|
pin_modify->bEntryValidationCondition = 0x02; /* bEntryValidationCondition, keypress only */
|
||||||
|
|
||||||
/* Ignore language and T=1 parameters. */
|
/* Ignore language and T=1 parameters. */
|
||||||
pin_modify->bNumberMessage = 0x00;
|
pin_modify->bNumberMessage = 0x00; /* XXX: Latest released CCID driver rejects 0xFF */
|
||||||
pin_modify->wLangId = HOST_TO_CCID_16(0x0000);
|
pin_modify->wLangId = HOST_TO_CCID_16(0x0000);
|
||||||
pin_modify->bMsgIndex1 = 0x00;
|
pin_modify->bMsgIndex1 = 0x00;
|
||||||
pin_modify->bMsgIndex2 = 0x00;
|
pin_modify->bMsgIndex2 = 0x00;
|
||||||
|
@ -1255,7 +1256,7 @@ part10_pin_cmd(sc_reader_t *reader, sc_slot_info_t *slot,
|
||||||
|
|
||||||
/* The APDU must be provided by the card driver */
|
/* The APDU must be provided by the card driver */
|
||||||
if (!data->apdu) {
|
if (!data->apdu) {
|
||||||
sc_error(reader->ctx, "No APDU provided for Part 10 pinpad verification!");
|
sc_error(reader->ctx, "No APDU provided for PC/SC v2 pinpad verification!");
|
||||||
return SC_ERROR_NOT_SUPPORTED;
|
return SC_ERROR_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1284,14 +1285,14 @@ part10_pin_cmd(sc_reader_t *reader, sc_slot_info_t *slot,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If PIN block building failed, we fail too */
|
/* If PIN block building failed, we fail too */
|
||||||
SC_TEST_RET(reader->ctx, r, "Part10 PIN block building failed!");
|
SC_TEST_RET(reader->ctx, r, "PC/SC v2 pinpad block building failed!");
|
||||||
/* If not, debug it, just for fun */
|
/* If not, debug it, just for fun */
|
||||||
sc_bin_to_hex(sbuf, scount, dbuf, sizeof(dbuf), ':');
|
sc_bin_to_hex(sbuf, scount, dbuf, sizeof(dbuf), ':');
|
||||||
sc_debug(reader->ctx, "Part 10 block: %s", dbuf);
|
sc_debug(reader->ctx, "PC/SC v2 pinpad block: %s", dbuf);
|
||||||
|
|
||||||
r = pcsc_internal_transmit(reader, slot, sbuf, scount, rbuf, &rcount, ioctl);
|
r = pcsc_internal_transmit(reader, slot, sbuf, scount, rbuf, &rcount, ioctl);
|
||||||
|
|
||||||
SC_TEST_RET(reader->ctx, r, "Part 10: block transmit failed!");
|
SC_TEST_RET(reader->ctx, r, "PC/SC v2 pinpad: block transmit failed!");
|
||||||
/* finish the call if it was a two-phase operation */
|
/* finish the call if it was a two-phase operation */
|
||||||
if ((ioctl == pslot->verify_ioctl_start)
|
if ((ioctl == pslot->verify_ioctl_start)
|
||||||
|| (ioctl == pslot->modify_ioctl_start)) {
|
|| (ioctl == pslot->modify_ioctl_start)) {
|
||||||
|
@ -1302,7 +1303,7 @@ part10_pin_cmd(sc_reader_t *reader, sc_slot_info_t *slot,
|
||||||
|
|
||||||
rcount = sizeof(rbuf);
|
rcount = sizeof(rbuf);
|
||||||
r = pcsc_internal_transmit(reader, slot, sbuf, 0, rbuf, &rcount, ioctl);
|
r = pcsc_internal_transmit(reader, slot, sbuf, 0, rbuf, &rcount, ioctl);
|
||||||
SC_TEST_RET(reader->ctx, r, "Part 10: finish operation failed!");
|
SC_TEST_RET(reader->ctx, r, "PC/SC v2 pinpad: finish operation failed!");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We expect only two bytes of result data (SW1 and SW2) */
|
/* We expect only two bytes of result data (SW1 and SW2) */
|
||||||
|
|
Loading…
Reference in New Issue