如何发送包含返回数据的响应APDU和0x9000以外的状态字?

时间:2013-11-29 13:19:52

标签: smartcard iso javacard apdu

我想发送一个包含响应数据字段的响应APDU以及一个不是0x9000的状态字。考虑到我对ISO 7816-4的理解,这应该是可能的。

但是,每当我指定返回数据并尝试发送它时,我都没有看到任何明确设置0x9000以外的状态字的可能性。

相反,我可以显式设置任意状态字并将它们作为ISOException发送,但不可能附加返回数据。

此行为可以用于错误,即状态字0x64XX - 0x69XX但是0x63XX是什么?发送警告并仍然传达返回数据应该没问题。

那么是否可以发送包含返回数据和0x9000以外的状态字的响应APDU,我该怎么做?

1 个答案:

答案 0 :(得分:6)

只需确保在抛出异常之前发送数据。你当然可能想要记住你要扔到最后的状态字。然后,您只需使用ISOException.throwIt(short sw)创建状态字。

请注意 - 如您所示 - 如果您的状态字指示9000或警告(即62xx范围内63xx),则只应返回数据。返回数据和指示错误的状态字是对ISO 7816-4的错误解释。

我同意抛出异常以产生警告感觉不对,但目前情况就是如此。