(Javacard)APDU命令的类错误测试'选择文件'

时间:2015-08-15 12:07:15

标签: class javacard apdu

我不明白为什么不支持Error' Class'不会发生。

首先,我的源代码和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 ;
    }
}

< APDU命令>

[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,卡必须输出SW&#39; FFF5&#39;因为源代码中的行检查&#39;但是,它在CLA = 01~07时输出6881(3R)(可能是JCRE)。

我知道一旦选择了applet,JCRE会将所有后续APDU命令转发到所选的applet。因此,我认为第3回应(3R)也是&#39; FFF5&#39;像4R。我无法理解,也无法在我的代码中发现错误。

我希望你的宝贵意见。提前谢谢。

1 个答案:

答案 0 :(得分:0)

实际上,一旦我遇到这个问题,因为我在我的代码中设置了类字节...因为我的类字节我的命令被中止并给我我不期望的...

在将字节发送到卡之前,需要解码类字节的含义。 ISO 7816 -3和-4将有助于精确解码您的类字节...

希望它有所帮助...