token: send Ne only on last in a chain

This commit is contained in:
Vincent Breitmoser
2018-03-24 14:14:30 +01:00
parent 52c8824969
commit 9a86d45bc1

View File

@@ -221,14 +221,18 @@ public class OpenPgpCommandApduFactory {
int offset = 0;
byte[] data = apdu.getData();
int ne = Math.min(apdu.getNe(), MAX_APDU_NE);
while (offset < data.length) {
int curLen = Math.min(MAX_APDU_NC, data.length - offset);
boolean last = offset + curLen >= data.length;
int cla = apdu.getCLA() + (last ? 0 : MASK_CLA_CHAINING);
CommandApdu cmd =
CommandApdu.create(cla, apdu.getINS(), apdu.getP1(), apdu.getP2(), data, offset, curLen, ne);
CommandApdu cmd;
if (last) {
int ne = Math.min(apdu.getNe(), MAX_APDU_NE);
cmd = CommandApdu.create(cla, apdu.getINS(), apdu.getP1(), apdu.getP2(), data, offset, curLen, ne);
} else {
cmd = CommandApdu.create(cla, apdu.getINS(), apdu.getP1(), apdu.getP2(), data, offset, curLen);
}
result.add(cmd);
offset += curLen;