From 9a86d45bc160cfa1111d3198b58f53fa820e72e9 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Sat, 24 Mar 2018 14:14:30 +0100 Subject: [PATCH] token: send Ne only on last in a chain --- .../securitytoken/OpenPgpCommandApduFactory.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/OpenPgpCommandApduFactory.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/OpenPgpCommandApduFactory.java index f5070db70..b31748de1 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/OpenPgpCommandApduFactory.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/OpenPgpCommandApduFactory.java @@ -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;