aboutsummaryrefslogtreecommitdiff
path: root/src/cz/crcs/ectester/reader/response/Response.java
diff options
context:
space:
mode:
authorJ08nY2018-11-06 16:12:09 +0100
committerJ08nY2018-11-06 16:12:09 +0100
commitc676bacffd1305e1efc49b34d87ffd0a0a695ea7 (patch)
treee3efe9f24d9be1064857ba9756de48134997a628 /src/cz/crcs/ectester/reader/response/Response.java
parent99e46d99005784ac1b8815c85cfd56994f8f1feb (diff)
downloadECTester-c676bacffd1305e1efc49b34d87ffd0a0a695ea7.tar.gz
ECTester-c676bacffd1305e1efc49b34d87ffd0a0a695ea7.tar.zst
ECTester-c676bacffd1305e1efc49b34d87ffd0a0a695ea7.zip
Backport applet to JavaCard 2.2.1 to support more cards.
Diffstat (limited to 'src/cz/crcs/ectester/reader/response/Response.java')
-rw-r--r--src/cz/crcs/ectester/reader/response/Response.java45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/cz/crcs/ectester/reader/response/Response.java b/src/cz/crcs/ectester/reader/response/Response.java
index 4814e41..b0cd0f8 100644
--- a/src/cz/crcs/ectester/reader/response/Response.java
+++ b/src/cz/crcs/ectester/reader/response/Response.java
@@ -79,6 +79,10 @@ public abstract class Response {
return resp;
}
+ public byte[] getData() {
+ return resp.getData();
+ }
+
public long getDuration() {
return time;
}
@@ -424,4 +428,45 @@ public abstract class Response {
parse(1, 0);
}
}
+
+ /**
+ *
+ */
+ public static class GetInfo extends Response {
+ private short base;
+ private short jcVersion;
+ private short cleanupSupport;
+
+ public GetInfo(ResponseAPDU response, String description, long time) {
+ super(response, description, time);
+
+ parse(1, 1);
+ int offset = 2 + 2 + getParamLength(0);
+ byte[] data = getData();
+ base = ByteUtil.getShort(data, offset);
+ offset += 2;
+ jcVersion = ByteUtil.getShort(data, offset);
+ offset += 2;
+ cleanupSupport = ByteUtil.getShort(data, offset);
+ }
+
+ public String getVersion() {
+ return new String(getParam(0));
+ }
+
+ public short getBase() {
+ return base;
+ }
+
+ public float getJavaCardVersion() {
+ byte major = (byte) (jcVersion >> 8);
+ byte minor = (byte) (jcVersion & 0xff);
+ int minorSize = (int) Math.ceil(Math.log10(minor));
+ return (major + ((float) (minor) / (minorSize * 10)));
+ }
+
+ public boolean getCleanupSupport() {
+ return cleanupSupport == 1;
+ }
+ }
}