我想发送一个包含响应数据字段的响应APDU以及一个不是0x9000的状态字。考虑到我对ISO 7816-4的理解,这应该是可能的。
但是,每当我指定返回数据并尝试发送它时,我都没有看到任何明确设置0x9000以外的状态字的可能性。
相反,我可以显式设置任意状态字并将它们作为ISOException发送,但不可能附加返回数据。
此行为可以用于错误,即状态字0x64XX - 0x69XX但是0x63XX是什么?发送警告并仍然传达返回数据应该没问题。
那么是否可以发送包含返回数据和0x9000以外的状态字的响应APDU,我该怎么做?
答案 0 :(得分:6)
只需确保在抛出异常之前发送数据。你当然可能想要记住你要扔到最后的状态字。然后,您只需使用ISOException.throwIt(short sw)
创建状态字。
请注意 - 如您所示 - 如果您的状态字指示9000
或警告(即62xx
范围内63xx
),则只应返回数据。返回数据和指示错误的状态字是对ISO 7816-4的错误解释。
我同意抛出异常以产生警告感觉不对,但目前情况就是如此。