diff options
| author | J08nY | 2018-11-06 16:12:09 +0100 |
|---|---|---|
| committer | J08nY | 2018-11-06 16:12:09 +0100 |
| commit | c676bacffd1305e1efc49b34d87ffd0a0a695ea7 (patch) | |
| tree | e3efe9f24d9be1064857ba9756de48134997a628 /src/cz/crcs/ectester/reader/response/Response.java | |
| parent | 99e46d99005784ac1b8815c85cfd56994f8f1feb (diff) | |
| download | ECTester-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.java | 45 |
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; + } + } } |
