我想知道我是否可以在选择时从javacard applet发回一些数据 .
因为select()方法返回一个布尔值,我不知道如何从它返回数据字节 .
谁能帮我这个?当我将select命令发送到卡时,我希望applet返回一个简单的字节数组以及状态字9000(这是成功的默认值) .
即,当我发送以下命令
00A4040006010203040506
我想要一个像,
010203049000
(前四个字节是从applet返回的数据)TIA . 提前致谢..
我猜你做“如果选择Applet()然后返回”的“良好实践”?您需要处理传入的APDU而不是简单的返回 .
您可以返回数据以选择正常方式,但如果选择成功,请小心返回0x9000 .
是的,可以在applet选择期间返回数据 .
_20053_方法通常在applet选择期间由平台调用 . 您可以在此方法中执行一些逻辑并返回 true (如果您希望选择小程序)或 false (如果不是) . 调用此方法后,如果成功选择了applet,则平台将调用 APDU.process 方法,您可以像applet中的任何其他APDU命令一样处理Select命令 .
true
false
APDU.process
但是,如果需要响应数据,则命令APDU应指示Le字段 . 您可以将命令APDU更改为 00 A4 04 00 06 01 02 03 04 05 06 00 以返回所有可用的响应数据 .
00 A4 04 00 06 01 02 03 04 05 06 00
至于返回 9000 ,只需确保退出 APDU.process 方法而不抛出异常,或者你可以抛出 ISOException 的 9000 值 . 我更喜欢前者 .
9000
ISOException
2 回答
我猜你做“如果选择Applet()然后返回”的“良好实践”?您需要处理传入的APDU而不是简单的返回 .
您可以返回数据以选择正常方式,但如果选择成功,请小心返回0x9000 .
是的,可以在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
方法而不抛出异常,或者你可以抛出ISOException
的9000
值 . 我更喜欢前者 .