在Java卡2.2.1中使用Setoutgoinglength的未知错误(6c 15)

时间:2016-08-30 20:47:32

标签: javacard

我为java卡2.2.1编写了一个代码,我用JCIDE测试它。 我在方法Setoutgoinglength()

中得到错误
    public void getoutput(APDU apdu)
{
     byte [] buffer = apdu.getBuffer();
     byte hello[] = {'H','E','L','L','O',' ','W','O','R','L','D',' ', 'J','A','V','A',' ','C','A','R','D'};
    short le = apdu.setOutgoing();
    short totalBytes = (short) hello.length;   
    Util.arrayCopyNonAtomic(hello, (short)0, buffer, (short)0, (short)totalBytes);

    apdu.setOutgoingLength(totalBytes);
    apdu.sendBytes((short) 0, (short) hello.length);}

1 个答案:

答案 0 :(得分:0)

6CXX表示您的Le不等于正确的响应数据长度(XX等于正确响应数据的长度)。 6C15具体表示要使用的正确Le应为0x15

发生的事情是你的Le字段是0x00(卡实际上被十进制形式解释为256)但你使用了totalBytes,其值为0x15,作为apdu.setOutgoingLength()的参数,不等于256。

要发送的正确APDU是00 40 00 00 15