APDU 案例 2 响应太短
APDU Case 2 Response too short
我正在使用 ACR39T-A3 智能卡 Reader 通过 USB 连接到 Android 设备。
首先,我将像这样发送一个 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,所以我需要发送多个。
但是作为响应,我只得到 90 00 而不是多个证书。
有人可以帮助我吗?我不明白它是如何与偏移量一起工作的。
虽然我不认识你的 API(在我看来 responseString 有点太神奇了),原则上它应该这样工作。
由于您将 LE 指定为 0xFF,因此我建议
- 改为将 LE 设置为零或
- 仅将偏移量增加 255。
如果您的 EF 还没有被写入,有些卡可能 return 只有 90 00。
我正在使用 ACR39T-A3 智能卡 Reader 通过 USB 连接到 Android 设备。
首先,我将像这样发送一个 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,所以我需要发送多个。 但是作为响应,我只得到 90 00 而不是多个证书。
有人可以帮助我吗?我不明白它是如何与偏移量一起工作的。
虽然我不认识你的 API(在我看来 responseString 有点太神奇了),原则上它应该这样工作。
由于您将 LE 指定为 0xFF,因此我建议
- 改为将 LE 设置为零或
- 仅将偏移量增加 255。
如果您的 EF 还没有被写入,有些卡可能 return 只有 90 00。