[Pcsclite-muscle] What's responsible to filter out Le in Case 4 C-APDUs under T=0?

Michael StJohns mstjohns at comcast.net
Wed Feb 9 18:42:49 PST 2022


On 2/9/2022 3:30 PM, Francois Grieu wrote:
>> > • A case 4 APDU cannot be used. It is the responsibility of the > 
>> application or the service provider to generate a « get response » if 
>> > they need it.
>> This is not exactly what ISO7816-3 says, but it's sort of a reasonable
>> interpretation of how to map APDUs to TPDUs for T=0. Case 3 and Case 4
>> APDUs have the same format for the first command TPDU.
> Does PCSC specify the interface between the application and 
> ScardTransmit ? I though it was one layer closer to the reader. In 
> which case "A case 4 APDU cannot be used" would not necessarily apply 
> to the input of ScardTransmit. 

This is from the definition of the IFD_Transmit_to_ICC function in PCSC 
3 - Section 4.3.2.1.   Given that the CommandData definition matches up 
pretty closely with how SCardTransmit is defined (e.g. pioSendPci 
followed by pbSendBuffer)  I'd say whoever designed SCardTransmit 
probably did a pretty close mapping between the two.  (Maybe look at 
Ludovic's driver code to confirm at least one implementation?).

This also seems on point: 
https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/smclib/ns-smclib-_smartcard_extension 
as it appears to be how a reader driver registers itself to handle requests.

My guess is that SCardTransmit does minor struct formatting and then 
turns around and calls the function pointed to by RDF_TRANSMIT.

Enjoy - Mike





More information about the pcsclite-muscle mailing list