首页 文章

在javacard中选择applet时,是否可以返回一些数据以及状态字9000?

提问于
浏览
3

我想知道我是否可以在选择时从javacard applet发回一些数据 .

因为select()方法返回一个布尔值,我不知道如何从它返回数据字节 .

谁能帮我这个?当我将select命令发送到卡时,我希望applet返回一个简单的字节数组以及状态字9000(这是成功的默认值) .

即,当我发送以下命令

00A4040006010203040506

我想要一个像,

010203049000

(前四个字节是从applet返回的数据)TIA . 提前致谢..

2 回答

  • 0

    我猜你做“如果选择Applet()然后返回”的“良好实践”?您需要处理传入的APDU而不是简单的返回 .

    您可以返回数据以选择正常方式,但如果选择成功,请小心返回0x9000 .

  • 3

    是的,可以在applet选择期间返回数据 .

    _20053_方法通常在applet选择期间由平台调用 . 您可以在此方法中执行一些逻辑并返回 true (如果您希望选择小程序)或 false (如果不是) . 调用此方法后,如果成功选择了applet,则平台将调用 APDU.process 方法,您可以像applet中的任何其他APDU命令一样处理Select命令 .

    但是,如果需要响应数据,则命令APDU应指示Le字段 . 您可以将命令APDU更改为 00 A4 04 00 06 01 02 03 04 05 06 00 以返回所有可用的响应数据 .

    至于返回 9000 ,只需确保退出 APDU.process 方法而不抛出异常,或者你可以抛出 ISOException9000 值 . 我更喜欢前者 .

相关问题