我正在使用通过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而不是多个证书。
任何人都可以帮助我吗?我不明白它如何与偏移量一起使用。
答案 0 :(得分:1)
虽然我不认识你的API(而且我认为responseString在某些方面太神奇了),但原则上它应该是这样的。
由于您将LE指定为0xFF,我建议
如果您的EF根本没有被写入,有些卡可能只返回90 00。