多记录读取APDU命令结构?

时间:2015-12-10 11:16:00

标签: javacard

我有一个卡支持T0协议,其上安装了一个小程序。主持人发送"多记录阅读"命令获取记录数据。读取的记录由此命令的此数据字段中的记录标识符指定。这些是我做的步骤:

  1. 选择DF
  2. 发送命令以读取记录序列
      

    00 B2 00 06 16 73 0A 51 02 40 01 54 04 00 10 00 04 73 08 51 02 40 02 54 02 00 01 00

  3. 命令的含义如下:

    • INS =' B2':读取记录
    • P1 =' 00':参考当前记录(ISO 7814-4,7.3.3,表48)
    • P2 =' 07' =' 00000 110' :
      ' 0000'表示当前的短EF ID(ISO 7814-4,7.3.2,表47)
      ' 111'表示读取从最后到P1的所有记录(ISO 7814-4,7.3.3,表49)
    • Le = 16:数据长度
    • 数据字段遵循BER-TLV,例如:
      

    73 0A 51 02 40 01 54 04 00 10 00 04
      标签' 73'表明上面的字节序列包括数据字段中的层次数据对象结构(长度=' 0A')
      标签' 51'参考2字节EF标识符=' 40 01'
      标签' 54'参考一个或多个记录标识符,在这种情况下是' 00 10'和' 00 04'

    • Le =' 00'
      期待卡片回复:
      

    53 |数据长度|记录数据| 53 |数据长度|记录数据| ......

    我用卡测试此命令,卡片返回'未知错误'消息。
    你能告诉我这个命令有什么问题吗?我在任何方面都被误解了吗?
    感谢。

2 个答案:

答案 0 :(得分:0)

如果不了解实际实施情况,则无法回答这个问题。 6F00 - 指示未知错误的状态字 - 只应在实现有内部错误时返回。例如,对于Java Card实现,在处理APDU的6F00方法中,为未捕获的异常返回process

但就像ISO / IEC 7816-4的其他部分一样,没有什么是一成不变的。当应该返回特定错误时甚至没有定义它,所以即使是上述情况也是不确定的。在这方面,ISO / IEC 7816-4完全没用。

答案 1 :(得分:0)

感谢您的回答。我的问题解决了 实际上,返回SW = 61 XY不是错误消息。根据ISO 7814-3,它意味着:

  

正常完成处理(SW2编码N x,即仍然可用的额外数据字节数)。在案例1和3中,   卡不应该使用这样的值。在情况2和4中,为了传输响应数据字节,卡应准备好接收   一个GET RESPONSE命令,P3设置为N x和N e的最小值。

所以只需要发送GET RESPONSE命令来获取响应数据:

00 C0 00 00 XY

XY:可用的额外数据字节数