| 533 |
if (IOCTL_SMARTCARD_VENDOR_IFD_EXCHANGE == dwControlCode) |
if (IOCTL_SMARTCARD_VENDOR_IFD_EXCHANGE == dwControlCode) |
| 534 |
{ |
{ |
| 535 |
if (FALSE == (DriverOptions & DRIVER_OPTION_CCID_EXCHANGE_AUTHORIZED)) |
if (FALSE == (DriverOptions & DRIVER_OPTION_CCID_EXCHANGE_AUTHORIZED)) |
| 536 |
|
{ |
| 537 |
|
DEBUG_INFO("ifd exchange (Escape command) not allowed"); |
| 538 |
return_value = IFD_COMMUNICATION_ERROR; |
return_value = IFD_COMMUNICATION_ERROR; |
| 539 |
|
} |
| 540 |
else |
else |
| 541 |
{ |
{ |
| 542 |
*pdwBytesReturned = RxLength; |
int iBytesReturned; |
| 543 |
|
|
| 544 |
|
iBytesReturned = RxLength; |
| 545 |
return_value = CmdEscape(Lun, TxBuffer, TxLength, RxBuffer, |
return_value = CmdEscape(Lun, TxBuffer, TxLength, RxBuffer, |
| 546 |
pdwBytesReturned); |
&iBytesReturned); |
| 547 |
|
*pdwBytesReturned = iBytesReturned; |
| 548 |
} |
} |
| 549 |
} |
} |
| 550 |
|
|
| 551 |
|
if (IOCTL_SMARTCARD_VENDOR_VERIFY_PIN == dwControlCode) |
| 552 |
|
{ |
| 553 |
|
int iBytesReturned; |
| 554 |
|
|
| 555 |
|
iBytesReturned = RxLength; |
| 556 |
|
return_value = SecurePIN(Lun, TxBuffer, TxLength, RxBuffer, |
| 557 |
|
&iBytesReturned); |
| 558 |
|
*pdwBytesReturned = iBytesReturned; |
| 559 |
|
} |
| 560 |
|
|
| 561 |
return return_value; |
return return_value; |
| 562 |
} /* IFDHControl */ |
} /* IFDHControl */ |
| 563 |
|
|