gpt4 book ai didi

class - (Javacard) APDU命令类错误测试 'Select File'

转载 作者:行者123 更新时间:2023-12-04 01:37:28 24 4
gpt4 key购买 nike

那里

我不明白为什么没有出现“类不受支持”错误。

首先我的源码和APDU命令如下

<源

package SelectFileTest;
import javacard.framework.*;

public class SelectFileTest extends Applet{
public static void install(byte[] bArray, short bOffset, byte bLength) {
new SelectFileTest(bArray, bOffset, bLength);
}
private SelectFileTest(byte bArray[], short bOffset, byte bLength){
register();
}

public void process(APDU apdu){
byte buf[] = apdu.getBuffer();
if (buf[1]==(byte)0xA4) {
if((buf[0]&0xff)!=0x00) // Class Check (Question)
ISOException.throwIt((short)0xfff5);

if(selectingApplet())
{ }
else
ISOException.throwIt((short)0xffff); // 6881
}
return ;
}
}

[Card-1C] <== 00 A4 04 00 07 A0000000031234
[Card-1R] ==> 9000
[Card-2C] <== 00 A4 00 00 02 F801
[Card-2R] ==> FFFF // Expected
[Card-3C] <== 01 A4 00 00 02 F801
[Card-3R] ==> 6881 // (Question) Expect the SW 'FFF5'
[Card-4C] <== 08 A4 00 00 02 F801
[Card-4R] ==> FFF5 // Expected

通过命令 3 和 4,由于源代码中的“Class Check”行,卡必须输出 SW“FFF5”。但是,它在 CLA=01~07 时输出 6881(3R)(可能是 JCRE)。

我知道一旦选择了小程序,JCRE 就会将所有后续 APDU 命令转发到所选小程序。因此,我认为第三个响应(3R)也像 4R 一样是“FFF5”。我不明白,也找不到代码中的错误。

希望您提出宝贵意见。提前致谢。

最佳答案

在 CLA 字节中,逻辑 channel 在较低位中指示。您正在选择一个逻辑 channel ,平台然后尝试将其发送到正确的小程序。然而,除了基本 channel (ID = 0)之外,它不会找到任何开放 channel 。所以平台会代替Applet来处理错误。这发生在 Applet 收到 APDU 之前;小程序将不会收到通知。

请注意,INS: MANAGE CHANNEL 也可能发生这种情况。我可能不需要解释 SELECT by AID 最初也是由运行时环境处理的。

有关逻辑 channel 及其使用方式的更多信息可以在 ISO/IEC 7816-4 中找到。

关于class - (Javacard) APDU命令类错误测试 'Select File',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32024550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com