使用javax.smartcardio时,DESfire EV1包装APDU用于PPS命令的问题

时间:2014-02-06 20:41:56

标签: java smartcard mifare apdu baud-rate

我正在用java编写一个软件,在读者端,与MiFare DESfire EV1卡进行通信。 我正在使用此javax.smartcardio。我设法创建一个通道并发送本地DESfire命令的包装APDU。例如,我设法读取文件甚至进行身份验证。

我最近几天一直在努力尝试在第4级发送PPS命令,以便能够在读卡器和卡之间设置波特率。

本机PPS命令如下:

DESFIRE command code 0xD0
DESFIRE command parameter 0x11 0x0A 

如果我与我之前构建ISO 7816-4包装APDU的技术一致,那么它应该看起来像这样0x90 0xD0 0x00 0x00 0x2 0x11 0x0A 0x00

以下是此命令的响应:

SW1 : 0x91
DESFIRE response data : 0x1C
SW2 : none

0x1C代表ILLEGAL_COMMAND_CODE;语法对我来说似乎正确,为什么我不能发送这个命令?

1 个答案:

答案 0 :(得分:1)

使用APDU包装,您只能包装DESFire命令。 PPS命令是基础ISO 14443-4层的一部分。实际上,PPS命令是ISO 14443-4传输协议的初始化阶段的一部分。但是,一旦您处于可以传输APDU的位置,就已经建立了ISO 14443-4传输协议(ISO-DEP / T = CL)。因此,此时您无法使用PPS命令更改任何协议参数。

一般情况下,您无法通过javax.smartcardio更改这些参数,除非智能卡读卡器实现某些特定接口,以便以不同的数据速率重新激活卡。