java 卡 2.2.1 中的 Setoutgoinglength 出现未知错误 (6c 15)

Unknown Error (6c 15) with Setoutgoinglength in java card 2.2.1

我为 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);}

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

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

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