APDU案例2回应太短

时间:2017-03-29 11:01:49

标签: android smartcard smartcard-reader

我正在使用通过USB连接到Android设备的ACR39T-A3智能卡读卡器。

首先我发送这样的APDU Case 2命令。

                int offset = 0;
                List<byte[]> dataList = new ArrayList<>(8);

             while (true) {



                    if (!responseString.contains("90 00")) {
                        break;
                    }


                    dataList.add(progress[0].response);




    int offsetStartInt = 0x7F & (offset >> 8);
    int offsetEndInt =  offset & 0xFF ;

    //SmartcardOS
    //T1
    byte[] apdu = new byte[]{
            (byte) 0x00, //CLA
            (byte) 0xB0, //INS
            (byte) offsetStartInt, //P1
            (byte) offsetEndInt, //P2
            (byte) 0xff, //LE

    };

     transmitApdu(apdu);
     offset += 256;

     }

我试图从智能卡获得证书。 证书可以大于256,所以我需要发送多个。 但是作为Response我只需要90 00而不是多个证书。

任何人都可以帮助我吗?我不明白它如何与偏移量一起使用。

1 个答案:

答案 0 :(得分:1)

虽然我不认识你的API(而且我认为responseString在某些方面太神奇了),但原则上它应该是这样的。

由于您将LE指定为0xFF,我建议

  • 将LE设置为零或
  • 仅将偏移量增加255.

如果您的EF根本没有被写入,有些卡可能只返回90 00。