Java Card API、RE或VM规范中是否有任何规范,说明卡必须如何对错误的in 7816-4 APDU作出反应(前提是这些格式错误的APDU被传递给卡片)?
对于APDU处理小程序是否有不同的要求?
如果我要发送一个(错误的)3字节长的工业间第一APDU到卡片/applet-谁应该检测/报告这个错误?
谁会发现/报告第一个包含坏LC长度字段的行业间APDU?
发布于 2013-10-01 21:10:00
不,没有通用规范来定义如何处理格式错误的APDU。
通常,您应该始终返回一个状态字,该状态词在有效的ISO 7816-3/4范围内。哪一个完全取决于背景。通常,您应该尝试在错误条件下始终抛出带有逻辑状态字的ISOException。您应该尽量不返回6F00状态字,如果Applet.process()方法退出时,除了ISOException之外,还会返回该状态字。在ISO7816接口中定义了最常见(并非所有)的ISO状态词。
不幸的是,ISO 7816-4只提供了一些提示,说明可能会出现哪些状态词.另一方面,除非错误非常具体(例如,不正确的PIN),否则如果终端在语法上不正确的APDU上接收状态字(不太可能修复不正确的APDU命令数据字段),它就不能做太多的事情。任何特定的状态词都应该由更高级的协议来定义。ISO 7816-4本身只能作为其他协议的(烂)基础.没有明确的规则来处理语法(错误的长度)或语义(错误的PIN)错误。
对于格式错误的APDU:3字节的APDU不会被Applet接收。可能会收到不正确的Lc字节的字节。但是,如果这将影响传输层,使传输层要么超时,因为它需要更多的数据,要么错误的字节被丢弃,这将是更合乎逻辑的。检查并返回一个错误的长度错误不会有什么害处,但是如果您决定继续,请使用APDU.getIncomingLength()或APDU.setIncomingAndReceive()值作为Ne的最终值。
https://stackoverflow.com/questions/19117625
复制相似问题