| 249 |
else |
else |
| 250 |
return STATUS_UNSUCCESSFUL; |
return STATUS_UNSUCCESSFUL; |
| 251 |
vendorID = strlen(keyValue); |
vendorID = strlen(keyValue); |
| 252 |
alias = 0x1D; |
alias = 0x1C; |
| 253 |
for (; vendorID--;) |
for (; vendorID--;) |
| 254 |
alias ^= keyValue[vendorID]; |
alias ^= keyValue[vendorID]; |
| 255 |
|
|
| 493 |
{ |
{ |
| 494 |
int rv; |
int rv; |
| 495 |
char debug_header[] = "<- 121234 "; |
char debug_header[] = "<- 121234 "; |
| 496 |
|
_ccid_descriptor *ccid_descriptor = get_ccid_descriptor(reader_index); |
| 497 |
|
|
| 498 |
|
read_again: |
| 499 |
sprintf(debug_header, "<- %06X ", (int)reader_index); |
sprintf(debug_header, "<- %06X ", (int)reader_index); |
| 500 |
|
|
| 501 |
rv = usb_bulk_read(usbDevice[reader_index].handle, |
rv = usb_bulk_read(usbDevice[reader_index].handle, |
| 515 |
|
|
| 516 |
DEBUG_XXD(debug_header, buffer, *length); |
DEBUG_XXD(debug_header, buffer, *length); |
| 517 |
|
|
| 518 |
|
#define BSEQ_OFFSET 6 |
| 519 |
|
if (buffer[BSEQ_OFFSET] < *ccid_descriptor->pbSeq -1) |
| 520 |
|
{ |
| 521 |
|
DEBUG_INFO("Duplicate frame detected"); |
| 522 |
|
goto read_again; |
| 523 |
|
} |
| 524 |
|
|
| 525 |
return STATUS_SUCCESS; |
return STATUS_SUCCESS; |
| 526 |
} /* ReadUSB */ |
} /* ReadUSB */ |
| 527 |
|
|