diff options
Diffstat (limited to 'src/cz/crcs/ectester/reader/CardMngr.java')
| -rw-r--r-- | src/cz/crcs/ectester/reader/CardMngr.java | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/cz/crcs/ectester/reader/CardMngr.java b/src/cz/crcs/ectester/reader/CardMngr.java index 5479f31..abbc440 100644 --- a/src/cz/crcs/ectester/reader/CardMngr.java +++ b/src/cz/crcs/ectester/reader/CardMngr.java @@ -23,7 +23,7 @@ public class CardMngr { private boolean simulate = false; private boolean verbose = true; - private boolean extendedLength = false; + private boolean chunking = false; private final byte[] selectCM = { (byte) 0x00, (byte) 0xa4, (byte) 0x04, (byte) 0x00, (byte) 0x07, (byte) 0xa0, (byte) 0x00, (byte) 0x00, @@ -59,6 +59,9 @@ public class CardMngr { if (verbose) System.out.println("T=1 failed, trying protocol '*'"); card = terminal.connect("*"); + if (card.getProtocol().equals("T=0")) { + chunking = true; + } } } @@ -176,6 +179,10 @@ public class CardMngr { } } + public void setChunking(boolean state) { + chunking = state; + } + // Functions for CPLC taken and modified from https://github.com/martinpaljak/GlobalPlatformPro private static final byte CLA_GP = (byte) 0x80; private static final byte ISO7816_INS_GET_DATA = (byte) 0xCA; @@ -330,7 +337,7 @@ public class CardMngr { } long elapsed; - if (card.getProtocol().equals("T=0") && apdu.getNc() >= 0xff) { + if (chunking && apdu.getNc() >= 0xff) { if (verbose) { System.out.print("Chunking:"); } @@ -407,7 +414,7 @@ public class CardMngr { } /* - if (apdu.getNc() >= 0xff) { + if (chunking && apdu.getNc() >= 0xff) { byte[] data = apdu.getBytes(); int numChunks = (data.length + 254) / 255; for (int i = 0; i < numChunks; ++i) { |
