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

但是,无论何时指定返回数据并尝试发送它,都看不到明确设置除0x9000之外的状态字的任何可能性。

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

对于错误(即状态字0x64XX-0x69XX),这种行为是可以的,但对于0x63XX来说又是什么呢?发送警告并且仍然可以传递返回数据应该没问题。

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

最佳答案

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

请注意-如您所指出-仅当状态字指示9000或警告(即62xx63xx的范围内)时,才应返回数据。返回数据和指示错误的状态字是对ISO 7816-4的误解。

我同意抛出异常以生成警告并不正确,但这就是目前的情况。

10-01 00:03