【问题标题】:About Get Response command in javacard关于 javacard 中的 Get Response 命令
【发布时间】:2014-07-12 08:50:18
【问题描述】:

我对获取响应命令感到困惑。我以为我知道,但实际上我不知道。

我想知道情况4卡返回1000字节数据的机制。我猜命令如下。如果有错误请告诉我正确的。

(Card) <== [CLA] [INS] [P1] [P2] [Lc] [Data] [Le] // response data size is 1000 bytes
(Card) ==> 6100

(Card) <== 00 C0 00 00 00
(Card) ==> [Data(256)] 6100

(Card) <== 00 C0 00 00 00
(Card) ==> [Data(256)] 6100

(Card) <== 00 C0 00 00 00
(Card) ==> [Data(256)] 61E8

(Card) <== 00 C0 00 00 E8
(Card) ==> [Data(232)] 9000 (61E8 was my mistake)

问题

  1. 上面的 APDU 是否正确?
  2. 第一个命令中的 [Le] 是什么?
  3. 如何在java小程序中实现GET RESPONSE?
  4. 根据 T=0/T=1 卡实现的方法有什么不同? (我google的时候看到了T=0/T=1卡的信息,但是没看懂。)

我希望任何相关信息的回复或网址。

【问题讨论】:

    标签: javacard apdu getresponse


    【解决方案1】:

    回答您的问题:

    1. 除了 (2) 和最后的评论外,我认为这在很大程度上是正确的;
    2. 对于 T=0,您不会同时发送 Lc 和 Le 字段,在案例 4 命令(命令数据和响应数据)中,仅发送 Lc 并且发送命令数据 - 您也可以说 Le 是空的是以字节为单位的编码;
    3. T=0 由 Java Card OS 处理,您不必自己实现;
    4. T=1 不使用或不需要 GET RESPONSE,因为 T=1 和 T=CL 都是更高级别的协议 - APDU 下面的层已经处理了这一点。此外,可能已经实现了扩展长度支持。

    最后,卡当然应该返回9000 或指示警告或错误的状态字,而不是最后一个命令的61E8(这随后在问题中被修复为问题中的错误)。

    请注意,您应该不要盲目地假设响应将包含请求的字节数。例如,值为 00 的 Le 字节表示 最大 响应大小为 256 字节。

    这一切都在 ISO/IEC 7816-4 第 5.3.4 章:响应链中定义

    在撰写本文时,当前版本是 2013(E)。它是付费软件(但 Google 不是)。

    【讨论】:

    • 我的回答有什么遗漏吗?
    • 感谢您的回答。这些天我很忙,所以我没有时间考虑这个问题。但有时我会尝试访问这里并研究它。再次感谢。
    • 注释2是否表示case 4命令没有发送到T=0卡中?
    • 我修改了上面的APDU。你怎么看待这件事?命令 1:[CLA] [INS] [P1] [P2] [Lc] [数据] SW1:6100 // 命令 2:00 C0 00 00 00 SW2:6100 // 命令 3:00 C0 00 00 00 SW3:6100 // 命令 4 : 00 C0 00 00 00 SW4 : 61E8 // 命令 5 : 00 C0 00 00 E8 SW5 : 9000
    • 是的,T=0 的情况 4 不存在。上面看起来更好(显然,T=0 中的情况 4 除外)。请尽量不要大改问题,否则答案会过时。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-27
    • 1970-01-01
    • 2011-05-18
    • 2014-11-30
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多