使用Javax.smartcardio时,请与Desfire EV1包装apdu for PPS命令



我在读者端的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;语法对我来说似乎是正确的,为什么我不能发送此命令?

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

通常,您不能通过javax.smartcardio更改这些参数,除非SmartCard读取器实现了一些具有不同数据速率的卡的特定接口。

最新更新