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

Smartcard 如何发送包含返回数据和非0x9000状态字的响应APDU?,smartcard,iso,javacard,apdu,Smartcard,Iso,Javacard,Apdu,我想发送一个包含响应数据字段以及非0x9000状态字的响应APDU。考虑到我对ISO 7816-4的理解,这通常是可能的 然而,每当我指定返回数据并尝试发送它时,我看不到任何显式设置除0x9000之外的状态字的可能性 相反,我可以显式地设置任意状态字并将它们作为ISOException发送,但不可能附加返回数据 对于错误,即状态字0x64XX-0x69XX,此行为是正常的,但对于0x63XX,该行为是什么?发送警告并仍然传递返回数据应该是可以的 因此,是否可以发送包含返回数据和除0x9000以外

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

然而,每当我指定返回数据并尝试发送它时,我看不到任何显式设置除0x9000之外的状态字的可能性

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

对于错误,即状态字0x64XX-0x69XX,此行为是正常的,但对于0x63XX,该行为是什么?发送警告并仍然传递返回数据应该是可以的


因此,是否可以发送包含返回数据和除0x9000以外的状态字的响应APDU,以及如何执行此操作?

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

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


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

嘿,这很快;-)。。。解决了我的问题,尽管直觉告诉我不是这样,否则我会尝试这个显而易见的方法?两种方法的混合。显然,APDU在处理方法完成之前不会发送。从未想过这一点,但似乎是有道理的。